diff --git a/jdk-1.7-parent/pom.xml b/jdk-1.7-parent/pom.xml index fa4d935e51..f1e55abe38 100644 --- a/jdk-1.7-parent/pom.xml +++ b/jdk-1.7-parent/pom.xml @@ -93,6 +93,7 @@ wicketstuff-glassfish4-integration serializer-fast2 + wicket-foundation diff --git a/jdk-1.7-parent/wicket-foundation/.gitignore b/jdk-1.7-parent/wicket-foundation/.gitignore new file mode 100644 index 0000000000..841e8d948a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/.gitignore @@ -0,0 +1,8 @@ +# Eclipse +.classpath +.project +.settings/ + +# Maven +log/ +target/ diff --git a/jdk-1.7-parent/wicket-foundation/.travis.yml b/jdk-1.7-parent/wicket-foundation/.travis.yml new file mode 100644 index 0000000000..aa5e8b7c1b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/.travis.yml @@ -0,0 +1,3 @@ +language: java +after_success: + - mvn clean cobertura:cobertura coveralls:cobertura diff --git a/jdk-1.7-parent/wicket-foundation/LICENSE.md b/jdk-1.7-parent/wicket-foundation/LICENSE.md new file mode 100644 index 0000000000..5c304d1a4a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/LICENSE.md @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/jdk-1.7-parent/wicket-foundation/README.md b/jdk-1.7-parent/wicket-foundation/README.md new file mode 100644 index 0000000000..48ec9edf48 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/README.md @@ -0,0 +1,24 @@ +#wicket-foundation + +Integrates [Apache Wicket](http://wicket.apache.org/) 7.x and [Zurb Foundation](http://foundation.zurb.com/) 5.x + +
+ +## Build instructions + +``` +mvn clean install +cd wicket-foundation-samples +mvn jetty:run +``` +Now open browser and navigate to http://localhost:8080 to see the sample application. + +
+ +## License + +Wicket-foundation is distributed under the terms of the Apache Software Foundation +license, version 2.0. The text is included in the file LICENSE.md in the root +of the project. + +
diff --git a/jdk-1.7-parent/wicket-foundation/pom.xml b/jdk-1.7-parent/wicket-foundation/pom.xml new file mode 100644 index 0000000000..4b7130c467 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + + org.wicketstuff + jdk-1.7-parent + 7.0-SNAPSHOT + + + org.wicketstuff.foundation + wicket-foundation-parent + pom + Wicket Foundation Parent + Integration for Apache Wicket and Zurb Foundation. + https://github.com/iluwatar/wicket-foundation + + + + The Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + + Ilkka Seppälä + https://github.com/iluwatar + + + + + wicket-foundation-samples + wicket-foundation-core + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/pom.xml b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/pom.xml new file mode 100644 index 0000000000..1dc61dedd1 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + + org.wicketstuff.foundation + wicket-foundation-parent + 7.0-SNAPSHOT + + + wicket-foundation-core + + + + org.apache.wicket + wicket-core + + + junit + junit + + + org.slf4j + slf4j-log4j12 + test + + + log4j + log4j + test + + + javax.servlet + servlet-api + 2.5 + test + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/Foundation.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/Foundation.java new file mode 100644 index 0000000000..0838823a2a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/Foundation.java @@ -0,0 +1,72 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.request.resource.CssResourceReference; +import org.apache.wicket.request.resource.JavaScriptResourceReference; +import org.apache.wicket.request.resource.ResourceReference; + +/** + * Foundation resources container. It is typically used by component base classes. + * The resources are available through static getters. + * @author ilkka + * + */ +public class Foundation { + + private static ResourceReference foundationCssReference; + + private static ResourceReference foundationIconsCssReference; + + private static ResourceReference normalizeCssReference; + + private static ResourceReference foundationJsReference; + + private static ResourceReference modernizrJsReference; + + private static ResourceReference fastclickJsReference; + + public static ResourceReference getFoundationCssReference() { + if (foundationCssReference == null) { + foundationCssReference = new CssResourceReference(Foundation.class, "foundation.css"); + } + return foundationCssReference; + } + + public static ResourceReference getFoundationIconsCssReference() { + if (foundationIconsCssReference == null) { + foundationIconsCssReference = new CssResourceReference(Foundation.class, "foundation-icons.css"); + } + return foundationIconsCssReference; + } + + public static ResourceReference getNormalizeCssReference() { + if (normalizeCssReference == null) { + normalizeCssReference = new CssResourceReference(Foundation.class, "normalize.css"); + } + return normalizeCssReference; + } + + public static ResourceReference getFoundationJsReference() { + if (foundationJsReference == null) { + foundationJsReference = new JavaScriptResourceReference(Foundation.class, "foundation.min.js"); + } + return foundationJsReference; + } + + public static ResourceReference getModernizrJsReference() { + if (modernizrJsReference == null) { + modernizrJsReference = new JavaScriptResourceReference(Foundation.class, "modernizr.js"); + } + return modernizrJsReference; + } + + public static ResourceReference getFastclickJsReference() { + if (fastclickJsReference == null) { + fastclickJsReference = new JavaScriptResourceReference(Foundation.class, "fastclick.js"); + } + return fastclickJsReference; + } + + public static String getFoundationInitScript() { + return "$(document).foundation();"; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/AlertColor.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/AlertColor.java new file mode 100644 index 0000000000..ef004375d7 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/AlertColor.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.alert; + +public enum AlertColor { + SECONDARY, SUCCESS, ALERT, WARNING, INFO; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/AlertOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/AlertOptions.java new file mode 100644 index 0000000000..a60d1aac6f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/AlertOptions.java @@ -0,0 +1,57 @@ +package org.wicketstuff.foundation.alert; + +import java.io.Serializable; + +import org.wicketstuff.foundation.button.ButtonRadius; + +/** + * Options for FoundationAlert. + * @author ilkka + * + */ +public class AlertOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private AlertColor color; + private ButtonRadius radius; + + public AlertOptions() { + } + + public AlertOptions(AlertColor color) { + this.color = color; + } + + public AlertOptions(ButtonRadius radius) { + this.radius = radius; + } + + public AlertOptions(AlertColor color, ButtonRadius radius) { + this.color = color; + this.radius = radius; + } + + public AlertOptions(AlertOptions other) { + this.color = other.color; + this.radius = other.radius; + } + + public AlertColor getColor() { + return color; + } + + public AlertOptions setColor(AlertColor color) { + this.color = color; + return this; + } + + public ButtonRadius getRadius() { + return radius; + } + + public AlertOptions setRadius(ButtonRadius radius) { + this.radius = radius; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/FoundationAlert.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/FoundationAlert.html new file mode 100644 index 0000000000..fa2c7c7c33 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/FoundationAlert.html @@ -0,0 +1,13 @@ + + + + +wicket-foundation + + + + + × + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/FoundationAlert.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/FoundationAlert.java new file mode 100644 index 0000000000..4b25203a2e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/alert/FoundationAlert.java @@ -0,0 +1,73 @@ +package org.wicketstuff.foundation.alert; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.component.FoundationJsPanel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Alert boxes are elements you can use to communicate success, warnings, failure or just information. + * http://foundation.zurb.com/docs/components/alert_boxes.html + * @author ilkka + * + */ +public class FoundationAlert extends FoundationJsPanel { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + /** + * Create FoundationAlert component. + * @param id - Wicket id. + * @param titleModel - Model for getting the alert text. + */ + public FoundationAlert(String id, IModel titleModel) { + this(id, titleModel, new AlertOptions()); + } + + /** + * Create FoundationAlert component. + * @param id - Wicket id. + * @param titleModel - Model for getting the alert text. + * @param options - Options for the component. + */ + public FoundationAlert(String id, IModel titleModel, AlertOptions options) { + this(id, titleModel, Model.of(options)); + } + + /** + * Create FoundationAlert component. + * @param id - Wicket id. + * @param titleModel - Model for getting the alert text. + * @param optionsModel - Model for getting the component options. + */ + public FoundationAlert(String id, IModel titleModel, IModel optionsModel) { + super(id); + add(new Label("body", titleModel)); + this.optionsModel = optionsModel; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addAttribute(tag, "data-alert"); + Attribute.setClass(tag, "alert-box"); + AlertOptions options = optionsModel.getObject(); + if (options.getColor() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getColor().name())); + } + if (options.getRadius() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getRadius().name())); + } + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + optionsModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/behavior/FoundationBaseBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/behavior/FoundationBaseBehavior.java new file mode 100644 index 0000000000..c3043d2e53 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/behavior/FoundationBaseBehavior.java @@ -0,0 +1,23 @@ +package org.wicketstuff.foundation.behavior; + +import org.apache.wicket.Component; +import org.apache.wicket.behavior.Behavior; +import org.apache.wicket.markup.head.CssHeaderItem; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.wicketstuff.foundation.Foundation; + +/** + * Behavior that includes Foundation CSS. + * @author ilkka + * + */ +public abstract class FoundationBaseBehavior extends Behavior { + + private static final long serialVersionUID = 1L; + + @Override + public void renderHead(Component component, IHeaderResponse response) { + super.renderHead(component, response); + response.render(CssHeaderItem.forReference(Foundation.getFoundationCssReference())); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/behavior/FoundationJsBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/behavior/FoundationJsBehavior.java new file mode 100644 index 0000000000..2aa5896218 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/behavior/FoundationJsBehavior.java @@ -0,0 +1,28 @@ +package org.wicketstuff.foundation.behavior; + +import org.apache.wicket.Application; +import org.apache.wicket.Component; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.head.JavaScriptHeaderItem; +import org.apache.wicket.markup.head.OnDomReadyHeaderItem; +import org.wicketstuff.foundation.Foundation; + +/** + * Behavior that includes Foundation CSS and JS libraries. + * @author ilkka + * + */ +public class FoundationJsBehavior extends FoundationBaseBehavior { + + private static final long serialVersionUID = 1L; + + @Override + public void renderHead(Component component, IHeaderResponse response) { + super.renderHead(component, response); + response.render(JavaScriptHeaderItem.forReference(Foundation.getModernizrJsReference())); + response.render(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())); + response.render(JavaScriptHeaderItem.forReference(Foundation.getFastclickJsReference())); + response.render(JavaScriptHeaderItem.forReference(Foundation.getFoundationJsReference())); + response.render(OnDomReadyHeaderItem.forScript(Foundation.getFoundationInitScript())); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/BlockGridOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/BlockGridOptions.java new file mode 100644 index 0000000000..4b5d61a0c2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/BlockGridOptions.java @@ -0,0 +1,42 @@ +package org.wicketstuff.foundation.blockgrid; + +import java.io.Serializable; + +/** + * Options for FoundationBlockGrid. + * @author ilkka + * + */ +public class BlockGridOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private BlockGridType type; + private int columnCount; + + public BlockGridOptions(BlockGridType type, int columnCount) { + this.type = type; + this.columnCount = columnCount; + } + + public BlockGridOptions(BlockGridOptions other) { + this.type = other.type; + this.columnCount = other.columnCount; + } + + public BlockGridType getType() { + return type; + } + + public void setType(BlockGridType type) { + this.type = type; + } + + public int getColumnCount() { + return columnCount; + } + + public void setColumnCount(int columnCount) { + this.columnCount = columnCount; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/BlockGridType.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/BlockGridType.java new file mode 100644 index 0000000000..2e3adb204f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/BlockGridType.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.blockgrid; + +public enum BlockGridType { + SMALL_BLOCK_GRID, MEDIUM_BLOCK_GRID, LARGE_BLOCK_GRID; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGrid.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGrid.html new file mode 100644 index 0000000000..d015f0e126 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGrid.html @@ -0,0 +1,14 @@ + + + + +wicket-foundation + + + +
    +
  • +
+
+ + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGrid.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGrid.java new file mode 100644 index 0000000000..f64bb5da50 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGrid.java @@ -0,0 +1,108 @@ +package org.wicketstuff.foundation.blockgrid; + +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Block grids give you a way to evenly split contents of a list within the grid. + * http://foundation.zurb.com/docs/components/block_grid.html + * @author ilkka + * @param - The type of model object. + */ +public abstract class FoundationBlockGrid extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationBlockGrid component. + * @param id - Wicket id. + * @param options - Options for the component. + * @param modelObjects - The model objects passed to client through createContent models parameter. + */ + public FoundationBlockGrid(String id, BlockGridOptions options, List modelObjects) { + this(id, new ListModel(Arrays.asList(options)), new ListModel(modelObjects)); + } + + /** + * Create FoundationBlockGrid component. + * @param id - Wicket id. + * @param optionsList - List of component options. + * @param modelObjects - The model objects passed to client through createContent models parameter. + */ + public FoundationBlockGrid(String id, List optionsList, List modelObjects) { + this(id, new ListModel(optionsList), new ListModel(modelObjects)); + } + + /** + * Create FoundationBlockGrid component. + * @param id - Wicket id. + * @param optionsListModel - Model providing list of options for the component. + * @param models - The models passed to client through createContent models parameter. + */ + public FoundationBlockGrid(String id, IModel> optionsListModel, IModel> models) { + super(id); + BlockGridContainer container = new BlockGridContainer("container", optionsListModel); + add(container); + container.add(new ListView("item", models) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + WebMarkupContainer content = FoundationBlockGrid.this.createContent(item.getIndex(), "content", item.getModel()); + item.add(content); + } + }); + } + + /** + * + * @param idx - Index number of the content item. + * @param id - Wicket id for the content item. + * @param model - Model for the content item. + * @return Content item to be placed into the FoundationBlockGrid. + */ + public abstract WebMarkupContainer createContent(int idx, String id, IModel model); + + private class BlockGridContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private IModel> optionsListModel; + + public BlockGridContainer(String id, IModel> optionsListModel) { + super(id); + this.optionsListModel = optionsListModel; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + for (BlockGridOptions options: optionsListModel.getObject()) { + String cssClass = resolveCssClass(options); + Attribute.addClass(tag, cssClass); + } + super.onComponentTag(tag); + } + + private String resolveCssClass(BlockGridOptions options) { + String typeName = StringUtil.EnumNameToCssClassName(options.getType().name()); + return String.format("%s-%d", typeName, options.getColumnCount()); + } + + @Override + protected void onDetach() { + optionsListModel.detach(); + super.onDetach(); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGridImageContent.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGridImageContent.html new file mode 100644 index 0000000000..75c8e9ae0f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGridImageContent.html @@ -0,0 +1,12 @@ + + + + +wicket-foundation + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGridImageContent.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGridImageContent.java new file mode 100644 index 0000000000..8a8f6f7e31 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGridImageContent.java @@ -0,0 +1,25 @@ +package org.wicketstuff.foundation.blockgrid; + +import org.apache.wicket.markup.html.image.Image; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.request.resource.PackageResourceReference; + +/** + * Image content item for the FoundationBlockGrid component. + * @author ilkka + * + */ +public class FoundationBlockGridImageContent extends Panel { + + private static final long serialVersionUID = 1L; + + /** + * + * @param id - Wicket id. + * @param resourceReference - Resource reference for the image. + */ + public FoundationBlockGridImageContent(String id, PackageResourceReference resourceReference) { + super(id); + add(new Image("img", resourceReference)); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/border/FoundationBaseBorder.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/border/FoundationBaseBorder.java new file mode 100644 index 0000000000..dbc30c7479 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/border/FoundationBaseBorder.java @@ -0,0 +1,40 @@ +package org.wicketstuff.foundation.border; + +import org.apache.wicket.markup.head.CssHeaderItem; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.html.border.Border; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.Foundation; + +/** + * Base class for Borders that includes Foundation CSS. + * @author ilkka + * + */ +public abstract class FoundationBaseBorder extends Border { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationBaseBorder. + * @param id - Wicket id. + */ + public FoundationBaseBorder(String id) { + super(id); + } + + /** + * Create FoundationBaseBorder. + * @param id - Wicket id. + * @param model - Model for the component. + */ + public FoundationBaseBorder(String id, IModel model) { + super(id, model); + } + + @Override + public void renderHead(IHeaderResponse response) { + super.renderHead(response); + response.render(CssHeaderItem.forReference(Foundation.getFoundationCssReference())); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/breadcrumbs/BreadcrumbsItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/breadcrumbs/BreadcrumbsItem.java new file mode 100644 index 0000000000..e196b25b44 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/breadcrumbs/BreadcrumbsItem.java @@ -0,0 +1,54 @@ +package org.wicketstuff.foundation.breadcrumbs; + +import java.io.Serializable; + +/** + * Item for FoundationBreadcrumbs component. + * @author ilkka + * + */ +public class BreadcrumbsItem implements Serializable { + + private static final long serialVersionUID = 1L; + + private String title; + private boolean disabled; + private boolean current; + + public BreadcrumbsItem(String title) { + this.title = title; + } + + public BreadcrumbsItem(String title, boolean disabled, boolean current) { + this.title = title; + this.disabled = disabled; + this.current = current; + } + + public String getTitle() { + return title; + } + + public BreadcrumbsItem setTitle(String title) { + this.title = title; + return this; + } + + public boolean isDisabled() { + return disabled; + } + + public BreadcrumbsItem setDisabled(boolean disabled) { + this.disabled = disabled; + return this; + } + + public boolean isCurrent() { + return current; + } + + public BreadcrumbsItem setCurrent(boolean current) { + this.current = current; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/breadcrumbs/FoundationBreadcrumbs.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/breadcrumbs/FoundationBreadcrumbs.html new file mode 100644 index 0000000000..2d128d0e6b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/breadcrumbs/FoundationBreadcrumbs.html @@ -0,0 +1,14 @@ + + + + +wicket-foundation + + + +
    +
  • +
+
+ + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/breadcrumbs/FoundationBreadcrumbs.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/breadcrumbs/FoundationBreadcrumbs.java new file mode 100644 index 0000000000..97bb81c37c --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/breadcrumbs/FoundationBreadcrumbs.java @@ -0,0 +1,87 @@ +package org.wicketstuff.foundation.breadcrumbs; + +import java.util.List; + +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; + +/** + * Breadcrumbs come in handy to show a navigation trail for users clicking through a site or app. + * http://foundation.zurb.com/docs/components/breadcrumbs.html + * @author ilkka + * + */ +public abstract class FoundationBreadcrumbs extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationBreadcrumbs. + * @param id - Wicket id. + * @param items - List of breadcrumbs items. + */ + public FoundationBreadcrumbs(String id, List items) { + this(id, new ListModel<>(items)); + } + + /** + * Create FoundationBreadcrumbs. + * @param id - Wicket id. + * @param itemsModel - Model providing the list of breadcrumbs items. + */ + public FoundationBreadcrumbs(String id, IModel> itemsModel) { + super(id); + BreadcrumbsContainer breadcrumbsContainer = new BreadcrumbsContainer("breadcrumbsContainer"); + add(breadcrumbsContainer); + breadcrumbsContainer.add(new ListView("breadcrumbsItem", itemsModel) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + BreadcrumbsItem breadcrumbsItem = item.getModelObject(); + if (breadcrumbsItem.isCurrent()) { + item.add(new AttributeAppender("class", "current")); + } + if (breadcrumbsItem.isDisabled()) { + item.add(new AttributeAppender("class", "unavailable")); + } + AbstractLink link = createLink("breadcrumbsItemLink", item.getIndex()); + item.add(link); + link.add(new Label("breadcrumbsItemTitle", breadcrumbsItem.getTitle())); + } + }); + } + + /** + * Create link for FoundationBreadcrumbs. + * @param id - Wicket id. + * @param idx - Index number of the item. + * @return AbstractLink + */ + public abstract AbstractLink createLink(String id, int idx); + + private static class BreadcrumbsContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public BreadcrumbsContainer(String id) { + super(id); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.setClass(tag, "breadcrumbs"); + super.onComponentTag(tag); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonColor.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonColor.java new file mode 100644 index 0000000000..064ddcd92f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonColor.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.button; + +public enum ButtonColor { + SECONDARY, SUCCESS, ALERT; +} \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonExpansion.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonExpansion.java new file mode 100644 index 0000000000..372b044305 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonExpansion.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.button; + +public enum ButtonExpansion { + EXPAND; +} \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonOptions.java new file mode 100644 index 0000000000..530022a90e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonOptions.java @@ -0,0 +1,104 @@ +package org.wicketstuff.foundation.button; + +import java.io.Serializable; + +/** + * Options for different types of Foundation buttons. + * @author ilkka + * + */ +public class ButtonOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private ButtonSize size; + private ButtonColor color; + private ButtonRadius radius; + private ButtonState state; + private ButtonExpansion expansion; + + public ButtonOptions() { + } + + public ButtonOptions(ButtonSize size) { + this.size = size; + } + + public ButtonOptions(ButtonColor color) { + this.color = color; + } + + public ButtonOptions(ButtonRadius radius) { + this.radius = radius; + } + + public ButtonOptions(ButtonState state) { + this.state = state; + } + + public ButtonOptions(ButtonExpansion expansion) { + this.expansion = expansion; + } + + public ButtonOptions(ButtonOptions options) { + this.size = options.getFoundationButtonSize(); + this.color = options.getFoundationButtonColor(); + this.radius = options.getFoundationButtonRadius(); + this.state = options.getFoundationButtonState(); + this.expansion = options.getFoundationButtonExpansion(); + } + + public ButtonSize getFoundationButtonSize() { + return size; + } + + public ButtonOptions setFoundationButtonSize(ButtonSize foundationButtonSize) { + this.size = foundationButtonSize; + return this; + } + + public ButtonColor getFoundationButtonColor() { + return color; + } + + public ButtonOptions setFoundationButtonColor(ButtonColor foundationButtonColor) { + this.color = foundationButtonColor; + return this; + } + + public ButtonRadius getFoundationButtonRadius() { + return radius; + } + + public ButtonOptions setFoundationButtonRadius(ButtonRadius foundationButtonRadius) { + this.radius = foundationButtonRadius; + return this; + } + + public ButtonState getFoundationButtonState() { + return state; + } + + public ButtonOptions setFoundationButtonState(ButtonState foundationButtonState) { + this.state = foundationButtonState; + return this; + } + + public ButtonExpansion getFoundationButtonExpansion() { + return expansion; + } + + public ButtonOptions setFoundationButtonExpansion(ButtonExpansion foundationButtonExpansion) { + this.expansion = foundationButtonExpansion; + return this; + } + + public ButtonOptions reset() { + size = null; + color = null; + radius = null; + state = null; + expansion = null; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonRadius.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonRadius.java new file mode 100644 index 0000000000..f8860e38ac --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonRadius.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.button; + +public enum ButtonRadius { + RADIUS, ROUND; +} \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonSize.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonSize.java new file mode 100644 index 0000000000..e25c0293c1 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonSize.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.button; + +public enum ButtonSize { + TINY, SMALL, MEDIUM, LARGE; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonState.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonState.java new file mode 100644 index 0000000000..5d6e8b1148 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/ButtonState.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.button; + +public enum ButtonState { + DISABLED; +} \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationAjaxButton.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationAjaxButton.java new file mode 100644 index 0000000000..4633e93b73 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationAjaxButton.java @@ -0,0 +1,102 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.ajax.markup.html.form.AjaxButton; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; + +/** + * Buttons are convenient tools when you need more traditional actions. To that end, Foundation has many + * easy to use button styles that you can customize or override to fit your needs. + * http://foundation.zurb.com/docs/components/buttons.html + * @author ilkka + * + */ +public class FoundationAjaxButton extends AjaxButton { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + /** + * Create FoundationAjaxButton. + * @param id Wicket id. + */ + public FoundationAjaxButton(String id) { + this(id, new ButtonOptions()); + } + + /** + * Create FoundationAjaxButton. + * @param id Wicket id. + * @param options Options for the button. + */ + public FoundationAjaxButton(String id, ButtonOptions options) { + super(id); + optionsModel = Model.of(options); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationAjaxButton. + * @param id Wicket id. + * @param form The form to be submitted. + * @param options Options for the button. + */ + public FoundationAjaxButton(String id, Form form, ButtonOptions options) { + super(id, form); + optionsModel = Model.of(options); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationAjaxButton. + * @param id Wicket id. + * @param model Model for button title. + * @param options Options for the button. + */ + public FoundationAjaxButton(String id, IModel model, ButtonOptions options) { + super(id, model); + optionsModel = Model.of(options); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationAjaxButton. + * @param id Wicket id. + * @param model Model for button title. + * @param form The form to be submitted. + * @param options Options for the button. + */ + public FoundationAjaxButton(String id, IModel model, Form form, ButtonOptions options) { + this(id, model, form, Model.of(options)); + } + + /** + * Create FoundationAjaxButton. + * @param id Wicket id. + * @param model Model for button title. + * @param form The form to be submitted. + * @param optionsModel Model providing options for the button. + */ + public FoundationAjaxButton(String id, IModel model, Form form, IModel optionsModel) { + super(id, model, form); + this.optionsModel = optionsModel; + add(new FoundationButtonBehavior(optionsModel)); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, this.getDefaultModelObjectAsString()); + super.onComponentTagBody(markupStream, openTag); + } + + @Override + protected void onDetach() { + this.optionsModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationAjaxLink.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationAjaxLink.java new file mode 100644 index 0000000000..8cd8ca21cb --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationAjaxLink.java @@ -0,0 +1,88 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.lang.Args; + +/** + * Buttons are convenient tools when you need more traditional actions. To that end, Foundation has many + * easy to use button styles that you can customize or override to fit your needs. + * http://foundation.zurb.com/docs/components/buttons.html + * @author ilkka + * + * @param The type of the model object. + */ +public abstract class FoundationAjaxLink extends AjaxLink { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + /** + * Create FoundationAjaxLink. + * @param id Wicket id. + */ + public FoundationAjaxLink(String id) { + this(id, new ButtonOptions()); + } + + /** + * Create FoundationAjaxLink. + * @param id Wicket id. + * @param options Options for the link. + */ + public FoundationAjaxLink(String id, ButtonOptions options) { + super(id); + Args.notNull(options, "options"); + optionsModel = Model.of(options); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationAjaxLink. + * @param id Wicket id. + * @param model Model for the link. + */ + public FoundationAjaxLink(String id, IModel model) { + this(id, model, new ButtonOptions()); + } + + /** + * Create FoundationAjaxLink. + * @param id Wicket id. + * @param model Model for the link. + * @param options Options for the link. + */ + public FoundationAjaxLink(String id, IModel model, ButtonOptions options) { + this(id, model, Model.of(options)); + } + + /** + * Create FoundationAjaxLink. + * @param id Wicket id. + * @param model Model for the link. + * @param optionsModel Model providing options for the link. + */ + public FoundationAjaxLink(String id, IModel model, IModel optionsModel) { + super(id, model); + Args.notNull(optionsModel, "optionsModel"); + this.optionsModel = optionsModel; + add(new FoundationButtonBehavior(this.optionsModel)); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, this.getDefaultModelObjectAsString()); + super.onComponentTagBody(markupStream, openTag); + } + + @Override + protected void onDetach() { + this.optionsModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationAjaxSubmitLink.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationAjaxSubmitLink.java new file mode 100644 index 0000000000..0ceeff6dd5 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationAjaxSubmitLink.java @@ -0,0 +1,88 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.lang.Args; + +/** + * Buttons are convenient tools when you need more traditional actions. To that end, Foundation has many + * easy to use button styles that you can customize or override to fit your needs. + * http://foundation.zurb.com/docs/components/buttons.html + * @author ilkka + * + */ +public class FoundationAjaxSubmitLink extends AjaxSubmitLink { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + /** + * Create FoundationAjaxSubmitLink. + * @param id - Wicket id. + */ + public FoundationAjaxSubmitLink(String id) { + this(id, new ButtonOptions()); + } + + /** + * Create FoundationAjaxSubmitLink. + * @param id - Wicket id. + * @param options - Options for the link. + */ + public FoundationAjaxSubmitLink(String id, ButtonOptions options) { + this(id, Model.of(options)); + } + + /** + * Create FoundationAjaxSubmitLink. + * @param id - Wicket id. + * @param optionsModel - Model providing options for the link. + */ + public FoundationAjaxSubmitLink(String id, IModel optionsModel) { + super(id); + Args.notNull(optionsModel, "optionsModel"); + this.optionsModel = optionsModel; + add(new FoundationButtonBehavior(this.optionsModel)); + } + + /** + * Create FoundationAjaxSubmitLink. + * @param id - Wicket id. + * @param form - Form to be submitted by the link. + * @param options - Options for the link. + */ + public FoundationAjaxSubmitLink(String id, Form form, ButtonOptions options) { + this(id, form, Model.of(options)); + } + + /** + * Create FoundationAjaxSubmitLink. + * @param id - Wicket id. + * @param form - Form to be submitted by the link. + * @param optionsModel - Model providing options for the link. + */ + public FoundationAjaxSubmitLink(String id, Form form, IModel optionsModel) { + super(id, form); + Args.notNull(optionsModel, "optionsModel"); + this.optionsModel = optionsModel; + add(new FoundationButtonBehavior(this.optionsModel)); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, this.getDefaultModelObjectAsString()); + super.onComponentTagBody(markupStream, openTag); + } + + @Override + protected void onDetach() { + this.optionsModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationBookmarkablePageLink.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationBookmarkablePageLink.java new file mode 100644 index 0000000000..41837419d5 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationBookmarkablePageLink.java @@ -0,0 +1,97 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.Page; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.link.BookmarkablePageLink; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.lang.Args; + +/** + * Buttons are convenient tools when you need more traditional actions. To that end, Foundation has many + * easy to use button styles that you can customize or override to fit your needs. + * http://foundation.zurb.com/docs/components/buttons.html + * @author ilkka + * + * @param The type of the model object. + */ +public class FoundationBookmarkablePageLink extends BookmarkablePageLink { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + /** + * Create FoundationBookmarkablePageLink. + * @param id - Wicket id. + * @param pageClass - Target page's class. + */ + public FoundationBookmarkablePageLink(String id, Class pageClass) { + this(id, pageClass, new ButtonOptions()); + } + + /** + * Create FoundationBookmarkablePageLink. + * @param id - Wicket id. + * @param pageClass - Target page's class. + * @param options - Options for the link. + */ + public FoundationBookmarkablePageLink(String id, Class pageClass, ButtonOptions options) { + this(id, pageClass, Model.of(options)); + } + + /** + * Create FoundationBookmarkablePageLink. + * @param id - Wicket id. + * @param pageClass - Target page's class. + * @param optionsModel - Model providing options for the link. + */ + public FoundationBookmarkablePageLink(String id, Class pageClass, IModel optionsModel) { + super(id, pageClass); + Args.notNull(optionsModel, "optionsModel"); + this.optionsModel = optionsModel; + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationBookmarkablePageLink. + * @param id - Wicket id. + * @param pageClass - Target page's class. + * @param parameters - Parameters for the target page. + * @param options - Options for the link. + */ + public FoundationBookmarkablePageLink(String id, Class pageClass, + PageParameters parameters, ButtonOptions options) { + this(id, pageClass, parameters, Model.of(options)); + } + + /** + * Create FoundationBookmarkablePageLink. + * @param id - Wicket id. + * @param pageClass - Target page's class. + * @param parameters - Parameters for the target page. + * @param optionsModel - Model providing options for the link. + */ + public FoundationBookmarkablePageLink(String id, Class pageClass, + PageParameters parameters, IModel optionsModel) { + super(id, pageClass, parameters); + Args.notNull(optionsModel, "optionsModel"); + this.optionsModel = optionsModel; + add(new FoundationButtonBehavior(optionsModel)); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, this.getDefaultModelObjectAsString()); + super.onComponentTagBody(markupStream, openTag); + } + + @Override + protected void onDetach() { + this.optionsModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationButton.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationButton.java new file mode 100644 index 0000000000..cc16209491 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationButton.java @@ -0,0 +1,89 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.form.Button; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.lang.Args; + +/** + * Buttons are convenient tools when you need more traditional actions. To that end, Foundation has many + * easy to use button styles that you can customize or override to fit your needs. + * http://foundation.zurb.com/docs/components/buttons.html + * @author ilkka + * + */ +public class FoundationButton extends Button { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + /** + * Create FoundationButton. + * @param id - Wicket id. + */ + public FoundationButton(String id) { + this(id, new ButtonOptions()); + } + + /** + * Create FoundationButton. + * @param id - Wicket id. + * @param options - Options for the button. + */ + public FoundationButton(String id, ButtonOptions options) { + super(id); + Args.notNull(options, "options"); + optionsModel = Model.of(options); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationButton. + * @param id - Wicket id. + * @param model - Model for the title. + */ + public FoundationButton(String id, IModel model) { + super(id, model); + optionsModel = Model.of(new ButtonOptions()); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationButton. + * @param id - Wicket id. + * @param model - Model for the title. + * @param options - Options for the button. + */ + public FoundationButton(String id, IModel model, ButtonOptions options) { + this(id, model, Model.of(options)); + } + + /** + * Create FoundationButton. + * @param id - Wicket id. + * @param model - Model for the title. + * @param optionsModel - Model for the button options. + */ + public FoundationButton(String id, IModel model, IModel optionsModel) { + super(id, model); + Args.notNull(optionsModel, "optionsModel"); + this.optionsModel = optionsModel; + add(new FoundationButtonBehavior(optionsModel)); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, this.getDefaultModelObjectAsString()); + super.onComponentTagBody(markupStream, openTag); + } + + @Override + protected void onDetach() { + this.optionsModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationButtonBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationButtonBehavior.java new file mode 100644 index 0000000000..7de0aed41a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationButtonBehavior.java @@ -0,0 +1,58 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.behavior.FoundationBaseBehavior; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Behavior providing correct CSS class names based on supplied ButtonOptions. + * @author ilkka + * + */ +public class FoundationButtonBehavior extends FoundationBaseBehavior { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + public FoundationButtonBehavior(IModel optionsModel) { + this.optionsModel = optionsModel; + } + + @Override + public void onComponentTag(Component component, ComponentTag tag) { + + Attribute.setClass(tag, "button"); + ButtonOptions options = optionsModel.getObject(); + if (options.getFoundationButtonSize() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options + .getFoundationButtonSize().name())); + } + if (options.getFoundationButtonColor() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options + .getFoundationButtonColor().name())); + } + if (options.getFoundationButtonRadius() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options + .getFoundationButtonRadius().name())); + } + if (options.getFoundationButtonState() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options + .getFoundationButtonState().name())); + } + if (options.getFoundationButtonExpansion() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options + .getFoundationButtonExpansion().name())); + } + super.onComponentTag(component, tag); + } + + @Override + public void detach(Component component) { + optionsModel.detach(); + super.detach(component); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationLink.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationLink.java new file mode 100644 index 0000000000..a38e646ec7 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationLink.java @@ -0,0 +1,88 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.lang.Args; + +/** + * Buttons are convenient tools when you need more traditional actions. To that end, Foundation has many + * easy to use button styles that you can customize or override to fit your needs. + * http://foundation.zurb.com/docs/components/buttons.html + * @author ilkka + * + * @param The type of the model object. + */ +public abstract class FoundationLink extends Link { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + /** + * Create FoundationLink. + * @param id - Wicket id. + */ + public FoundationLink(String id) { + this(id, new ButtonOptions()); + } + + /** + * Create FoundationLink. + * @param id - Wicket id. + * @param options - Options for the link. + */ + public FoundationLink(String id, ButtonOptions options) { + super(id); + Args.notNull(options, "options"); + optionsModel = Model.of(options); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationLink. + * @param id - Wicket id. + * @param model - Model for the link. + */ + public FoundationLink(String id, IModel model) { + this(id, model, new ButtonOptions()); + } + + /** + * Create FoundationLink. + * @param id - Wicket id. + * @param model - Model for the link. + * @param options - Options for the link. + */ + public FoundationLink(String id, IModel model, ButtonOptions options) { + this(id, model, Model.of(options)); + } + + /** + * Create FoundationLink. + * @param id - Wicket id. + * @param model - Model for the link. + * @param optionsModel - Model for the link options. + */ + public FoundationLink(String id, IModel model, IModel optionsModel) { + super(id, model); + Args.notNull(optionsModel, "optionsModel"); + this.optionsModel = optionsModel; + add(new FoundationButtonBehavior(this.optionsModel)); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, this.getDefaultModelObjectAsString()); + super.onComponentTagBody(markupStream, openTag); + } + + @Override + protected void onDetach() { + this.optionsModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationSubmitLink.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationSubmitLink.java new file mode 100644 index 0000000000..97b5b27250 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/button/FoundationSubmitLink.java @@ -0,0 +1,107 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.html.form.SubmitLink; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.lang.Args; + +/** + * Buttons are convenient tools when you need more traditional actions. To that end, Foundation has many + * easy to use button styles that you can customize or override to fit your needs. + * http://foundation.zurb.com/docs/components/buttons.html + * @author ilkka + * + */ +public class FoundationSubmitLink extends SubmitLink { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + /** + * Create FoundationSubmitLink. + * @param id - Wicket id. + */ + public FoundationSubmitLink(String id) { + this(id, new ButtonOptions()); + } + + /** + * Create FoundationSubmitLink. + * @param id - Wicket id. + * @param options - Options for the link. + */ + public FoundationSubmitLink(String id, ButtonOptions options) { + super(id); + Args.notNull(options, "options"); + optionsModel = Model.of(options); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationSubmitLink. + * @param id - Wicket id. + * @param form - Form to be submitted by the link. + * @param options - Options for the link. + */ + public FoundationSubmitLink(String id, Form form, ButtonOptions options) { + super(id, form); + Args.notNull(options, "options"); + optionsModel = Model.of(options); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationSubmitLink. + * @param id - Wicket id. + * @param model - Model for the link. + * @param options - Options for the link. + */ + public FoundationSubmitLink(String id, IModel model, ButtonOptions options) { + super(id, model); + Args.notNull(options, "options"); + optionsModel = Model.of(options); + add(new FoundationButtonBehavior(optionsModel)); + } + + /** + * Create FoundationSubmitLink. + * @param id - Wicket id. + * @param model - Model for the link. + * @param form - Form to be submitted by the link. + * @param options - Options for the link. + */ + public FoundationSubmitLink(String id, IModel model, Form form, ButtonOptions options) { + this(id, model, form, Model.of(options)); + } + + /** + * Create FoundationSubmitLink. + * @param id - Wicket id. + * @param model - Model for the link. + * @param form - Form to be submitted by the link. + * @param optionsModel - Model for the link options. + */ + public FoundationSubmitLink(String id, IModel model, Form form, IModel optionsModel) { + super(id, model, form); + Args.notNull(optionsModel, "optionsModel"); + this.optionsModel = optionsModel; + add(new FoundationButtonBehavior(optionsModel)); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, this.getDefaultModelObjectAsString()); + super.onComponentTagBody(markupStream, openTag); + } + + @Override + protected void onDetach() { + this.optionsModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/ButtonGroupOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/ButtonGroupOptions.java new file mode 100644 index 0000000000..16899a53e3 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/ButtonGroupOptions.java @@ -0,0 +1,64 @@ +package org.wicketstuff.foundation.buttongroup; + +import java.io.Serializable; + +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; + +/** + * Options for FoundationButtonGroup. + * @author ilkka + * + */ +public class ButtonGroupOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private ButtonRadius radius; + private ButtonColor color; + private ButtonGroupStacking stacking; + + public ButtonGroupOptions() { + } + + public ButtonGroupOptions(ButtonRadius radius) { + this.radius = radius; + } + + public ButtonGroupOptions(ButtonColor color) { + this.color = color; + } + + public ButtonGroupOptions(ButtonGroupStacking stacking) { + this.stacking = stacking; + } + + public ButtonGroupOptions(ButtonGroupOptions other) { + this.radius = other.radius; + this.color = other.color; + this.stacking = other.stacking; + } + + public ButtonRadius getRadius() { + return radius; + } + public ButtonGroupOptions setRadius(ButtonRadius radius) { + this.radius = radius; + return this; + } + public ButtonColor getColor() { + return color; + } + public ButtonGroupOptions setColor(ButtonColor color) { + this.color = color; + return this; + } + public ButtonGroupStacking getStacking() { + return stacking; + } + public ButtonGroupOptions setStacking(ButtonGroupStacking stacking) { + this.stacking = stacking; + return this; + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/ButtonGroupStacking.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/ButtonGroupStacking.java new file mode 100644 index 0000000000..9139b6f1d2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/ButtonGroupStacking.java @@ -0,0 +1,7 @@ +package org.wicketstuff.foundation.buttongroup; + +public enum ButtonGroupStacking { + + STACK, STACK_FOR_SMALL; + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonBarBorder.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonBarBorder.html new file mode 100644 index 0000000000..7011772ac9 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonBarBorder.html @@ -0,0 +1,14 @@ + + + + +wicket-foundation + + + +
+ +
+
+ + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonBarBorder.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonBarBorder.java new file mode 100644 index 0000000000..4cc961d411 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonBarBorder.java @@ -0,0 +1,41 @@ +package org.wicketstuff.foundation.buttongroup; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.border.FoundationBaseBorder; + +/** + * ButtonBarBorder is handy for wrapping multiple button groups together. + * @author ilkka + * + */ +public class FoundationButtonBarBorder extends FoundationBaseBorder { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationButtonBarBorder. + * @param id - Wicket id. + */ + public FoundationButtonBarBorder(String id) { + super(id); + initComponents(); + } + + /** + * Create FoundationButtonBarBorder. + * @param id - Wicket id. + * @param model - Model for the border. + */ + public FoundationButtonBarBorder(String id, IModel model) { + super(id, model); + initComponents(); + } + + private void initComponents() { + WebMarkupContainer wrapper = new WebMarkupContainer("wrapper"); + wrapper.add(new AttributeModifier("class", "button-bar")); + this.addToBorder(wrapper); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonGroup.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonGroup.html new file mode 100644 index 0000000000..c4cad84438 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonGroup.html @@ -0,0 +1,14 @@ + + + + +wicket-foundation + + + +
    +
  • +
+
+ + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonGroup.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonGroup.java new file mode 100644 index 0000000000..a5768e8848 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/buttongroup/FoundationButtonGroup.java @@ -0,0 +1,94 @@ +package org.wicketstuff.foundation.buttongroup; + +import java.util.List; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.button.ButtonOptions; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Button groups are containers for related action items. + * http://foundation.zurb.com/docs/components/button_groups.html + * @author ilkka + * + */ +public abstract class FoundationButtonGroup extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationButtonGroup. + * @param id - Wicket id. + * @param groupOptions - Options for the button group. + * @param btnOptions - Options for the button group buttons. + */ + public FoundationButtonGroup(String id, ButtonGroupOptions groupOptions, List btnOptions) { + this(id, Model.of(groupOptions), new ListModel(btnOptions)); + } + + /** + * Create FoundationButtonGroup. + * @param id - Wicket id. + * @param groupOptionsModel - Model for the button group options. + * @param btnOptionsModel - Model providing the button group button options. + */ + public FoundationButtonGroup(String id, IModel groupOptionsModel, IModel> btnOptionsModel) { + super(id); + WebMarkupContainer container = createContainer("group", groupOptionsModel); + add(container); + ListView lv = createRepeater("item", btnOptionsModel); + container.add(lv); + } + + protected WebMarkupContainer createContainer(String id, IModel groupOptions) { + return new ButtonGroupContainer(id, groupOptions); + } + + protected ListView createRepeater(String id, IModel> btnOptionsModel) { + return new ListView(id, btnOptionsModel) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + WebMarkupContainer btn = FoundationButtonGroup.this.createButton(item.getIndex(), "btn", item.getModel()); + item.add(btn); + } + }; + } + + protected abstract WebMarkupContainer createButton(int idx, String id, IModel optionsModel); + + private static class ButtonGroupContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public ButtonGroupContainer(String id, IModel model) { + super(id, model); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.setClass(tag, "button-group"); + ButtonGroupOptions options = (ButtonGroupOptions) getDefaultModelObject(); + if (options.getRadius() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getRadius().name())); + } + if (options.getColor() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getColor().name())); + } + if (options.getStacking() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getStacking().name())); + } + super.onComponentTag(tag); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/component/FoundationBasePanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/component/FoundationBasePanel.java new file mode 100644 index 0000000000..42fdbb6966 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/component/FoundationBasePanel.java @@ -0,0 +1,41 @@ +package org.wicketstuff.foundation.component; + +import org.apache.wicket.markup.head.CssHeaderItem; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.Foundation; + +/** + * Base class for Foundation styled Panels. + * @author ilkka + * + */ +public abstract class FoundationBasePanel extends Panel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationBasePanel. + * @param id - Wicket id. + */ + public FoundationBasePanel(String id) { + super(id); + } + + /** + * Create FoundationBasePanel. + * @param id - Wicket id. + * @param model - Model for the panel. + */ + public FoundationBasePanel(String id, IModel model) { + super(id, model); + } + + @Override + public void renderHead(IHeaderResponse response) { + super.renderHead(response); + response.render(CssHeaderItem.forReference(Foundation.getFoundationCssReference())); + response.render(CssHeaderItem.forReference(Foundation.getFoundationIconsCssReference())); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/component/FoundationJsPanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/component/FoundationJsPanel.java new file mode 100644 index 0000000000..dbb33e8d6b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/component/FoundationJsPanel.java @@ -0,0 +1,45 @@ +package org.wicketstuff.foundation.component; + +import org.apache.wicket.Application; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.head.JavaScriptHeaderItem; +import org.apache.wicket.markup.head.OnDomReadyHeaderItem; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.Foundation; + +/** + * Base class Foundation styled Panels with Javascript functionality. + * @author ilkka + * + */ +public abstract class FoundationJsPanel extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationJsPanel. + * @param id - Wicket id. + */ + public FoundationJsPanel(String id) { + super(id); + } + + /** + * Create FoundationJsPanel. + * @param id - Wicket id. + * @param model - Model for the panel. + */ + public FoundationJsPanel(String id, IModel model) { + super(id, model); + } + + @Override + public void renderHead(IHeaderResponse response) { + super.renderHead(response); + response.render(JavaScriptHeaderItem.forReference(Foundation.getModernizrJsReference())); + response.render(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())); + response.render(JavaScriptHeaderItem.forReference(Foundation.getFastclickJsReference())); + response.render(JavaScriptHeaderItem.forReference(Foundation.getFoundationJsReference())); + response.render(OnDomReadyHeaderItem.forScript(Foundation.getFoundationInitScript())); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownBase.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownBase.html new file mode 100644 index 0000000000..bab25b3f68 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownBase.html @@ -0,0 +1,13 @@ + + + + +wicket-foundation + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownBase.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownBase.java new file mode 100644 index 0000000000..3e3909a0e2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownBase.java @@ -0,0 +1,130 @@ +package org.wicketstuff.foundation.dropdown; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.component.FoundationJsPanel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Base class for the foundation dropdowns. + * @author ilkka + * + */ +abstract class DropdownBase extends FoundationJsPanel { + + private static final long serialVersionUID = 1L; + + private IModel titleModel; + private IModel optionsModel; + + /** + * Create FoundationDropdownBase. + * @param id - Wicket id. + * @param title - Dropdown button title. + * @param options - Options for the dropdown. + */ + public DropdownBase(String id, String title, DropdownOptions options) { + this(id, Model.of(title), Model.of(options)); + } + + /** + * Create FoundationDropdownBase. + * @param id - Wicket id. + * @param titleModel - Model for dropdown button title. + * @param optionsModel - Model for dropdown options. + */ + public DropdownBase(String id, IModel titleModel, IModel optionsModel) { + super(id); + this.titleModel = titleModel; + this.optionsModel = optionsModel; + } + + @Override + protected void onInitialize() { + String markupId = getContainerMarkupId(); + FoundationDropdownLink btn = new FoundationDropdownLink("btn", markupId, titleModel, optionsModel); + add(btn); + super.onInitialize(); + } + + protected abstract String getContainerMarkupId(); + + @Override + protected void onDetach() { + titleModel.detach(); + optionsModel.detach(); + super.onDetach(); + } + + private static class FoundationDropdownLink extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private String containerId; + private IModel titleModel; + private IModel optionsModel; + + public FoundationDropdownLink(String id, String containerId, IModel titleModel, IModel optionsModel) { + super(id); + this.containerId = containerId; + this.titleModel = titleModel; + this.optionsModel = optionsModel; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + DropdownOptions options = optionsModel.getObject(); + DropdownType type = options.getType(); + if (type == null || type.equals(DropdownType.DROPDOWN) || type.equals(DropdownType.DROPDOWNLINK) || type.equals(DropdownType.DROPDOWNCONTENT)) { + tag.setName("a"); + } + Attribute.addAttribute(tag, "data-dropdown", containerId); + Attribute.addAttribute(tag, "aria-controls", containerId); + Attribute.addAttribute(tag, "aria-expanded", false); + if (type != null && (type.equals(DropdownType.DROPDOWNLINK) || type.equals(DropdownType.DROPDOWNBUTTON))) { + Attribute.addClass(tag, "button"); + } + if (type != null && type.equals(DropdownType.DROPDOWNBUTTON)) { + Attribute.addClass(tag, "dropdown"); + } + if (options.getColor() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getColor().name())); + } + if (options.getRadius() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getRadius().name())); + } + if (options.getSize() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getSize().name())); + } + if (options.getExpansion() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getExpansion().name())); + } + if (options.getListAlignment() != null) { + String partial = StringUtil.EnumNameToCssClassName(options.getListAlignment().name()); + Attribute.addDataOptions(tag, "align:" + partial); + } + if (options.getHover() != null) { + Attribute.addDataOptions(tag, "is_hover:true"); + } + super.onComponentTag(tag); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, titleModel.getObject()); + super.onComponentTagBody(markupStream, openTag); + } + + @Override + protected void onDetach() { + titleModel.detach(); + optionsModel.detach(); + super.onDetach(); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownHover.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownHover.java new file mode 100644 index 0000000000..78fcb8d2e7 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownHover.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.dropdown; + +public enum DropdownHover { + HOVERABLE; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownListAlignment.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownListAlignment.java new file mode 100644 index 0000000000..2768ca6549 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownListAlignment.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.dropdown; + +public enum DropdownListAlignment { + TOP, RIGHT, LEFT; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownListStyle.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownListStyle.java new file mode 100644 index 0000000000..e5fe214e48 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownListStyle.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.dropdown; + +public enum DropdownListStyle { + TINY, SMALL, MEDIUM, LARGE, MEGA, CONTENT; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownOptions.java new file mode 100644 index 0000000000..e9f55af25b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownOptions.java @@ -0,0 +1,142 @@ +package org.wicketstuff.foundation.dropdown; + +import java.io.Serializable; + +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonExpansion; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.button.ButtonSize; + +/** + * Options for the dropdown. + * @author ilkka + * + */ +public class DropdownOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private DropdownType type; + private ButtonSize size; + private ButtonColor color; + private ButtonRadius radius; + private ButtonExpansion expansion; + private DropdownListStyle listStyle; + private DropdownListAlignment listAlignment; + private DropdownHover hover; + + public DropdownOptions() { + } + + public DropdownOptions(DropdownType type) { + this.type = type; + } + + public DropdownOptions(ButtonSize size) { + this.size = size; + } + + public DropdownOptions(ButtonColor color) { + this.color = color; + } + + public DropdownOptions(ButtonRadius radius) { + this.radius = radius; + } + + public DropdownOptions(ButtonExpansion expansion) { + this.expansion = expansion; + } + + public DropdownOptions(DropdownListStyle listStyle) { + this.listStyle = listStyle; + } + + public DropdownOptions(DropdownListAlignment listAlignment) { + this.listAlignment = listAlignment; + } + + public DropdownOptions(DropdownHover hover) { + this.hover = hover; + } + + public DropdownOptions(DropdownOptions other) { + this.type = other.type; + this.size = other.size; + this.color = other.color; + this.radius = other.radius; + this.expansion = other.expansion; + } + + public ButtonSize getSize() { + return size; + } + + public DropdownOptions setSize(ButtonSize size) { + this.size = size; + return this; + } + + public ButtonColor getColor() { + return color; + } + + public DropdownOptions setColor(ButtonColor color) { + this.color = color; + return this; + } + + public ButtonRadius getRadius() { + return radius; + } + + public DropdownOptions setRadius(ButtonRadius radius) { + this.radius = radius; + return this; + } + + public ButtonExpansion getExpansion() { + return expansion; + } + + public DropdownOptions setExpansion(ButtonExpansion expansion) { + this.expansion = expansion; + return this; + } + + public DropdownType getType() { + return type; + } + + public DropdownOptions setType(DropdownType type) { + this.type = type; + return this; + } + + public DropdownListStyle getListStyle() { + return listStyle; + } + + public DropdownOptions setListStyle(DropdownListStyle listStyle) { + this.listStyle = listStyle; + return this; + } + + public DropdownListAlignment getListAlignment() { + return listAlignment; + } + + public DropdownOptions setListAlignment(DropdownListAlignment listAlignment) { + this.listAlignment = listAlignment; + return this; + } + + public DropdownHover getHover() { + return hover; + } + + public DropdownOptions setHover(DropdownHover hover) { + this.hover = hover; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownType.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownType.java new file mode 100644 index 0000000000..3eb47b164f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/DropdownType.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.dropdown; + +public enum DropdownType { + DROPDOWN, DROPDOWNLINK, DROPDOWNBUTTON, DROPDOWNCONTENT; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationContentDropdown.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationContentDropdown.html new file mode 100644 index 0000000000..b496ee6053 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationContentDropdown.html @@ -0,0 +1,12 @@ + + + + +wicket-foundation + + + +
+
+ + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationContentDropdown.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationContentDropdown.java new file mode 100644 index 0000000000..456f3d80f8 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationContentDropdown.java @@ -0,0 +1,87 @@ +package org.wicketstuff.foundation.dropdown; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.util.Attribute; + +/** + * Dropdown buttons are elements that, when tapped, reveal additional content. + * FoundationContentDropdown opens additional HTML content when clicked. + * http://foundation.zurb.com/docs/components/dropdown_buttons.html + * @author ilkka + * + */ +public class FoundationContentDropdown extends DropdownBase { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationContentDropdown. + * @param id - Wicket id. + * @param title - Title for the dropdown button. + * @param options - Options for the dropdown. + * @param content - Dropdown content HTML. + */ + public FoundationContentDropdown(String id, String title, DropdownOptions options, String content) { + this(id, Model.of(title), Model.of(options), Model.of(content)); + } + + /** + * Create FoundationContentDropdown. + * @param id - Wicket id. + * @param titleModel - Model for the dropdown button title. + * @param optionsModel - Model for the dropdown options. + * @param contentModel - Model for the dropdown content HTML. + */ + public FoundationContentDropdown(String id, IModel titleModel, IModel optionsModel, IModel contentModel) { + super(id, titleModel, optionsModel); + FoundationDropdownContent content = new FoundationDropdownContent("content", contentModel); + add(content); + DropdownOptions options = optionsModel.getObject().setType(DropdownType.DROPDOWNCONTENT); + optionsModel.setObject(options); + } + + @Override + protected String getContainerMarkupId() { + return this.get("content").getMarkupId(); + } + + private class FoundationDropdownContent extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private IModel contentModel; + + public FoundationDropdownContent(String id, IModel contentModel) { + super(id); + this.contentModel = contentModel; + this.setOutputMarkupId(true); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addAttribute(tag, "data-dropdown-content"); + Attribute.addClass(tag, "f-dropdown"); + Attribute.addClass(tag, "content"); + Attribute.addAttribute(tag, "aria-hidden", true); + Attribute.addAttribute(tag, "tabindex", -1); + super.onComponentTag(tag); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, contentModel.getObject()); + super.onComponentTagBody(markupStream, openTag); + } + + @Override + protected void onDetach() { + contentModel.detach(); + super.onDetach(); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationDropdown.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationDropdown.html new file mode 100644 index 0000000000..61ec02d1ed --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationDropdown.html @@ -0,0 +1,14 @@ + + + + +wicket-foundation + + + +
    +
  • +
+
+ + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationDropdown.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationDropdown.java new file mode 100644 index 0000000000..98bff651c4 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/dropdown/FoundationDropdown.java @@ -0,0 +1,103 @@ +package org.wicketstuff.foundation.dropdown; + +import java.util.List; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Dropdown buttons are elements that, when tapped, reveal additional content. + * FoundationDropdown provides set of links for the user to click. + * http://foundation.zurb.com/docs/components/dropdown_buttons.html + * @author ilkka + * + */ +public abstract class FoundationDropdown extends DropdownBase { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationDropdown. + * @param id - Wicket id. + * @param title - Title of the dropdown button. + * @param options - Options for the dropdown. + * @param linkTitles - Titles for the dropdown links. + */ + public FoundationDropdown(String id, String title, DropdownOptions options, List linkTitles) { + this(id, Model.of(title), Model.of(options), new ListModel<>(linkTitles)); + } + + /** + * Create FoundationDropdown. + * @param id - Wicket id. + * @param titleModel - Model for the dropdown button title. + * @param optionsModel - Model for the dropdown options. + * @param linkTitleModels - Model for the dropdown link titles. + */ + public FoundationDropdown(String id, IModel titleModel, IModel optionsModel, IModel> linkTitleModels) { + super(id, titleModel, optionsModel); + FoundationDropdownContainer container = new FoundationDropdownContainer("container", linkTitleModels, optionsModel); + add(container); + } + + @Override + protected String getContainerMarkupId() { + return this.get("container").getMarkupId(); + } + + protected abstract AbstractLink createDropdownLink(int idx, String id); + + private class FoundationDropdownContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + public FoundationDropdownContainer(String id, IModel> linkTitleModels, IModel optionsModel) { + super(id); + this.optionsModel = optionsModel; + this.setOutputMarkupId(true); + + ListView lv = new ListView("item", linkTitleModels) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + AbstractLink link = FoundationDropdown.this.createDropdownLink(item.getIndex(), "link"); + item.add(link); + link.add(new Label("body", item.getModel())); + } + }; + add(lv); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addAttribute(tag, "data-dropdown-content"); + Attribute.addClass(tag, "f-dropdown"); + Attribute.addAttribute(tag, "aria-hidden", true); + Attribute.addAttribute(tag, "tabindex", -1); + DropdownOptions options = optionsModel.getObject(); + if (options.getListStyle() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getListStyle().name())); + } + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + optionsModel.detach(); + super.onDetach(); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/fastclick.js b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/fastclick.js new file mode 100644 index 0000000000..93f82dab40 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/fastclick.js @@ -0,0 +1,8 @@ +!function(){"use strict";/** + * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. + * + * @codingstandard ftlabs-jsv2 + * @copyright The Financial Times Limited [All Rights Reserved] + * @license MIT License (see LICENSE.txt) + */ +function a(b,d){function e(a,b){return function(){return a.apply(b,arguments)}}var f;if(d=d||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=d.touchBoundary||10,this.layer=b,this.tapDelay=d.tapDelay||200,this.tapTimeout=d.tapTimeout||700,!a.notNeeded(b)){for(var g=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],h=this,i=0,j=g.length;j>i;i++)h[g[i]]=e(h[g[i]],h);c&&(b.addEventListener("mouseover",this.onMouse,!0),b.addEventListener("mousedown",this.onMouse,!0),b.addEventListener("mouseup",this.onMouse,!0)),b.addEventListener("click",this.onClick,!0),b.addEventListener("touchstart",this.onTouchStart,!1),b.addEventListener("touchmove",this.onTouchMove,!1),b.addEventListener("touchend",this.onTouchEnd,!1),b.addEventListener("touchcancel",this.onTouchCancel,!1),Event.prototype.stopImmediatePropagation||(b.removeEventListener=function(a,c,d){var e=Node.prototype.removeEventListener;"click"===a?e.call(b,a,c.hijacked||c,d):e.call(b,a,c,d)},b.addEventListener=function(a,c,d){var e=Node.prototype.addEventListener;"click"===a?e.call(b,a,c.hijacked||(c.hijacked=function(a){a.propagationStopped||c(a)}),d):e.call(b,a,c,d)}),"function"==typeof b.onclick&&(f=b.onclick,b.addEventListener("click",function(a){f(a)},!1),b.onclick=null)}}var b=navigator.userAgent.indexOf("Windows Phone")>=0,c=navigator.userAgent.indexOf("Android")>0&&!b,d=/iP(ad|hone|od)/.test(navigator.userAgent)&&!b,e=d&&/OS 4_\d(_\d)?/.test(navigator.userAgent),f=d&&/OS [6-7]_\d/.test(navigator.userAgent),g=navigator.userAgent.indexOf("BB10")>0;a.prototype.needsClick=function(a){switch(a.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(a.disabled)return!0;break;case"input":if(d&&"file"===a.type||a.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(a.className)},a.prototype.needsFocus=function(a){switch(a.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!c;case"input":switch(a.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!a.disabled&&!a.readOnly;default:return/\bneedsfocus\b/.test(a.className)}},a.prototype.sendClick=function(a,b){var c,d;document.activeElement&&document.activeElement!==a&&document.activeElement.blur(),d=b.changedTouches[0],c=document.createEvent("MouseEvents"),c.initMouseEvent(this.determineEventType(a),!0,!0,window,1,d.screenX,d.screenY,d.clientX,d.clientY,!1,!1,!1,!1,0,null),c.forwardedTouchEvent=!0,a.dispatchEvent(c)},a.prototype.determineEventType=function(a){return c&&"select"===a.tagName.toLowerCase()?"mousedown":"click"},a.prototype.focus=function(a){var b;d&&a.setSelectionRange&&0!==a.type.indexOf("date")&&"time"!==a.type&&"month"!==a.type?(b=a.value.length,a.setSelectionRange(b,b)):a.focus()},a.prototype.updateScrollParent=function(a){var b,c;if(b=a.fastClickScrollParent,!b||!b.contains(a)){c=a;do{if(c.scrollHeight>c.offsetHeight){b=c,a.fastClickScrollParent=c;break}c=c.parentElement}while(c)}b&&(b.fastClickLastScrollTop=b.scrollTop)},a.prototype.getTargetElementFromEventTarget=function(a){return a.nodeType===Node.TEXT_NODE?a.parentNode:a},a.prototype.onTouchStart=function(a){var b,c,f;if(a.targetTouches.length>1)return!0;if(b=this.getTargetElementFromEventTarget(a.target),c=a.targetTouches[0],d){if(f=window.getSelection(),f.rangeCount&&!f.isCollapsed)return!0;if(!e){if(c.identifier&&c.identifier===this.lastTouchIdentifier)return a.preventDefault(),!1;this.lastTouchIdentifier=c.identifier,this.updateScrollParent(b)}}return this.trackingClick=!0,this.trackingClickStart=a.timeStamp,this.targetElement=b,this.touchStartX=c.pageX,this.touchStartY=c.pageY,a.timeStamp-this.lastClickTimec||Math.abs(b.pageY-this.touchStartY)>c?!0:!1},a.prototype.onTouchMove=function(a){return this.trackingClick?((this.targetElement!==this.getTargetElementFromEventTarget(a.target)||this.touchHasMoved(a))&&(this.trackingClick=!1,this.targetElement=null),!0):!0},a.prototype.findControl=function(a){return void 0!==a.control?a.control:a.htmlFor?document.getElementById(a.htmlFor):a.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},a.prototype.onTouchEnd=function(a){var b,g,h,i,j,k=this.targetElement;if(!this.trackingClick)return!0;if(a.timeStamp-this.lastClickTimethis.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=a.timeStamp,g=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,f&&(j=a.changedTouches[0],k=document.elementFromPoint(j.pageX-window.pageXOffset,j.pageY-window.pageYOffset)||k,k.fastClickScrollParent=this.targetElement.fastClickScrollParent),h=k.tagName.toLowerCase(),"label"===h){if(b=this.findControl(k)){if(this.focus(k),c)return!1;k=b}}else if(this.needsFocus(k))return a.timeStamp-g>100||d&&window.top!==window&&"input"===h?(this.targetElement=null,!1):(this.focus(k),this.sendClick(k,a),d&&"select"===h||(this.targetElement=null,a.preventDefault()),!1);return d&&!e&&(i=k.fastClickScrollParent,i&&i.fastClickLastScrollTop!==i.scrollTop)?!0:(this.needsClick(k)||(a.preventDefault(),this.sendClick(k,a)),!1)},a.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},a.prototype.onMouse=function(a){return this.targetElement?a.forwardedTouchEvent?!0:a.cancelable&&(!this.needsClick(this.targetElement)||this.cancelNextClick)?(a.stopImmediatePropagation?a.stopImmediatePropagation():a.propagationStopped=!0,a.stopPropagation(),a.preventDefault(),!1):!0:!0},a.prototype.onClick=function(a){var b;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===a.target.type&&0===a.detail?!0:(b=this.onMouse(a),b||(this.targetElement=null),b)},a.prototype.destroy=function(){var a=this.layer;c&&(a.removeEventListener("mouseover",this.onMouse,!0),a.removeEventListener("mousedown",this.onMouse,!0),a.removeEventListener("mouseup",this.onMouse,!0)),a.removeEventListener("click",this.onClick,!0),a.removeEventListener("touchstart",this.onTouchStart,!1),a.removeEventListener("touchmove",this.onTouchMove,!1),a.removeEventListener("touchend",this.onTouchEnd,!1),a.removeEventListener("touchcancel",this.onTouchCancel,!1)},a.notNeeded=function(a){var b,d,e,f;if("undefined"==typeof window.ontouchstart)return!0;if(d=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!c)return!0;if(b=document.querySelector("meta[name=viewport]")){if(-1!==b.content.indexOf("user-scalable=no"))return!0;if(d>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(g&&(e=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),e[1]>=10&&e[2]>=3&&(b=document.querySelector("meta[name=viewport]")))){if(-1!==b.content.indexOf("user-scalable=no"))return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===a.style.msTouchAction||"manipulation"===a.style.touchAction?!0:(f=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],f>=27&&(b=document.querySelector("meta[name=viewport]"),b&&(-1!==b.content.indexOf("user-scalable=no")||document.documentElement.scrollWidth<=window.outerWidth))?!0:"none"===a.style.touchAction||"manipulation"===a.style.touchAction?!0:!1)},a.attach=function(b,c){return new a(b,c)},"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return a}):"undefined"!=typeof module&&module.exports?(module.exports=a.attach,module.exports.FastClick=a):window.FastClick=a}(); diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.css b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.css new file mode 100644 index 0000000000..d866a73352 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.css @@ -0,0 +1,594 @@ +/* + * Foundation Icons v 3.0 + * Made by ZURB 2013 http://zurb.com/playground/foundation-icon-fonts-3 + * MIT License + */ + +@font-face { + font-family: "foundation-icons"; + src: url("foundation-icons.eot"); + src: url("foundation-icons.eot?#iefix") format("embedded-opentype"), + url("foundation-icons.woff") format("woff"), + url("foundation-icons.ttf") format("truetype"), + url("foundation-icons.svg#fontcustom") format("svg"); + font-weight: normal; + font-style: normal; +} + +.fi-address-book:before, +.fi-alert:before, +.fi-align-center:before, +.fi-align-justify:before, +.fi-align-left:before, +.fi-align-right:before, +.fi-anchor:before, +.fi-annotate:before, +.fi-archive:before, +.fi-arrow-down:before, +.fi-arrow-left:before, +.fi-arrow-right:before, +.fi-arrow-up:before, +.fi-arrows-compress:before, +.fi-arrows-expand:before, +.fi-arrows-in:before, +.fi-arrows-out:before, +.fi-asl:before, +.fi-asterisk:before, +.fi-at-sign:before, +.fi-background-color:before, +.fi-battery-empty:before, +.fi-battery-full:before, +.fi-battery-half:before, +.fi-bitcoin-circle:before, +.fi-bitcoin:before, +.fi-blind:before, +.fi-bluetooth:before, +.fi-bold:before, +.fi-book-bookmark:before, +.fi-book:before, +.fi-bookmark:before, +.fi-braille:before, +.fi-burst-new:before, +.fi-burst-sale:before, +.fi-burst:before, +.fi-calendar:before, +.fi-camera:before, +.fi-check:before, +.fi-checkbox:before, +.fi-clipboard-notes:before, +.fi-clipboard-pencil:before, +.fi-clipboard:before, +.fi-clock:before, +.fi-closed-caption:before, +.fi-cloud:before, +.fi-comment-minus:before, +.fi-comment-quotes:before, +.fi-comment-video:before, +.fi-comment:before, +.fi-comments:before, +.fi-compass:before, +.fi-contrast:before, +.fi-credit-card:before, +.fi-crop:before, +.fi-crown:before, +.fi-css3:before, +.fi-database:before, +.fi-die-five:before, +.fi-die-four:before, +.fi-die-one:before, +.fi-die-six:before, +.fi-die-three:before, +.fi-die-two:before, +.fi-dislike:before, +.fi-dollar-bill:before, +.fi-dollar:before, +.fi-download:before, +.fi-eject:before, +.fi-elevator:before, +.fi-euro:before, +.fi-eye:before, +.fi-fast-forward:before, +.fi-female-symbol:before, +.fi-female:before, +.fi-filter:before, +.fi-first-aid:before, +.fi-flag:before, +.fi-folder-add:before, +.fi-folder-lock:before, +.fi-folder:before, +.fi-foot:before, +.fi-foundation:before, +.fi-graph-bar:before, +.fi-graph-horizontal:before, +.fi-graph-pie:before, +.fi-graph-trend:before, +.fi-guide-dog:before, +.fi-hearing-aid:before, +.fi-heart:before, +.fi-home:before, +.fi-html5:before, +.fi-indent-less:before, +.fi-indent-more:before, +.fi-info:before, +.fi-italic:before, +.fi-key:before, +.fi-laptop:before, +.fi-layout:before, +.fi-lightbulb:before, +.fi-like:before, +.fi-link:before, +.fi-list-bullet:before, +.fi-list-number:before, +.fi-list-thumbnails:before, +.fi-list:before, +.fi-lock:before, +.fi-loop:before, +.fi-magnifying-glass:before, +.fi-mail:before, +.fi-male-female:before, +.fi-male-symbol:before, +.fi-male:before, +.fi-map:before, +.fi-marker:before, +.fi-megaphone:before, +.fi-microphone:before, +.fi-minus-circle:before, +.fi-minus:before, +.fi-mobile-signal:before, +.fi-mobile:before, +.fi-monitor:before, +.fi-mountains:before, +.fi-music:before, +.fi-next:before, +.fi-no-dogs:before, +.fi-no-smoking:before, +.fi-page-add:before, +.fi-page-copy:before, +.fi-page-csv:before, +.fi-page-delete:before, +.fi-page-doc:before, +.fi-page-edit:before, +.fi-page-export-csv:before, +.fi-page-export-doc:before, +.fi-page-export-pdf:before, +.fi-page-export:before, +.fi-page-filled:before, +.fi-page-multiple:before, +.fi-page-pdf:before, +.fi-page-remove:before, +.fi-page-search:before, +.fi-page:before, +.fi-paint-bucket:before, +.fi-paperclip:before, +.fi-pause:before, +.fi-paw:before, +.fi-paypal:before, +.fi-pencil:before, +.fi-photo:before, +.fi-play-circle:before, +.fi-play-video:before, +.fi-play:before, +.fi-plus:before, +.fi-pound:before, +.fi-power:before, +.fi-previous:before, +.fi-price-tag:before, +.fi-pricetag-multiple:before, +.fi-print:before, +.fi-prohibited:before, +.fi-projection-screen:before, +.fi-puzzle:before, +.fi-quote:before, +.fi-record:before, +.fi-refresh:before, +.fi-results-demographics:before, +.fi-results:before, +.fi-rewind-ten:before, +.fi-rewind:before, +.fi-rss:before, +.fi-safety-cone:before, +.fi-save:before, +.fi-share:before, +.fi-sheriff-badge:before, +.fi-shield:before, +.fi-shopping-bag:before, +.fi-shopping-cart:before, +.fi-shuffle:before, +.fi-skull:before, +.fi-social-500px:before, +.fi-social-adobe:before, +.fi-social-amazon:before, +.fi-social-android:before, +.fi-social-apple:before, +.fi-social-behance:before, +.fi-social-bing:before, +.fi-social-blogger:before, +.fi-social-delicious:before, +.fi-social-designer-news:before, +.fi-social-deviant-art:before, +.fi-social-digg:before, +.fi-social-dribbble:before, +.fi-social-drive:before, +.fi-social-dropbox:before, +.fi-social-evernote:before, +.fi-social-facebook:before, +.fi-social-flickr:before, +.fi-social-forrst:before, +.fi-social-foursquare:before, +.fi-social-game-center:before, +.fi-social-github:before, +.fi-social-google-plus:before, +.fi-social-hacker-news:before, +.fi-social-hi5:before, +.fi-social-instagram:before, +.fi-social-joomla:before, +.fi-social-lastfm:before, +.fi-social-linkedin:before, +.fi-social-medium:before, +.fi-social-myspace:before, +.fi-social-orkut:before, +.fi-social-path:before, +.fi-social-picasa:before, +.fi-social-pinterest:before, +.fi-social-rdio:before, +.fi-social-reddit:before, +.fi-social-skillshare:before, +.fi-social-skype:before, +.fi-social-smashing-mag:before, +.fi-social-snapchat:before, +.fi-social-spotify:before, +.fi-social-squidoo:before, +.fi-social-stack-overflow:before, +.fi-social-steam:before, +.fi-social-stumbleupon:before, +.fi-social-treehouse:before, +.fi-social-tumblr:before, +.fi-social-twitter:before, +.fi-social-vimeo:before, +.fi-social-windows:before, +.fi-social-xbox:before, +.fi-social-yahoo:before, +.fi-social-yelp:before, +.fi-social-youtube:before, +.fi-social-zerply:before, +.fi-social-zurb:before, +.fi-sound:before, +.fi-star:before, +.fi-stop:before, +.fi-strikethrough:before, +.fi-subscript:before, +.fi-superscript:before, +.fi-tablet-landscape:before, +.fi-tablet-portrait:before, +.fi-target-two:before, +.fi-target:before, +.fi-telephone-accessible:before, +.fi-telephone:before, +.fi-text-color:before, +.fi-thumbnails:before, +.fi-ticket:before, +.fi-torso-business:before, +.fi-torso-female:before, +.fi-torso:before, +.fi-torsos-all-female:before, +.fi-torsos-all:before, +.fi-torsos-female-male:before, +.fi-torsos-male-female:before, +.fi-torsos:before, +.fi-trash:before, +.fi-trees:before, +.fi-trophy:before, +.fi-underline:before, +.fi-universal-access:before, +.fi-unlink:before, +.fi-unlock:before, +.fi-upload-cloud:before, +.fi-upload:before, +.fi-usb:before, +.fi-video:before, +.fi-volume-none:before, +.fi-volume-strike:before, +.fi-volume:before, +.fi-web:before, +.fi-wheelchair:before, +.fi-widget:before, +.fi-wrench:before, +.fi-x-circle:before, +.fi-x:before, +.fi-yen:before, +.fi-zoom-in:before, +.fi-zoom-out:before { + font-family: "foundation-icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + display: inline-block; + text-decoration: inherit; +} + +.fi-address-book:before { content: "\f100"; } +.fi-alert:before { content: "\f101"; } +.fi-align-center:before { content: "\f102"; } +.fi-align-justify:before { content: "\f103"; } +.fi-align-left:before { content: "\f104"; } +.fi-align-right:before { content: "\f105"; } +.fi-anchor:before { content: "\f106"; } +.fi-annotate:before { content: "\f107"; } +.fi-archive:before { content: "\f108"; } +.fi-arrow-down:before { content: "\f109"; } +.fi-arrow-left:before { content: "\f10a"; } +.fi-arrow-right:before { content: "\f10b"; } +.fi-arrow-up:before { content: "\f10c"; } +.fi-arrows-compress:before { content: "\f10d"; } +.fi-arrows-expand:before { content: "\f10e"; } +.fi-arrows-in:before { content: "\f10f"; } +.fi-arrows-out:before { content: "\f110"; } +.fi-asl:before { content: "\f111"; } +.fi-asterisk:before { content: "\f112"; } +.fi-at-sign:before { content: "\f113"; } +.fi-background-color:before { content: "\f114"; } +.fi-battery-empty:before { content: "\f115"; } +.fi-battery-full:before { content: "\f116"; } +.fi-battery-half:before { content: "\f117"; } +.fi-bitcoin-circle:before { content: "\f118"; } +.fi-bitcoin:before { content: "\f119"; } +.fi-blind:before { content: "\f11a"; } +.fi-bluetooth:before { content: "\f11b"; } +.fi-bold:before { content: "\f11c"; } +.fi-book-bookmark:before { content: "\f11d"; } +.fi-book:before { content: "\f11e"; } +.fi-bookmark:before { content: "\f11f"; } +.fi-braille:before { content: "\f120"; } +.fi-burst-new:before { content: "\f121"; } +.fi-burst-sale:before { content: "\f122"; } +.fi-burst:before { content: "\f123"; } +.fi-calendar:before { content: "\f124"; } +.fi-camera:before { content: "\f125"; } +.fi-check:before { content: "\f126"; } +.fi-checkbox:before { content: "\f127"; } +.fi-clipboard-notes:before { content: "\f128"; } +.fi-clipboard-pencil:before { content: "\f129"; } +.fi-clipboard:before { content: "\f12a"; } +.fi-clock:before { content: "\f12b"; } +.fi-closed-caption:before { content: "\f12c"; } +.fi-cloud:before { content: "\f12d"; } +.fi-comment-minus:before { content: "\f12e"; } +.fi-comment-quotes:before { content: "\f12f"; } +.fi-comment-video:before { content: "\f130"; } +.fi-comment:before { content: "\f131"; } +.fi-comments:before { content: "\f132"; } +.fi-compass:before { content: "\f133"; } +.fi-contrast:before { content: "\f134"; } +.fi-credit-card:before { content: "\f135"; } +.fi-crop:before { content: "\f136"; } +.fi-crown:before { content: "\f137"; } +.fi-css3:before { content: "\f138"; } +.fi-database:before { content: "\f139"; } +.fi-die-five:before { content: "\f13a"; } +.fi-die-four:before { content: "\f13b"; } +.fi-die-one:before { content: "\f13c"; } +.fi-die-six:before { content: "\f13d"; } +.fi-die-three:before { content: "\f13e"; } +.fi-die-two:before { content: "\f13f"; } +.fi-dislike:before { content: "\f140"; } +.fi-dollar-bill:before { content: "\f141"; } +.fi-dollar:before { content: "\f142"; } +.fi-download:before { content: "\f143"; } +.fi-eject:before { content: "\f144"; } +.fi-elevator:before { content: "\f145"; } +.fi-euro:before { content: "\f146"; } +.fi-eye:before { content: "\f147"; } +.fi-fast-forward:before { content: "\f148"; } +.fi-female-symbol:before { content: "\f149"; } +.fi-female:before { content: "\f14a"; } +.fi-filter:before { content: "\f14b"; } +.fi-first-aid:before { content: "\f14c"; } +.fi-flag:before { content: "\f14d"; } +.fi-folder-add:before { content: "\f14e"; } +.fi-folder-lock:before { content: "\f14f"; } +.fi-folder:before { content: "\f150"; } +.fi-foot:before { content: "\f151"; } +.fi-foundation:before { content: "\f152"; } +.fi-graph-bar:before { content: "\f153"; } +.fi-graph-horizontal:before { content: "\f154"; } +.fi-graph-pie:before { content: "\f155"; } +.fi-graph-trend:before { content: "\f156"; } +.fi-guide-dog:before { content: "\f157"; } +.fi-hearing-aid:before { content: "\f158"; } +.fi-heart:before { content: "\f159"; } +.fi-home:before { content: "\f15a"; } +.fi-html5:before { content: "\f15b"; } +.fi-indent-less:before { content: "\f15c"; } +.fi-indent-more:before { content: "\f15d"; } +.fi-info:before { content: "\f15e"; } +.fi-italic:before { content: "\f15f"; } +.fi-key:before { content: "\f160"; } +.fi-laptop:before { content: "\f161"; } +.fi-layout:before { content: "\f162"; } +.fi-lightbulb:before { content: "\f163"; } +.fi-like:before { content: "\f164"; } +.fi-link:before { content: "\f165"; } +.fi-list-bullet:before { content: "\f166"; } +.fi-list-number:before { content: "\f167"; } +.fi-list-thumbnails:before { content: "\f168"; } +.fi-list:before { content: "\f169"; } +.fi-lock:before { content: "\f16a"; } +.fi-loop:before { content: "\f16b"; } +.fi-magnifying-glass:before { content: "\f16c"; } +.fi-mail:before { content: "\f16d"; } +.fi-male-female:before { content: "\f16e"; } +.fi-male-symbol:before { content: "\f16f"; } +.fi-male:before { content: "\f170"; } +.fi-map:before { content: "\f171"; } +.fi-marker:before { content: "\f172"; } +.fi-megaphone:before { content: "\f173"; } +.fi-microphone:before { content: "\f174"; } +.fi-minus-circle:before { content: "\f175"; } +.fi-minus:before { content: "\f176"; } +.fi-mobile-signal:before { content: "\f177"; } +.fi-mobile:before { content: "\f178"; } +.fi-monitor:before { content: "\f179"; } +.fi-mountains:before { content: "\f17a"; } +.fi-music:before { content: "\f17b"; } +.fi-next:before { content: "\f17c"; } +.fi-no-dogs:before { content: "\f17d"; } +.fi-no-smoking:before { content: "\f17e"; } +.fi-page-add:before { content: "\f17f"; } +.fi-page-copy:before { content: "\f180"; } +.fi-page-csv:before { content: "\f181"; } +.fi-page-delete:before { content: "\f182"; } +.fi-page-doc:before { content: "\f183"; } +.fi-page-edit:before { content: "\f184"; } +.fi-page-export-csv:before { content: "\f185"; } +.fi-page-export-doc:before { content: "\f186"; } +.fi-page-export-pdf:before { content: "\f187"; } +.fi-page-export:before { content: "\f188"; } +.fi-page-filled:before { content: "\f189"; } +.fi-page-multiple:before { content: "\f18a"; } +.fi-page-pdf:before { content: "\f18b"; } +.fi-page-remove:before { content: "\f18c"; } +.fi-page-search:before { content: "\f18d"; } +.fi-page:before { content: "\f18e"; } +.fi-paint-bucket:before { content: "\f18f"; } +.fi-paperclip:before { content: "\f190"; } +.fi-pause:before { content: "\f191"; } +.fi-paw:before { content: "\f192"; } +.fi-paypal:before { content: "\f193"; } +.fi-pencil:before { content: "\f194"; } +.fi-photo:before { content: "\f195"; } +.fi-play-circle:before { content: "\f196"; } +.fi-play-video:before { content: "\f197"; } +.fi-play:before { content: "\f198"; } +.fi-plus:before { content: "\f199"; } +.fi-pound:before { content: "\f19a"; } +.fi-power:before { content: "\f19b"; } +.fi-previous:before { content: "\f19c"; } +.fi-price-tag:before { content: "\f19d"; } +.fi-pricetag-multiple:before { content: "\f19e"; } +.fi-print:before { content: "\f19f"; } +.fi-prohibited:before { content: "\f1a0"; } +.fi-projection-screen:before { content: "\f1a1"; } +.fi-puzzle:before { content: "\f1a2"; } +.fi-quote:before { content: "\f1a3"; } +.fi-record:before { content: "\f1a4"; } +.fi-refresh:before { content: "\f1a5"; } +.fi-results-demographics:before { content: "\f1a6"; } +.fi-results:before { content: "\f1a7"; } +.fi-rewind-ten:before { content: "\f1a8"; } +.fi-rewind:before { content: "\f1a9"; } +.fi-rss:before { content: "\f1aa"; } +.fi-safety-cone:before { content: "\f1ab"; } +.fi-save:before { content: "\f1ac"; } +.fi-share:before { content: "\f1ad"; } +.fi-sheriff-badge:before { content: "\f1ae"; } +.fi-shield:before { content: "\f1af"; } +.fi-shopping-bag:before { content: "\f1b0"; } +.fi-shopping-cart:before { content: "\f1b1"; } +.fi-shuffle:before { content: "\f1b2"; } +.fi-skull:before { content: "\f1b3"; } +.fi-social-500px:before { content: "\f1b4"; } +.fi-social-adobe:before { content: "\f1b5"; } +.fi-social-amazon:before { content: "\f1b6"; } +.fi-social-android:before { content: "\f1b7"; } +.fi-social-apple:before { content: "\f1b8"; } +.fi-social-behance:before { content: "\f1b9"; } +.fi-social-bing:before { content: "\f1ba"; } +.fi-social-blogger:before { content: "\f1bb"; } +.fi-social-delicious:before { content: "\f1bc"; } +.fi-social-designer-news:before { content: "\f1bd"; } +.fi-social-deviant-art:before { content: "\f1be"; } +.fi-social-digg:before { content: "\f1bf"; } +.fi-social-dribbble:before { content: "\f1c0"; } +.fi-social-drive:before { content: "\f1c1"; } +.fi-social-dropbox:before { content: "\f1c2"; } +.fi-social-evernote:before { content: "\f1c3"; } +.fi-social-facebook:before { content: "\f1c4"; } +.fi-social-flickr:before { content: "\f1c5"; } +.fi-social-forrst:before { content: "\f1c6"; } +.fi-social-foursquare:before { content: "\f1c7"; } +.fi-social-game-center:before { content: "\f1c8"; } +.fi-social-github:before { content: "\f1c9"; } +.fi-social-google-plus:before { content: "\f1ca"; } +.fi-social-hacker-news:before { content: "\f1cb"; } +.fi-social-hi5:before { content: "\f1cc"; } +.fi-social-instagram:before { content: "\f1cd"; } +.fi-social-joomla:before { content: "\f1ce"; } +.fi-social-lastfm:before { content: "\f1cf"; } +.fi-social-linkedin:before { content: "\f1d0"; } +.fi-social-medium:before { content: "\f1d1"; } +.fi-social-myspace:before { content: "\f1d2"; } +.fi-social-orkut:before { content: "\f1d3"; } +.fi-social-path:before { content: "\f1d4"; } +.fi-social-picasa:before { content: "\f1d5"; } +.fi-social-pinterest:before { content: "\f1d6"; } +.fi-social-rdio:before { content: "\f1d7"; } +.fi-social-reddit:before { content: "\f1d8"; } +.fi-social-skillshare:before { content: "\f1d9"; } +.fi-social-skype:before { content: "\f1da"; } +.fi-social-smashing-mag:before { content: "\f1db"; } +.fi-social-snapchat:before { content: "\f1dc"; } +.fi-social-spotify:before { content: "\f1dd"; } +.fi-social-squidoo:before { content: "\f1de"; } +.fi-social-stack-overflow:before { content: "\f1df"; } +.fi-social-steam:before { content: "\f1e0"; } +.fi-social-stumbleupon:before { content: "\f1e1"; } +.fi-social-treehouse:before { content: "\f1e2"; } +.fi-social-tumblr:before { content: "\f1e3"; } +.fi-social-twitter:before { content: "\f1e4"; } +.fi-social-vimeo:before { content: "\f1e5"; } +.fi-social-windows:before { content: "\f1e6"; } +.fi-social-xbox:before { content: "\f1e7"; } +.fi-social-yahoo:before { content: "\f1e8"; } +.fi-social-yelp:before { content: "\f1e9"; } +.fi-social-youtube:before { content: "\f1ea"; } +.fi-social-zerply:before { content: "\f1eb"; } +.fi-social-zurb:before { content: "\f1ec"; } +.fi-sound:before { content: "\f1ed"; } +.fi-star:before { content: "\f1ee"; } +.fi-stop:before { content: "\f1ef"; } +.fi-strikethrough:before { content: "\f1f0"; } +.fi-subscript:before { content: "\f1f1"; } +.fi-superscript:before { content: "\f1f2"; } +.fi-tablet-landscape:before { content: "\f1f3"; } +.fi-tablet-portrait:before { content: "\f1f4"; } +.fi-target-two:before { content: "\f1f5"; } +.fi-target:before { content: "\f1f6"; } +.fi-telephone-accessible:before { content: "\f1f7"; } +.fi-telephone:before { content: "\f1f8"; } +.fi-text-color:before { content: "\f1f9"; } +.fi-thumbnails:before { content: "\f1fa"; } +.fi-ticket:before { content: "\f1fb"; } +.fi-torso-business:before { content: "\f1fc"; } +.fi-torso-female:before { content: "\f1fd"; } +.fi-torso:before { content: "\f1fe"; } +.fi-torsos-all-female:before { content: "\f1ff"; } +.fi-torsos-all:before { content: "\f200"; } +.fi-torsos-female-male:before { content: "\f201"; } +.fi-torsos-male-female:before { content: "\f202"; } +.fi-torsos:before { content: "\f203"; } +.fi-trash:before { content: "\f204"; } +.fi-trees:before { content: "\f205"; } +.fi-trophy:before { content: "\f206"; } +.fi-underline:before { content: "\f207"; } +.fi-universal-access:before { content: "\f208"; } +.fi-unlink:before { content: "\f209"; } +.fi-unlock:before { content: "\f20a"; } +.fi-upload-cloud:before { content: "\f20b"; } +.fi-upload:before { content: "\f20c"; } +.fi-usb:before { content: "\f20d"; } +.fi-video:before { content: "\f20e"; } +.fi-volume-none:before { content: "\f20f"; } +.fi-volume-strike:before { content: "\f210"; } +.fi-volume:before { content: "\f211"; } +.fi-web:before { content: "\f212"; } +.fi-wheelchair:before { content: "\f213"; } +.fi-widget:before { content: "\f214"; } +.fi-wrench:before { content: "\f215"; } +.fi-x-circle:before { content: "\f216"; } +.fi-x:before { content: "\f217"; } +.fi-yen:before { content: "\f218"; } +.fi-zoom-in:before { content: "\f219"; } +.fi-zoom-out:before { content: "\f21a"; } diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.eot b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.eot new file mode 100644 index 0000000000..1746ad407f Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.eot differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.svg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.svg new file mode 100644 index 0000000000..4e014ff890 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.svg @@ -0,0 +1,970 @@ + + + + + +Created by FontForge 20120731 at Fri Aug 23 09:25:55 2013 + By Jordan Humphreys +Created by Jordan Humphreys with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.ttf b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.ttf new file mode 100644 index 0000000000..6cce217ddc Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.ttf differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.woff b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.woff new file mode 100644 index 0000000000..e2cfe25dd3 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation-icons.woff differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation.css b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation.css new file mode 100644 index 0000000000..f63e314c96 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation.css @@ -0,0 +1,6201 @@ +meta.foundation-version { + font-family: "/5.5.1/"; } + +meta.foundation-mq-small { + font-family: "/only screen/"; + width: 0; } + +meta.foundation-mq-small-only { + font-family: "/only screen and (max-width: 40em)/"; + width: 0; } + +meta.foundation-mq-medium { + font-family: "/only screen and (min-width:40.063em)/"; + width: 40.063em; } + +meta.foundation-mq-medium-only { + font-family: "/only screen and (min-width:40.063em) and (max-width:64em)/"; + width: 40.063em; } + +meta.foundation-mq-large { + font-family: "/only screen and (min-width:64.063em)/"; + width: 64.063em; } + +meta.foundation-mq-large-only { + font-family: "/only screen and (min-width:64.063em) and (max-width:90em)/"; + width: 64.063em; } + +meta.foundation-mq-xlarge { + font-family: "/only screen and (min-width:90.063em)/"; + width: 90.063em; } + +meta.foundation-mq-xlarge-only { + font-family: "/only screen and (min-width:90.063em) and (max-width:120em)/"; + width: 90.063em; } + +meta.foundation-mq-xxlarge { + font-family: "/only screen and (min-width:120.063em)/"; + width: 120.063em; } + +meta.foundation-data-attribute-namespace { + font-family: false; } + +html, body { + height: 100%; } + +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +html, +body { + font-size: 100%; } + +body { + background: #fff; + color: #222; + padding: 0; + margin: 0; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + font-style: normal; + line-height: 1.5; + position: relative; + cursor: auto; } + +a:hover { + cursor: pointer; } + +img { + max-width: 100%; + height: auto; } + +img { + -ms-interpolation-mode: bicubic; } + +#map_canvas img, +#map_canvas embed, +#map_canvas object, +.map_canvas img, +.map_canvas embed, +.map_canvas object { + max-width: none !important; } + +.left { + float: left !important; } + +.right { + float: right !important; } + +.clearfix:before, .clearfix:after { + content: " "; + display: table; } +.clearfix:after { + clear: both; } + +.hide { + display: none; } + +.invisible { + visibility: hidden; } + +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +img { + display: inline-block; + vertical-align: middle; } + +textarea { + height: auto; + min-height: 50px; } + +select { + width: 100%; } + +.row { + width: 100%; + margin-left: auto; + margin-right: auto; + margin-top: 0; + margin-bottom: 0; + max-width: 62.5rem; } + .row:before, .row:after { + content: " "; + display: table; } + .row:after { + clear: both; } + .row.collapse > .column, + .row.collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row.collapse .row { + margin-left: 0; + margin-right: 0; } + .row .row { + width: auto; + margin-left: -0.9375rem; + margin-right: -0.9375rem; + margin-top: 0; + margin-bottom: 0; + max-width: none; } + .row .row:before, .row .row:after { + content: " "; + display: table; } + .row .row:after { + clear: both; } + .row .row.collapse { + width: auto; + margin: 0; + max-width: none; } + .row .row.collapse:before, .row .row.collapse:after { + content: " "; + display: table; } + .row .row.collapse:after { + clear: both; } + +.column, +.columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; + width: 100%; + float: left; } + +[class*="column"] + [class*="column"]:last-child { + float: right; } + +[class*="column"] + [class*="column"].end { + float: left; } + +@media only screen { + .small-push-0 { + position: relative; + left: 0%; + right: auto; } + + .small-pull-0 { + position: relative; + right: 0%; + left: auto; } + + .small-push-1 { + position: relative; + left: 8.33333%; + right: auto; } + + .small-pull-1 { + position: relative; + right: 8.33333%; + left: auto; } + + .small-push-2 { + position: relative; + left: 16.66667%; + right: auto; } + + .small-pull-2 { + position: relative; + right: 16.66667%; + left: auto; } + + .small-push-3 { + position: relative; + left: 25%; + right: auto; } + + .small-pull-3 { + position: relative; + right: 25%; + left: auto; } + + .small-push-4 { + position: relative; + left: 33.33333%; + right: auto; } + + .small-pull-4 { + position: relative; + right: 33.33333%; + left: auto; } + + .small-push-5 { + position: relative; + left: 41.66667%; + right: auto; } + + .small-pull-5 { + position: relative; + right: 41.66667%; + left: auto; } + + .small-push-6 { + position: relative; + left: 50%; + right: auto; } + + .small-pull-6 { + position: relative; + right: 50%; + left: auto; } + + .small-push-7 { + position: relative; + left: 58.33333%; + right: auto; } + + .small-pull-7 { + position: relative; + right: 58.33333%; + left: auto; } + + .small-push-8 { + position: relative; + left: 66.66667%; + right: auto; } + + .small-pull-8 { + position: relative; + right: 66.66667%; + left: auto; } + + .small-push-9 { + position: relative; + left: 75%; + right: auto; } + + .small-pull-9 { + position: relative; + right: 75%; + left: auto; } + + .small-push-10 { + position: relative; + left: 83.33333%; + right: auto; } + + .small-pull-10 { + position: relative; + right: 83.33333%; + left: auto; } + + .small-push-11 { + position: relative; + left: 91.66667%; + right: auto; } + + .small-pull-11 { + position: relative; + right: 91.66667%; + left: auto; } + + .column, + .columns { + position: relative; + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .small-1 { + width: 8.33333%; } + + .small-2 { + width: 16.66667%; } + + .small-3 { + width: 25%; } + + .small-4 { + width: 33.33333%; } + + .small-5 { + width: 41.66667%; } + + .small-6 { + width: 50%; } + + .small-7 { + width: 58.33333%; } + + .small-8 { + width: 66.66667%; } + + .small-9 { + width: 75%; } + + .small-10 { + width: 83.33333%; } + + .small-11 { + width: 91.66667%; } + + .small-12 { + width: 100%; } + + .small-offset-0 { + margin-left: 0% !important; } + + .small-offset-1 { + margin-left: 8.33333% !important; } + + .small-offset-2 { + margin-left: 16.66667% !important; } + + .small-offset-3 { + margin-left: 25% !important; } + + .small-offset-4 { + margin-left: 33.33333% !important; } + + .small-offset-5 { + margin-left: 41.66667% !important; } + + .small-offset-6 { + margin-left: 50% !important; } + + .small-offset-7 { + margin-left: 58.33333% !important; } + + .small-offset-8 { + margin-left: 66.66667% !important; } + + .small-offset-9 { + margin-left: 75% !important; } + + .small-offset-10 { + margin-left: 83.33333% !important; } + + .small-offset-11 { + margin-left: 91.66667% !important; } + + .small-reset-order { + margin-left: 0; + margin-right: 0; + left: auto; + right: auto; + float: left; } + + .column.small-centered, + .columns.small-centered { + margin-left: auto; + margin-right: auto; + float: none; } + + .column.small-uncentered, + .columns.small-uncentered { + margin-left: 0; + margin-right: 0; + float: left; } + + .column.small-centered:last-child, + .columns.small-centered:last-child { + float: none; } + + .column.small-uncentered:last-child, + .columns.small-uncentered:last-child { + float: left; } + + .column.small-uncentered.opposite, + .columns.small-uncentered.opposite { + float: right; } + + .row.small-collapse > .column, + .row.small-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row.small-collapse .row { + margin-left: 0; + margin-right: 0; } + .row.small-uncollapse > .column, + .row.small-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } } +@media only screen and (min-width: 40.063em) { + .medium-push-0 { + position: relative; + left: 0%; + right: auto; } + + .medium-pull-0 { + position: relative; + right: 0%; + left: auto; } + + .medium-push-1 { + position: relative; + left: 8.33333%; + right: auto; } + + .medium-pull-1 { + position: relative; + right: 8.33333%; + left: auto; } + + .medium-push-2 { + position: relative; + left: 16.66667%; + right: auto; } + + .medium-pull-2 { + position: relative; + right: 16.66667%; + left: auto; } + + .medium-push-3 { + position: relative; + left: 25%; + right: auto; } + + .medium-pull-3 { + position: relative; + right: 25%; + left: auto; } + + .medium-push-4 { + position: relative; + left: 33.33333%; + right: auto; } + + .medium-pull-4 { + position: relative; + right: 33.33333%; + left: auto; } + + .medium-push-5 { + position: relative; + left: 41.66667%; + right: auto; } + + .medium-pull-5 { + position: relative; + right: 41.66667%; + left: auto; } + + .medium-push-6 { + position: relative; + left: 50%; + right: auto; } + + .medium-pull-6 { + position: relative; + right: 50%; + left: auto; } + + .medium-push-7 { + position: relative; + left: 58.33333%; + right: auto; } + + .medium-pull-7 { + position: relative; + right: 58.33333%; + left: auto; } + + .medium-push-8 { + position: relative; + left: 66.66667%; + right: auto; } + + .medium-pull-8 { + position: relative; + right: 66.66667%; + left: auto; } + + .medium-push-9 { + position: relative; + left: 75%; + right: auto; } + + .medium-pull-9 { + position: relative; + right: 75%; + left: auto; } + + .medium-push-10 { + position: relative; + left: 83.33333%; + right: auto; } + + .medium-pull-10 { + position: relative; + right: 83.33333%; + left: auto; } + + .medium-push-11 { + position: relative; + left: 91.66667%; + right: auto; } + + .medium-pull-11 { + position: relative; + right: 91.66667%; + left: auto; } + + .column, + .columns { + position: relative; + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .medium-1 { + width: 8.33333%; } + + .medium-2 { + width: 16.66667%; } + + .medium-3 { + width: 25%; } + + .medium-4 { + width: 33.33333%; } + + .medium-5 { + width: 41.66667%; } + + .medium-6 { + width: 50%; } + + .medium-7 { + width: 58.33333%; } + + .medium-8 { + width: 66.66667%; } + + .medium-9 { + width: 75%; } + + .medium-10 { + width: 83.33333%; } + + .medium-11 { + width: 91.66667%; } + + .medium-12 { + width: 100%; } + + .medium-offset-0 { + margin-left: 0% !important; } + + .medium-offset-1 { + margin-left: 8.33333% !important; } + + .medium-offset-2 { + margin-left: 16.66667% !important; } + + .medium-offset-3 { + margin-left: 25% !important; } + + .medium-offset-4 { + margin-left: 33.33333% !important; } + + .medium-offset-5 { + margin-left: 41.66667% !important; } + + .medium-offset-6 { + margin-left: 50% !important; } + + .medium-offset-7 { + margin-left: 58.33333% !important; } + + .medium-offset-8 { + margin-left: 66.66667% !important; } + + .medium-offset-9 { + margin-left: 75% !important; } + + .medium-offset-10 { + margin-left: 83.33333% !important; } + + .medium-offset-11 { + margin-left: 91.66667% !important; } + + .medium-reset-order { + margin-left: 0; + margin-right: 0; + left: auto; + right: auto; + float: left; } + + .column.medium-centered, + .columns.medium-centered { + margin-left: auto; + margin-right: auto; + float: none; } + + .column.medium-uncentered, + .columns.medium-uncentered { + margin-left: 0; + margin-right: 0; + float: left; } + + .column.medium-centered:last-child, + .columns.medium-centered:last-child { + float: none; } + + .column.medium-uncentered:last-child, + .columns.medium-uncentered:last-child { + float: left; } + + .column.medium-uncentered.opposite, + .columns.medium-uncentered.opposite { + float: right; } + + .row.medium-collapse > .column, + .row.medium-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row.medium-collapse .row { + margin-left: 0; + margin-right: 0; } + .row.medium-uncollapse > .column, + .row.medium-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .push-0 { + position: relative; + left: 0%; + right: auto; } + + .pull-0 { + position: relative; + right: 0%; + left: auto; } + + .push-1 { + position: relative; + left: 8.33333%; + right: auto; } + + .pull-1 { + position: relative; + right: 8.33333%; + left: auto; } + + .push-2 { + position: relative; + left: 16.66667%; + right: auto; } + + .pull-2 { + position: relative; + right: 16.66667%; + left: auto; } + + .push-3 { + position: relative; + left: 25%; + right: auto; } + + .pull-3 { + position: relative; + right: 25%; + left: auto; } + + .push-4 { + position: relative; + left: 33.33333%; + right: auto; } + + .pull-4 { + position: relative; + right: 33.33333%; + left: auto; } + + .push-5 { + position: relative; + left: 41.66667%; + right: auto; } + + .pull-5 { + position: relative; + right: 41.66667%; + left: auto; } + + .push-6 { + position: relative; + left: 50%; + right: auto; } + + .pull-6 { + position: relative; + right: 50%; + left: auto; } + + .push-7 { + position: relative; + left: 58.33333%; + right: auto; } + + .pull-7 { + position: relative; + right: 58.33333%; + left: auto; } + + .push-8 { + position: relative; + left: 66.66667%; + right: auto; } + + .pull-8 { + position: relative; + right: 66.66667%; + left: auto; } + + .push-9 { + position: relative; + left: 75%; + right: auto; } + + .pull-9 { + position: relative; + right: 75%; + left: auto; } + + .push-10 { + position: relative; + left: 83.33333%; + right: auto; } + + .pull-10 { + position: relative; + right: 83.33333%; + left: auto; } + + .push-11 { + position: relative; + left: 91.66667%; + right: auto; } + + .pull-11 { + position: relative; + right: 91.66667%; + left: auto; } } +@media only screen and (min-width: 64.063em) { + .large-push-0 { + position: relative; + left: 0%; + right: auto; } + + .large-pull-0 { + position: relative; + right: 0%; + left: auto; } + + .large-push-1 { + position: relative; + left: 8.33333%; + right: auto; } + + .large-pull-1 { + position: relative; + right: 8.33333%; + left: auto; } + + .large-push-2 { + position: relative; + left: 16.66667%; + right: auto; } + + .large-pull-2 { + position: relative; + right: 16.66667%; + left: auto; } + + .large-push-3 { + position: relative; + left: 25%; + right: auto; } + + .large-pull-3 { + position: relative; + right: 25%; + left: auto; } + + .large-push-4 { + position: relative; + left: 33.33333%; + right: auto; } + + .large-pull-4 { + position: relative; + right: 33.33333%; + left: auto; } + + .large-push-5 { + position: relative; + left: 41.66667%; + right: auto; } + + .large-pull-5 { + position: relative; + right: 41.66667%; + left: auto; } + + .large-push-6 { + position: relative; + left: 50%; + right: auto; } + + .large-pull-6 { + position: relative; + right: 50%; + left: auto; } + + .large-push-7 { + position: relative; + left: 58.33333%; + right: auto; } + + .large-pull-7 { + position: relative; + right: 58.33333%; + left: auto; } + + .large-push-8 { + position: relative; + left: 66.66667%; + right: auto; } + + .large-pull-8 { + position: relative; + right: 66.66667%; + left: auto; } + + .large-push-9 { + position: relative; + left: 75%; + right: auto; } + + .large-pull-9 { + position: relative; + right: 75%; + left: auto; } + + .large-push-10 { + position: relative; + left: 83.33333%; + right: auto; } + + .large-pull-10 { + position: relative; + right: 83.33333%; + left: auto; } + + .large-push-11 { + position: relative; + left: 91.66667%; + right: auto; } + + .large-pull-11 { + position: relative; + right: 91.66667%; + left: auto; } + + .column, + .columns { + position: relative; + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .large-1 { + width: 8.33333%; } + + .large-2 { + width: 16.66667%; } + + .large-3 { + width: 25%; } + + .large-4 { + width: 33.33333%; } + + .large-5 { + width: 41.66667%; } + + .large-6 { + width: 50%; } + + .large-7 { + width: 58.33333%; } + + .large-8 { + width: 66.66667%; } + + .large-9 { + width: 75%; } + + .large-10 { + width: 83.33333%; } + + .large-11 { + width: 91.66667%; } + + .large-12 { + width: 100%; } + + .large-offset-0 { + margin-left: 0% !important; } + + .large-offset-1 { + margin-left: 8.33333% !important; } + + .large-offset-2 { + margin-left: 16.66667% !important; } + + .large-offset-3 { + margin-left: 25% !important; } + + .large-offset-4 { + margin-left: 33.33333% !important; } + + .large-offset-5 { + margin-left: 41.66667% !important; } + + .large-offset-6 { + margin-left: 50% !important; } + + .large-offset-7 { + margin-left: 58.33333% !important; } + + .large-offset-8 { + margin-left: 66.66667% !important; } + + .large-offset-9 { + margin-left: 75% !important; } + + .large-offset-10 { + margin-left: 83.33333% !important; } + + .large-offset-11 { + margin-left: 91.66667% !important; } + + .large-reset-order { + margin-left: 0; + margin-right: 0; + left: auto; + right: auto; + float: left; } + + .column.large-centered, + .columns.large-centered { + margin-left: auto; + margin-right: auto; + float: none; } + + .column.large-uncentered, + .columns.large-uncentered { + margin-left: 0; + margin-right: 0; + float: left; } + + .column.large-centered:last-child, + .columns.large-centered:last-child { + float: none; } + + .column.large-uncentered:last-child, + .columns.large-uncentered:last-child { + float: left; } + + .column.large-uncentered.opposite, + .columns.large-uncentered.opposite { + float: right; } + + .row.large-collapse > .column, + .row.large-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row.large-collapse .row { + margin-left: 0; + margin-right: 0; } + .row.large-uncollapse > .column, + .row.large-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .push-0 { + position: relative; + left: 0%; + right: auto; } + + .pull-0 { + position: relative; + right: 0%; + left: auto; } + + .push-1 { + position: relative; + left: 8.33333%; + right: auto; } + + .pull-1 { + position: relative; + right: 8.33333%; + left: auto; } + + .push-2 { + position: relative; + left: 16.66667%; + right: auto; } + + .pull-2 { + position: relative; + right: 16.66667%; + left: auto; } + + .push-3 { + position: relative; + left: 25%; + right: auto; } + + .pull-3 { + position: relative; + right: 25%; + left: auto; } + + .push-4 { + position: relative; + left: 33.33333%; + right: auto; } + + .pull-4 { + position: relative; + right: 33.33333%; + left: auto; } + + .push-5 { + position: relative; + left: 41.66667%; + right: auto; } + + .pull-5 { + position: relative; + right: 41.66667%; + left: auto; } + + .push-6 { + position: relative; + left: 50%; + right: auto; } + + .pull-6 { + position: relative; + right: 50%; + left: auto; } + + .push-7 { + position: relative; + left: 58.33333%; + right: auto; } + + .pull-7 { + position: relative; + right: 58.33333%; + left: auto; } + + .push-8 { + position: relative; + left: 66.66667%; + right: auto; } + + .pull-8 { + position: relative; + right: 66.66667%; + left: auto; } + + .push-9 { + position: relative; + left: 75%; + right: auto; } + + .pull-9 { + position: relative; + right: 75%; + left: auto; } + + .push-10 { + position: relative; + left: 83.33333%; + right: auto; } + + .pull-10 { + position: relative; + right: 83.33333%; + left: auto; } + + .push-11 { + position: relative; + left: 91.66667%; + right: auto; } + + .pull-11 { + position: relative; + right: 91.66667%; + left: auto; } } +button, .button { + border-style: solid; + border-width: 0; + cursor: pointer; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: normal; + margin: 0 0 1.25rem; + position: relative; + text-decoration: none; + text-align: center; + -webkit-appearance: none; + -moz-appearance: none; + border-radius: 0; + display: inline-block; + padding-top: 1rem; + padding-right: 2rem; + padding-bottom: 1.0625rem; + padding-left: 2rem; + font-size: 1rem; + background-color: #008CBA; + border-color: #007095; + color: #FFFFFF; + transition: background-color 300ms ease-out; } + button:hover, button:focus, .button:hover, .button:focus { + background-color: #007095; } + button:hover, button:focus, .button:hover, .button:focus { + color: #FFFFFF; } + button.secondary, .button.secondary { + background-color: #e7e7e7; + border-color: #b9b9b9; + color: #333333; } + button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { + background-color: #b9b9b9; } + button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { + color: #333333; } + button.success, .button.success { + background-color: #43AC6A; + border-color: #368a55; + color: #FFFFFF; } + button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { + background-color: #368a55; } + button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { + color: #FFFFFF; } + button.alert, .button.alert { + background-color: #f04124; + border-color: #cf2a0e; + color: #FFFFFF; } + button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { + background-color: #cf2a0e; } + button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { + color: #FFFFFF; } + button.warning, .button.warning { + background-color: #f08a24; + border-color: #cf6e0e; + color: #FFFFFF; } + button.warning:hover, button.warning:focus, .button.warning:hover, .button.warning:focus { + background-color: #cf6e0e; } + button.warning:hover, button.warning:focus, .button.warning:hover, .button.warning:focus { + color: #FFFFFF; } + button.info, .button.info { + background-color: #a0d3e8; + border-color: #61b6d9; + color: #333333; } + button.info:hover, button.info:focus, .button.info:hover, .button.info:focus { + background-color: #61b6d9; } + button.info:hover, button.info:focus, .button.info:hover, .button.info:focus { + color: #FFFFFF; } + button.large, .button.large { + padding-top: 1.125rem; + padding-right: 2.25rem; + padding-bottom: 1.1875rem; + padding-left: 2.25rem; + font-size: 1.25rem; } + button.small, .button.small { + padding-top: 0.875rem; + padding-right: 1.75rem; + padding-bottom: 0.9375rem; + padding-left: 1.75rem; + font-size: 0.8125rem; } + button.tiny, .button.tiny { + padding-top: 0.625rem; + padding-right: 1.25rem; + padding-bottom: 0.6875rem; + padding-left: 1.25rem; + font-size: 0.6875rem; } + button.expand, .button.expand { + padding-right: 0; + padding-left: 0; + width: 100%; } + button.left-align, .button.left-align { + text-align: left; + text-indent: 0.75rem; } + button.right-align, .button.right-align { + text-align: right; + padding-right: 0.75rem; } + button.radius, .button.radius { + border-radius: 3px; } + button.round, .button.round { + border-radius: 1000px; } + button.disabled, button[disabled], .button.disabled, .button[disabled] { + background-color: #008CBA; + border-color: #007095; + color: #FFFFFF; + cursor: default; + opacity: 0.7; + box-shadow: none; } + button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + background-color: #007095; } + button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + color: #FFFFFF; } + button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + background-color: #008CBA; } + button.disabled.secondary, button[disabled].secondary, .button.disabled.secondary, .button[disabled].secondary { + background-color: #e7e7e7; + border-color: #b9b9b9; + color: #333333; + cursor: default; + opacity: 0.7; + box-shadow: none; } + button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { + background-color: #b9b9b9; } + button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { + color: #333333; } + button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { + background-color: #e7e7e7; } + button.disabled.success, button[disabled].success, .button.disabled.success, .button[disabled].success { + background-color: #43AC6A; + border-color: #368a55; + color: #FFFFFF; + cursor: default; + opacity: 0.7; + box-shadow: none; } + button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { + background-color: #368a55; } + button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { + color: #FFFFFF; } + button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { + background-color: #43AC6A; } + button.disabled.alert, button[disabled].alert, .button.disabled.alert, .button[disabled].alert { + background-color: #f04124; + border-color: #cf2a0e; + color: #FFFFFF; + cursor: default; + opacity: 0.7; + box-shadow: none; } + button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { + background-color: #cf2a0e; } + button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { + color: #FFFFFF; } + button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { + background-color: #f04124; } + button.disabled.warning, button[disabled].warning, .button.disabled.warning, .button[disabled].warning { + background-color: #f08a24; + border-color: #cf6e0e; + color: #FFFFFF; + cursor: default; + opacity: 0.7; + box-shadow: none; } + button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus { + background-color: #cf6e0e; } + button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus { + color: #FFFFFF; } + button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus { + background-color: #f08a24; } + button.disabled.info, button[disabled].info, .button.disabled.info, .button[disabled].info { + background-color: #a0d3e8; + border-color: #61b6d9; + color: #333333; + cursor: default; + opacity: 0.7; + box-shadow: none; } + button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus { + background-color: #61b6d9; } + button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus { + color: #FFFFFF; } + button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus { + background-color: #a0d3e8; } + +button::-moz-focus-inner { + border: 0; + padding: 0; } + +@media only screen and (min-width: 40.063em) { + button, .button { + display: inline-block; } } +/* Standard Forms */ +form { + margin: 0 0 1rem; } + +/* Using forms within rows, we need to set some defaults */ +form .row .row { + margin: 0 -0.5rem; } + form .row .row .column, + form .row .row .columns { + padding: 0 0.5rem; } + form .row .row.collapse { + margin: 0; } + form .row .row.collapse .column, + form .row .row.collapse .columns { + padding: 0; } + form .row .row.collapse input { + -webkit-border-bottom-right-radius: 0; + -webkit-border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-top-right-radius: 0; } +form .row input.column, +form .row input.columns, +form .row textarea.column, +form .row textarea.columns { + padding-left: 0.5rem; } + +/* Label Styles */ +label { + font-size: 0.875rem; + color: #4d4d4d; + cursor: pointer; + display: block; + font-weight: normal; + line-height: 1.5; + margin-bottom: 0; + /* Styles for required inputs */ } + label.right { + float: none !important; + text-align: right; } + label.inline { + margin: 0 0 1rem 0; + padding: 0.5625rem 0; } + label small { + text-transform: capitalize; + color: #676767; } + +/* Attach elements to the beginning or end of an input */ +.prefix, +.postfix { + display: block; + position: relative; + z-index: 2; + text-align: center; + width: 100%; + padding-top: 0; + padding-bottom: 0; + border-style: solid; + border-width: 1px; + overflow: visible; + font-size: 0.875rem; + height: 2.3125rem; + line-height: 2.3125rem; } + +/* Adjust padding, alignment and radius if pre/post element is a button */ +.postfix.button { + padding-left: 0; + padding-right: 0; + padding-top: 0; + padding-bottom: 0; + text-align: center; + border: none; } + +.prefix.button { + padding-left: 0; + padding-right: 0; + padding-top: 0; + padding-bottom: 0; + text-align: center; + border: none; } + +.prefix.button.radius { + border-radius: 0; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } + +.postfix.button.radius { + border-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + +.prefix.button.round { + border-radius: 0; + -webkit-border-bottom-left-radius: 1000px; + -webkit-border-top-left-radius: 1000px; + border-bottom-left-radius: 1000px; + border-top-left-radius: 1000px; } + +.postfix.button.round { + border-radius: 0; + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } + +/* Separate prefix and postfix styles when on span or label so buttons keep their own */ +span.prefix, label.prefix { + background: #f2f2f2; + border-right: none; + color: #333333; + border-color: #cccccc; } + +span.postfix, label.postfix { + background: #f2f2f2; + border-left: none; + color: #333333; + border-color: #cccccc; } + +/* We use this to get basic styling on all basic form elements */ +input[type="text"], input[type="password"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="week"], input[type="email"], input[type="number"], input[type="search"], input[type="tel"], input[type="time"], input[type="url"], input[type="color"], textarea { + -webkit-appearance: none; + border-radius: 0; + background-color: #FFFFFF; + font-family: inherit; + border-style: solid; + border-width: 1px; + border-color: #cccccc; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.75); + display: block; + font-size: 0.875rem; + margin: 0 0 1rem 0; + padding: 0.5rem; + height: 2.3125rem; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + transition: all 0.15s linear; } + input[type="text"]:focus, input[type="password"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="week"]:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="time"]:focus, input[type="url"]:focus, input[type="color"]:focus, textarea:focus { + background: #fafafa; + border-color: #999999; + outline: none; } + input[type="text"]:disabled, input[type="password"]:disabled, input[type="date"]:disabled, input[type="datetime"]:disabled, input[type="datetime-local"]:disabled, input[type="month"]:disabled, input[type="week"]:disabled, input[type="email"]:disabled, input[type="number"]:disabled, input[type="search"]:disabled, input[type="tel"]:disabled, input[type="time"]:disabled, input[type="url"]:disabled, input[type="color"]:disabled, textarea:disabled { + background-color: #DDDDDD; + cursor: default; } + input[type="text"][disabled], input[type="text"][readonly], fieldset[disabled] input[type="text"], input[type="password"][disabled], input[type="password"][readonly], fieldset[disabled] input[type="password"], input[type="date"][disabled], input[type="date"][readonly], fieldset[disabled] input[type="date"], input[type="datetime"][disabled], input[type="datetime"][readonly], fieldset[disabled] input[type="datetime"], input[type="datetime-local"][disabled], input[type="datetime-local"][readonly], fieldset[disabled] input[type="datetime-local"], input[type="month"][disabled], input[type="month"][readonly], fieldset[disabled] input[type="month"], input[type="week"][disabled], input[type="week"][readonly], fieldset[disabled] input[type="week"], input[type="email"][disabled], input[type="email"][readonly], fieldset[disabled] input[type="email"], input[type="number"][disabled], input[type="number"][readonly], fieldset[disabled] input[type="number"], input[type="search"][disabled], input[type="search"][readonly], fieldset[disabled] input[type="search"], input[type="tel"][disabled], input[type="tel"][readonly], fieldset[disabled] input[type="tel"], input[type="time"][disabled], input[type="time"][readonly], fieldset[disabled] input[type="time"], input[type="url"][disabled], input[type="url"][readonly], fieldset[disabled] input[type="url"], input[type="color"][disabled], input[type="color"][readonly], fieldset[disabled] input[type="color"], textarea[disabled], textarea[readonly], fieldset[disabled] textarea { + background-color: #DDDDDD; + cursor: default; } + input[type="text"].radius, input[type="password"].radius, input[type="date"].radius, input[type="datetime"].radius, input[type="datetime-local"].radius, input[type="month"].radius, input[type="week"].radius, input[type="email"].radius, input[type="number"].radius, input[type="search"].radius, input[type="tel"].radius, input[type="time"].radius, input[type="url"].radius, input[type="color"].radius, textarea.radius { + border-radius: 3px; } + +form .row .prefix-radius.row.collapse input, +form .row .prefix-radius.row.collapse textarea, +form .row .prefix-radius.row.collapse select, +form .row .prefix-radius.row.collapse button { + border-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } +form .row .prefix-radius.row.collapse .prefix { + border-radius: 0; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } +form .row .postfix-radius.row.collapse input, +form .row .postfix-radius.row.collapse textarea, +form .row .postfix-radius.row.collapse select, +form .row .postfix-radius.row.collapse button { + border-radius: 0; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } +form .row .postfix-radius.row.collapse .postfix { + border-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } +form .row .prefix-round.row.collapse input, +form .row .prefix-round.row.collapse textarea, +form .row .prefix-round.row.collapse select, +form .row .prefix-round.row.collapse button { + border-radius: 0; + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } +form .row .prefix-round.row.collapse .prefix { + border-radius: 0; + -webkit-border-bottom-left-radius: 1000px; + -webkit-border-top-left-radius: 1000px; + border-bottom-left-radius: 1000px; + border-top-left-radius: 1000px; } +form .row .postfix-round.row.collapse input, +form .row .postfix-round.row.collapse textarea, +form .row .postfix-round.row.collapse select, +form .row .postfix-round.row.collapse button { + border-radius: 0; + -webkit-border-bottom-left-radius: 1000px; + -webkit-border-top-left-radius: 1000px; + border-bottom-left-radius: 1000px; + border-top-left-radius: 1000px; } +form .row .postfix-round.row.collapse .postfix { + border-radius: 0; + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } + +input[type="submit"] { + -webkit-appearance: none; + border-radius: 0; } + +/* Respect enforced amount of rows for textarea */ +textarea[rows] { + height: auto; } + +/* Not allow resize out of parent */ +textarea { + max-width: 100%; } + +/* Add height value for select elements to match text input height */ +select { + -webkit-appearance: none !important; + border-radius: 0; + background-color: #FAFAFA; + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+); + background-position: 100% center; + background-repeat: no-repeat; + border-style: solid; + border-width: 1px; + border-color: #cccccc; + padding: 0.5rem; + font-size: 0.875rem; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + color: rgba(0, 0, 0, 0.75); + line-height: normal; + border-radius: 0; + height: 2.3125rem; } + select::-ms-expand { + display: none; } + select.radius { + border-radius: 3px; } + select:hover { + background-color: #f3f3f3; + border-color: #999999; } + select:disabled { + background-color: #DDDDDD; + cursor: default; } + select[multiple] { + height: auto; } + +/* Adjust margin for form elements below */ +input[type="file"], +input[type="checkbox"], +input[type="radio"], +select { + margin: 0 0 1rem 0; } + +input[type="checkbox"] + label, +input[type="radio"] + label { + display: inline-block; + margin-left: 0.5rem; + margin-right: 1rem; + margin-bottom: 0; + vertical-align: baseline; } + +/* Normalize file input width */ +input[type="file"] { + width: 100%; } + +/* HTML5 Number spinners settings */ +/* We add basic fieldset styling */ +fieldset { + border: 1px solid #DDDDDD; + padding: 1.25rem; + margin: 1.125rem 0; } + fieldset legend { + font-weight: bold; + background: #FFFFFF; + padding: 0 0.1875rem; + margin: 0; + margin-left: -0.1875rem; } + +/* Error Handling */ +[data-abide] .error small.error, [data-abide] .error span.error, [data-abide] span.error, [data-abide] small.error { + display: block; + padding: 0.375rem 0.5625rem 0.5625rem; + margin-top: -1px; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: normal; + font-style: italic; + background: #f04124; + color: #FFFFFF; } +[data-abide] span.error, [data-abide] small.error { + display: none; } + +span.error, small.error { + display: block; + padding: 0.375rem 0.5625rem 0.5625rem; + margin-top: -1px; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: normal; + font-style: italic; + background: #f04124; + color: #FFFFFF; } + +.error input, +.error textarea, +.error select { + margin-bottom: 0; } +.error input[type="checkbox"], +.error input[type="radio"] { + margin-bottom: 1rem; } +.error label, +.error label.error { + color: #f04124; } +.error small.error { + display: block; + padding: 0.375rem 0.5625rem 0.5625rem; + margin-top: -1px; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: normal; + font-style: italic; + background: #f04124; + color: #FFFFFF; } +.error > label > small { + color: #676767; + background: transparent; + padding: 0; + text-transform: capitalize; + font-style: normal; + font-size: 60%; + margin: 0; + display: inline; } +.error span.error-message { + display: block; } + +input.error, +textarea.error, +select.error { + margin-bottom: 0; } + +label.error { + color: #f04124; } + +meta.foundation-mq-topbar { + font-family: "/only screen and (min-width:40.063em)/"; + width: 40.063em; } + +/* Wrapped around .top-bar to contain to grid width */ +.contain-to-grid { + width: 100%; + background: #333333; } + .contain-to-grid .top-bar { + margin-bottom: 0; } + +.fixed { + width: 100%; + left: 0; + position: fixed; + top: 0; + z-index: 99; } + .fixed.expanded:not(.top-bar) { + overflow-y: auto; + height: auto; + width: 100%; + max-height: 100%; } + .fixed.expanded:not(.top-bar) .title-area { + position: fixed; + width: 100%; + z-index: 99; } + .fixed.expanded:not(.top-bar) .top-bar-section { + z-index: 98; + margin-top: 2.8125rem; } + +.top-bar { + overflow: hidden; + height: 2.8125rem; + line-height: 2.8125rem; + position: relative; + background: #333333; + margin-bottom: 0; } + .top-bar ul { + margin-bottom: 0; + list-style: none; } + .top-bar .row { + max-width: none; } + .top-bar form, + .top-bar input { + margin-bottom: 0; } + .top-bar input { + height: 1.75rem; + padding-top: .35rem; + padding-bottom: .35rem; + font-size: 0.75rem; } + .top-bar .button, .top-bar button { + padding-top: 0.4125rem; + padding-bottom: 0.4125rem; + margin-bottom: 0; + font-size: 0.75rem; } + @media only screen and (max-width: 40em) { + .top-bar .button, .top-bar button { + position: relative; + top: -1px; } } + .top-bar .title-area { + position: relative; + margin: 0; } + .top-bar .name { + height: 2.8125rem; + margin: 0; + font-size: 16px; } + .top-bar .name h1, .top-bar .name h2, .top-bar .name h3, .top-bar .name h4, .top-bar .name p, .top-bar .name span { + line-height: 2.8125rem; + font-size: 1.0625rem; + margin: 0; } + .top-bar .name h1 a, .top-bar .name h2 a, .top-bar .name h3 a, .top-bar .name h4 a, .top-bar .name p a, .top-bar .name span a { + font-weight: normal; + color: #FFFFFF; + width: 75%; + display: block; + padding: 0 0.9375rem; } + .top-bar .toggle-topbar { + position: absolute; + right: 0; + top: 0; } + .top-bar .toggle-topbar a { + color: #FFFFFF; + text-transform: uppercase; + font-size: 0.8125rem; + font-weight: bold; + position: relative; + display: block; + padding: 0 0.9375rem; + height: 2.8125rem; + line-height: 2.8125rem; } + .top-bar .toggle-topbar.menu-icon { + top: 50%; + margin-top: -16px; } + .top-bar .toggle-topbar.menu-icon a { + height: 34px; + line-height: 33px; + padding: 0 2.5rem 0 0.9375rem; + color: #FFFFFF; + position: relative; } + .top-bar .toggle-topbar.menu-icon a span::after { + content: ""; + position: absolute; + display: block; + height: 0; + top: 50%; + margin-top: -8px; + right: 0.9375rem; + box-shadow: 0 0 0 1px #FFFFFF, 0 7px 0 1px #FFFFFF, 0 14px 0 1px #FFFFFF; + width: 16px; } + .top-bar .toggle-topbar.menu-icon a span:hover:after { + box-shadow: 0 0 0 1px "", 0 7px 0 1px "", 0 14px 0 1px ""; } + .top-bar.expanded { + height: auto; + background: transparent; } + .top-bar.expanded .title-area { + background: #333333; } + .top-bar.expanded .toggle-topbar a { + color: #888888; } + .top-bar.expanded .toggle-topbar a span::after { + box-shadow: 0 0 0 1px #888888, 0 7px 0 1px #888888, 0 14px 0 1px #888888; } + +.top-bar-section { + left: 0; + position: relative; + width: auto; + transition: left 300ms ease-out; } + .top-bar-section ul { + padding: 0; + width: 100%; + height: auto; + display: block; + font-size: 16px; + margin: 0; } + .top-bar-section .divider, + .top-bar-section [role="separator"] { + border-top: solid 1px #1a1a1a; + clear: both; + height: 1px; + width: 100%; } + .top-bar-section ul li { + background: #333333; } + .top-bar-section ul li > a { + display: block; + width: 100%; + color: #FFFFFF; + padding: 12px 0 12px 0; + padding-left: 0.9375rem; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-size: 0.8125rem; + font-weight: normal; + text-transform: none; } + .top-bar-section ul li > a.button { + font-size: 0.8125rem; + padding-right: 0.9375rem; + padding-left: 0.9375rem; + background-color: #008CBA; + border-color: #007095; + color: #FFFFFF; } + .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { + background-color: #007095; } + .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { + color: #FFFFFF; } + .top-bar-section ul li > a.button.secondary { + background-color: #e7e7e7; + border-color: #b9b9b9; + color: #333333; } + .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { + background-color: #b9b9b9; } + .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { + color: #333333; } + .top-bar-section ul li > a.button.success { + background-color: #43AC6A; + border-color: #368a55; + color: #FFFFFF; } + .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { + background-color: #368a55; } + .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { + color: #FFFFFF; } + .top-bar-section ul li > a.button.alert { + background-color: #f04124; + border-color: #cf2a0e; + color: #FFFFFF; } + .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { + background-color: #cf2a0e; } + .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { + color: #FFFFFF; } + .top-bar-section ul li > a.button.warning { + background-color: #f08a24; + border-color: #cf6e0e; + color: #FFFFFF; } + .top-bar-section ul li > a.button.warning:hover, .top-bar-section ul li > a.button.warning:focus { + background-color: #cf6e0e; } + .top-bar-section ul li > a.button.warning:hover, .top-bar-section ul li > a.button.warning:focus { + color: #FFFFFF; } + .top-bar-section ul li > button { + font-size: 0.8125rem; + padding-right: 0.9375rem; + padding-left: 0.9375rem; + background-color: #008CBA; + border-color: #007095; + color: #FFFFFF; } + .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { + background-color: #007095; } + .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { + color: #FFFFFF; } + .top-bar-section ul li > button.secondary { + background-color: #e7e7e7; + border-color: #b9b9b9; + color: #333333; } + .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { + background-color: #b9b9b9; } + .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { + color: #333333; } + .top-bar-section ul li > button.success { + background-color: #43AC6A; + border-color: #368a55; + color: #FFFFFF; } + .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { + background-color: #368a55; } + .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { + color: #FFFFFF; } + .top-bar-section ul li > button.alert { + background-color: #f04124; + border-color: #cf2a0e; + color: #FFFFFF; } + .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { + background-color: #cf2a0e; } + .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { + color: #FFFFFF; } + .top-bar-section ul li > button.warning { + background-color: #f08a24; + border-color: #cf6e0e; + color: #FFFFFF; } + .top-bar-section ul li > button.warning:hover, .top-bar-section ul li > button.warning:focus { + background-color: #cf6e0e; } + .top-bar-section ul li > button.warning:hover, .top-bar-section ul li > button.warning:focus { + color: #FFFFFF; } + .top-bar-section ul li:hover:not(.has-form) > a { + background-color: #555555; + background: #333333; + color: #FFFFFF; } + .top-bar-section ul li.active > a { + background: #008CBA; + color: #FFFFFF; } + .top-bar-section ul li.active > a:hover { + background: #0078a0; + color: #FFFFFF; } + .top-bar-section .has-form { + padding: 0.9375rem; } + .top-bar-section .has-dropdown { + position: relative; } + .top-bar-section .has-dropdown > a:after { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent rgba(255, 255, 255, 0.4); + border-left-style: solid; + margin-right: 0.9375rem; + margin-top: -4.5px; + position: absolute; + top: 50%; + right: 0; } + .top-bar-section .has-dropdown.moved { + position: static; } + .top-bar-section .has-dropdown.moved > .dropdown { + display: block; + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + position: absolute !important; + width: 100%; } + .top-bar-section .has-dropdown.moved > a:after { + display: none; } + .top-bar-section .dropdown { + padding: 0; + position: absolute; + left: 100%; + top: 0; + z-index: 99; + display: block; + position: absolute !important; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); } + .top-bar-section .dropdown li { + width: 100%; + height: auto; } + .top-bar-section .dropdown li a { + font-weight: normal; + padding: 8px 0.9375rem; } + .top-bar-section .dropdown li a.parent-link { + font-weight: normal; } + .top-bar-section .dropdown li.title h5, .top-bar-section .dropdown li.parent-link { + margin-bottom: 0; + margin-top: 0; + font-size: 1.125rem; } + .top-bar-section .dropdown li.title h5 a, .top-bar-section .dropdown li.parent-link a { + color: #FFFFFF; + display: block; } + .top-bar-section .dropdown li.title h5 a:hover, .top-bar-section .dropdown li.parent-link a:hover { + background: none; } + .top-bar-section .dropdown li.has-form { + padding: 8px 0.9375rem; } + .top-bar-section .dropdown li .button, .top-bar-section .dropdown li button { + top: auto; } + .top-bar-section .dropdown label { + padding: 8px 0.9375rem 2px; + margin-bottom: 0; + text-transform: uppercase; + color: #777777; + font-weight: bold; + font-size: 0.625rem; } + +.js-generated { + display: block; } + +@media only screen and (min-width: 40.063em) { + .top-bar { + background: #333333; + overflow: visible; } + .top-bar:before, .top-bar:after { + content: " "; + display: table; } + .top-bar:after { + clear: both; } + .top-bar .toggle-topbar { + display: none; } + .top-bar .title-area { + float: left; } + .top-bar .name h1 a, + .top-bar .name h2 a, + .top-bar .name h3 a, + .top-bar .name h4 a, + .top-bar .name h5 a, + .top-bar .name h6 a { + width: auto; } + .top-bar input, + .top-bar .button, + .top-bar button { + font-size: 0.875rem; + position: relative; + height: 1.75rem; + top: 0.53125rem; } + .top-bar.expanded { + background: #333333; } + + .contain-to-grid .top-bar { + max-width: 62.5rem; + margin: 0 auto; + margin-bottom: 0; } + + .top-bar-section { + transition: none 0 0; + left: 0 !important; } + .top-bar-section ul { + width: auto; + height: auto !important; + display: inline; } + .top-bar-section ul li { + float: left; } + .top-bar-section ul li .js-generated { + display: none; } + .top-bar-section li.hover > a:not(.button) { + background-color: #555555; + background: #333333; + color: #FFFFFF; } + .top-bar-section li:not(.has-form) a:not(.button) { + padding: 0 0.9375rem; + line-height: 2.8125rem; + background: #333333; } + .top-bar-section li:not(.has-form) a:not(.button):hover { + background-color: #555555; + background: #333333; } + .top-bar-section li.active:not(.has-form) a:not(.button) { + padding: 0 0.9375rem; + line-height: 2.8125rem; + color: #FFFFFF; + background: #008CBA; } + .top-bar-section li.active:not(.has-form) a:not(.button):hover { + background: #0078a0; + color: #FFFFFF; } + .top-bar-section .has-dropdown > a { + padding-right: 2.1875rem !important; } + .top-bar-section .has-dropdown > a:after { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: rgba(255, 255, 255, 0.4) transparent transparent transparent; + border-top-style: solid; + margin-top: -2.5px; + top: 1.40625rem; } + .top-bar-section .has-dropdown.moved { + position: relative; } + .top-bar-section .has-dropdown.moved > .dropdown { + display: block; + position: absolute !important; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); } + .top-bar-section .has-dropdown.hover > .dropdown, .top-bar-section .has-dropdown.not-click:hover > .dropdown { + display: block; + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + position: absolute !important; } + .top-bar-section .has-dropdown > a:focus + .dropdown { + display: block; + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + position: absolute !important; } + .top-bar-section .has-dropdown .dropdown li.has-dropdown > a:after { + border: none; + content: "\00bb"; + top: 1rem; + margin-top: -1px; + right: 5px; + line-height: 1.2; } + .top-bar-section .dropdown { + left: 0; + top: auto; + background: transparent; + min-width: 100%; } + .top-bar-section .dropdown li a { + color: #FFFFFF; + line-height: 2.8125rem; + white-space: nowrap; + padding: 12px 0.9375rem; + background: #333333; } + .top-bar-section .dropdown li:not(.has-form):not(.active) > a:not(.button) { + color: #FFFFFF; + background: #333333; } + .top-bar-section .dropdown li:not(.has-form):not(.active):hover > a:not(.button) { + color: #FFFFFF; + background-color: #555555; + background: #333333; } + .top-bar-section .dropdown li label { + white-space: nowrap; + background: #333333; } + .top-bar-section .dropdown li .dropdown { + left: 100%; + top: 0; } + .top-bar-section > ul > .divider, .top-bar-section > ul > [role="separator"] { + border-bottom: none; + border-top: none; + border-right: solid 1px #4e4e4e; + clear: none; + height: 2.8125rem; + width: 0; } + .top-bar-section .has-form { + background: #333333; + padding: 0 0.9375rem; + height: 2.8125rem; } + .top-bar-section .right li .dropdown { + left: auto; + right: 0; } + .top-bar-section .right li .dropdown li .dropdown { + right: 100%; } + .top-bar-section .left li .dropdown { + right: auto; + left: 0; } + .top-bar-section .left li .dropdown li .dropdown { + left: 100%; } + + .no-js .top-bar-section ul li:hover > a { + background-color: #555555; + background: #333333; + color: #FFFFFF; } + .no-js .top-bar-section ul li:active > a { + background: #008CBA; + color: #FFFFFF; } + .no-js .top-bar-section .has-dropdown:hover > .dropdown { + display: block; + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + position: absolute !important; } + .no-js .top-bar-section .has-dropdown > a:focus + .dropdown { + display: block; + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + position: absolute !important; } } +.breadcrumbs { + display: block; + padding: 0.5625rem 0.875rem 0.5625rem; + overflow: hidden; + margin-left: 0; + list-style: none; + border-style: solid; + border-width: 1px; + background-color: #f4f4f4; + border-color: gainsboro; + border-radius: 3px; } + .breadcrumbs > * { + margin: 0; + float: left; + font-size: 0.6875rem; + line-height: 0.6875rem; + text-transform: uppercase; + color: #008CBA; } + .breadcrumbs > *:hover a, .breadcrumbs > *:focus a { + text-decoration: underline; } + .breadcrumbs > * a { + color: #008CBA; } + .breadcrumbs > *.current { + cursor: default; + color: #333333; } + .breadcrumbs > *.current a { + cursor: default; + color: #333333; } + .breadcrumbs > *.current:hover, .breadcrumbs > *.current:hover a, .breadcrumbs > *.current:focus, .breadcrumbs > *.current:focus a { + text-decoration: none; } + .breadcrumbs > *.unavailable { + color: #999999; } + .breadcrumbs > *.unavailable a { + color: #999999; } + .breadcrumbs > *.unavailable:hover, .breadcrumbs > *.unavailable:hover a, .breadcrumbs > *.unavailable:focus, + .breadcrumbs > *.unavailable a:focus { + text-decoration: none; + color: #999999; + cursor: not-allowed; } + .breadcrumbs > *:before { + content: "/"; + color: #AAAAAA; + margin: 0 0.75rem; + position: relative; + top: 1px; } + .breadcrumbs > *:first-child:before { + content: " "; + margin: 0; } + +/* Accessibility - hides the forward slash */ +[aria-label="breadcrumbs"] [aria-hidden="true"]:after { + content: "/"; } + +.alert-box { + border-style: solid; + border-width: 1px; + display: block; + font-weight: normal; + margin-bottom: 1.25rem; + position: relative; + padding: 0.875rem 1.5rem 0.875rem 0.875rem; + font-size: 0.8125rem; + transition: opacity 300ms ease-out; + background-color: #008CBA; + border-color: #0078a0; + color: #FFFFFF; } + .alert-box .close { + font-size: 1.375rem; + padding: 0 6px 4px; + line-height: .9; + position: absolute; + top: 50%; + margin-top: -0.6875rem; + right: 0.25rem; + color: #333333; + opacity: 0.3; + background: inherit; } + .alert-box .close:hover, .alert-box .close:focus { + opacity: 0.5; } + .alert-box.radius { + border-radius: 3px; } + .alert-box.round { + border-radius: 1000px; } + .alert-box.success { + background-color: #43AC6A; + border-color: #3a945b; + color: #FFFFFF; } + .alert-box.alert { + background-color: #f04124; + border-color: #de2d0f; + color: #FFFFFF; } + .alert-box.secondary { + background-color: #e7e7e7; + border-color: #c7c7c7; + color: #4f4f4f; } + .alert-box.warning { + background-color: #f08a24; + border-color: #de770f; + color: #FFFFFF; } + .alert-box.info { + background-color: #a0d3e8; + border-color: #74bfdd; + color: #4f4f4f; } + .alert-box.alert-close { + opacity: 0; } + +.inline-list { + margin: 0 auto 1.0625rem auto; + margin-left: -1.375rem; + margin-right: 0; + padding: 0; + list-style: none; + overflow: hidden; } + .inline-list > li { + list-style: none; + float: left; + margin-left: 1.375rem; + display: block; } + .inline-list > li > * { + display: block; } + +.button-group { + list-style: none; + margin: 0; + left: 0; } + .button-group:before, .button-group:after { + content: " "; + display: table; } + .button-group:after { + clear: both; } + .button-group.even-2 li { + margin: 0 -2px; + display: inline-block; + width: 50%; } + .button-group.even-2 li > button, .button-group.even-2 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-2 li:first-child button, .button-group.even-2 li:first-child .button { + border-left: 0; } + .button-group.even-2 li button, .button-group.even-2 li .button { + width: 100%; } + .button-group.even-3 li { + margin: 0 -2px; + display: inline-block; + width: 33.33333%; } + .button-group.even-3 li > button, .button-group.even-3 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-3 li:first-child button, .button-group.even-3 li:first-child .button { + border-left: 0; } + .button-group.even-3 li button, .button-group.even-3 li .button { + width: 100%; } + .button-group.even-4 li { + margin: 0 -2px; + display: inline-block; + width: 25%; } + .button-group.even-4 li > button, .button-group.even-4 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-4 li:first-child button, .button-group.even-4 li:first-child .button { + border-left: 0; } + .button-group.even-4 li button, .button-group.even-4 li .button { + width: 100%; } + .button-group.even-5 li { + margin: 0 -2px; + display: inline-block; + width: 20%; } + .button-group.even-5 li > button, .button-group.even-5 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-5 li:first-child button, .button-group.even-5 li:first-child .button { + border-left: 0; } + .button-group.even-5 li button, .button-group.even-5 li .button { + width: 100%; } + .button-group.even-6 li { + margin: 0 -2px; + display: inline-block; + width: 16.66667%; } + .button-group.even-6 li > button, .button-group.even-6 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-6 li:first-child button, .button-group.even-6 li:first-child .button { + border-left: 0; } + .button-group.even-6 li button, .button-group.even-6 li .button { + width: 100%; } + .button-group.even-7 li { + margin: 0 -2px; + display: inline-block; + width: 14.28571%; } + .button-group.even-7 li > button, .button-group.even-7 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-7 li:first-child button, .button-group.even-7 li:first-child .button { + border-left: 0; } + .button-group.even-7 li button, .button-group.even-7 li .button { + width: 100%; } + .button-group.even-8 li { + margin: 0 -2px; + display: inline-block; + width: 12.5%; } + .button-group.even-8 li > button, .button-group.even-8 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-8 li:first-child button, .button-group.even-8 li:first-child .button { + border-left: 0; } + .button-group.even-8 li button, .button-group.even-8 li .button { + width: 100%; } + .button-group > li { + margin: 0 -2px; + display: inline-block; } + .button-group > li > button, .button-group > li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group > li:first-child button, .button-group > li:first-child .button { + border-left: 0; } + .button-group.stack > li { + margin: 0 -2px; + display: inline-block; + display: block; + margin: 0; + float: none; } + .button-group.stack > li > button, .button-group.stack > li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.stack > li:first-child button, .button-group.stack > li:first-child .button { + border-left: 0; } + .button-group.stack > li > button, .button-group.stack > li .button { + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + margin: 0; + display: block; } + .button-group.stack > li > button { + width: 100%; } + .button-group.stack > li:first-child button, .button-group.stack > li:first-child .button { + border-top: 0; } + .button-group.stack-for-small > li { + margin: 0 -2px; + display: inline-block; } + .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button { + border-left: 0; } + @media only screen and (max-width: 40em) { + .button-group.stack-for-small > li { + margin: 0 -2px; + display: inline-block; + display: block; + margin: 0; } + .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button { + border-left: 0; } + .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button { + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + margin: 0; + display: block; } + .button-group.stack-for-small > li > button { + width: 100%; } + .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button { + border-top: 0; } } + .button-group.radius > * { + margin: 0 -2px; + display: inline-block; } + .button-group.radius > * > button, .button-group.radius > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.radius > *:first-child button, .button-group.radius > *:first-child .button { + border-left: 0; } + .button-group.radius > *, .button-group.radius > * > a, .button-group.radius > * > button, .button-group.radius > * > .button { + border-radius: 0; } + .button-group.radius > *:first-child, .button-group.radius > *:first-child > a, .button-group.radius > *:first-child > button, .button-group.radius > *:first-child > .button { + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } + .button-group.radius > *:last-child, .button-group.radius > *:last-child > a, .button-group.radius > *:last-child > button, .button-group.radius > *:last-child > .button { + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + .button-group.radius.stack > * { + margin: 0 -2px; + display: inline-block; + display: block; + margin: 0; } + .button-group.radius.stack > * > button, .button-group.radius.stack > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.radius.stack > *:first-child button, .button-group.radius.stack > *:first-child .button { + border-left: 0; } + .button-group.radius.stack > * > button, .button-group.radius.stack > * .button { + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + margin: 0; + display: block; } + .button-group.radius.stack > * > button { + width: 100%; } + .button-group.radius.stack > *:first-child button, .button-group.radius.stack > *:first-child .button { + border-top: 0; } + .button-group.radius.stack > *, .button-group.radius.stack > * > a, .button-group.radius.stack > * > button, .button-group.radius.stack > * > .button { + border-radius: 0; } + .button-group.radius.stack > *:first-child, .button-group.radius.stack > *:first-child > a, .button-group.radius.stack > *:first-child > button, .button-group.radius.stack > *:first-child > .button { + -webkit-top-left-radius: 3px; + -webkit-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .button-group.radius.stack > *:last-child, .button-group.radius.stack > *:last-child > a, .button-group.radius.stack > *:last-child > button, .button-group.radius.stack > *:last-child > .button { + -webkit-bottom-left-radius: 3px; + -webkit-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; } + @media only screen and (min-width: 40.063em) { + .button-group.radius.stack-for-small > * { + margin: 0 -2px; + display: inline-block; } + .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button { + border-left: 0; } + .button-group.radius.stack-for-small > *, .button-group.radius.stack-for-small > * > a, .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * > .button { + border-radius: 0; } + .button-group.radius.stack-for-small > *:first-child, .button-group.radius.stack-for-small > *:first-child > a, .button-group.radius.stack-for-small > *:first-child > button, .button-group.radius.stack-for-small > *:first-child > .button { + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } + .button-group.radius.stack-for-small > *:last-child, .button-group.radius.stack-for-small > *:last-child > a, .button-group.radius.stack-for-small > *:last-child > button, .button-group.radius.stack-for-small > *:last-child > .button { + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } } + @media only screen and (max-width: 40em) { + .button-group.radius.stack-for-small > * { + margin: 0 -2px; + display: inline-block; + display: block; + margin: 0; } + .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button { + border-left: 0; } + .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button { + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + margin: 0; + display: block; } + .button-group.radius.stack-for-small > * > button { + width: 100%; } + .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button { + border-top: 0; } + .button-group.radius.stack-for-small > *, .button-group.radius.stack-for-small > * > a, .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * > .button { + border-radius: 0; } + .button-group.radius.stack-for-small > *:first-child, .button-group.radius.stack-for-small > *:first-child > a, .button-group.radius.stack-for-small > *:first-child > button, .button-group.radius.stack-for-small > *:first-child > .button { + -webkit-top-left-radius: 3px; + -webkit-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .button-group.radius.stack-for-small > *:last-child, .button-group.radius.stack-for-small > *:last-child > a, .button-group.radius.stack-for-small > *:last-child > button, .button-group.radius.stack-for-small > *:last-child > .button { + -webkit-bottom-left-radius: 3px; + -webkit-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; } } + .button-group.round > * { + margin: 0 -2px; + display: inline-block; } + .button-group.round > * > button, .button-group.round > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.round > *:first-child button, .button-group.round > *:first-child .button { + border-left: 0; } + .button-group.round > *, .button-group.round > * > a, .button-group.round > * > button, .button-group.round > * > .button { + border-radius: 0; } + .button-group.round > *:first-child, .button-group.round > *:first-child > a, .button-group.round > *:first-child > button, .button-group.round > *:first-child > .button { + -webkit-border-bottom-left-radius: 1000px; + -webkit-border-top-left-radius: 1000px; + border-bottom-left-radius: 1000px; + border-top-left-radius: 1000px; } + .button-group.round > *:last-child, .button-group.round > *:last-child > a, .button-group.round > *:last-child > button, .button-group.round > *:last-child > .button { + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } + .button-group.round.stack > * { + margin: 0 -2px; + display: inline-block; + display: block; + margin: 0; } + .button-group.round.stack > * > button, .button-group.round.stack > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.round.stack > *:first-child button, .button-group.round.stack > *:first-child .button { + border-left: 0; } + .button-group.round.stack > * > button, .button-group.round.stack > * .button { + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + margin: 0; + display: block; } + .button-group.round.stack > * > button { + width: 100%; } + .button-group.round.stack > *:first-child button, .button-group.round.stack > *:first-child .button { + border-top: 0; } + .button-group.round.stack > *, .button-group.round.stack > * > a, .button-group.round.stack > * > button, .button-group.round.stack > * > .button { + border-radius: 0; } + .button-group.round.stack > *:first-child, .button-group.round.stack > *:first-child > a, .button-group.round.stack > *:first-child > button, .button-group.round.stack > *:first-child > .button { + -webkit-top-left-radius: 1rem; + -webkit-top-right-radius: 1rem; + border-top-left-radius: 1rem; + border-top-right-radius: 1rem; } + .button-group.round.stack > *:last-child, .button-group.round.stack > *:last-child > a, .button-group.round.stack > *:last-child > button, .button-group.round.stack > *:last-child > .button { + -webkit-bottom-left-radius: 1rem; + -webkit-bottom-right-radius: 1rem; + border-bottom-left-radius: 1rem; + border-bottom-right-radius: 1rem; } + @media only screen and (min-width: 40.063em) { + .button-group.round.stack-for-small > * { + margin: 0 -2px; + display: inline-block; } + .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button { + border-left: 0; } + .button-group.round.stack-for-small > *, .button-group.round.stack-for-small > * > a, .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * > .button { + border-radius: 0; } + .button-group.round.stack-for-small > *:first-child, .button-group.round.stack-for-small > *:first-child > a, .button-group.round.stack-for-small > *:first-child > button, .button-group.round.stack-for-small > *:first-child > .button { + -webkit-border-bottom-left-radius: 1000px; + -webkit-border-top-left-radius: 1000px; + border-bottom-left-radius: 1000px; + border-top-left-radius: 1000px; } + .button-group.round.stack-for-small > *:last-child, .button-group.round.stack-for-small > *:last-child > a, .button-group.round.stack-for-small > *:last-child > button, .button-group.round.stack-for-small > *:last-child > .button { + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } } + @media only screen and (max-width: 40em) { + .button-group.round.stack-for-small > * { + margin: 0 -2px; + display: inline-block; + display: block; + margin: 0; } + .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button { + border-left: 0; } + .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button { + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + margin: 0; + display: block; } + .button-group.round.stack-for-small > * > button { + width: 100%; } + .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button { + border-top: 0; } + .button-group.round.stack-for-small > *, .button-group.round.stack-for-small > * > a, .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * > .button { + border-radius: 0; } + .button-group.round.stack-for-small > *:first-child, .button-group.round.stack-for-small > *:first-child > a, .button-group.round.stack-for-small > *:first-child > button, .button-group.round.stack-for-small > *:first-child > .button { + -webkit-top-left-radius: 1rem; + -webkit-top-right-radius: 1rem; + border-top-left-radius: 1rem; + border-top-right-radius: 1rem; } + .button-group.round.stack-for-small > *:last-child, .button-group.round.stack-for-small > *:last-child > a, .button-group.round.stack-for-small > *:last-child > button, .button-group.round.stack-for-small > *:last-child > .button { + -webkit-bottom-left-radius: 1rem; + -webkit-bottom-right-radius: 1rem; + border-bottom-left-radius: 1rem; + border-bottom-right-radius: 1rem; } } + +.button-bar:before, .button-bar:after { + content: " "; + display: table; } +.button-bar:after { + clear: both; } +.button-bar .button-group { + float: left; + margin-right: 0.625rem; } + .button-bar .button-group div { + overflow: hidden; } + +/* Panels */ +.panel { + border-style: solid; + border-width: 1px; + border-color: #d8d8d8; + margin-bottom: 1.25rem; + padding: 1.25rem; + background: #f2f2f2; + color: #333333; } + .panel > :first-child { + margin-top: 0; } + .panel > :last-child { + margin-bottom: 0; } + .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6, .panel p, .panel li, .panel dl { + color: #333333; } + .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6 { + line-height: 1; + margin-bottom: 0.625rem; } + .panel h1.subheader, .panel h2.subheader, .panel h3.subheader, .panel h4.subheader, .panel h5.subheader, .panel h6.subheader { + line-height: 1.4; } + .panel.callout { + border-style: solid; + border-width: 1px; + border-color: #b6edff; + margin-bottom: 1.25rem; + padding: 1.25rem; + background: #ecfaff; + color: #333333; } + .panel.callout > :first-child { + margin-top: 0; } + .panel.callout > :last-child { + margin-bottom: 0; } + .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6, .panel.callout p, .panel.callout li, .panel.callout dl { + color: #333333; } + .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6 { + line-height: 1; + margin-bottom: 0.625rem; } + .panel.callout h1.subheader, .panel.callout h2.subheader, .panel.callout h3.subheader, .panel.callout h4.subheader, .panel.callout h5.subheader, .panel.callout h6.subheader { + line-height: 1.4; } + .panel.callout a:not(.button) { + color: #008CBA; } + .panel.callout a:not(.button):hover, .panel.callout a:not(.button):focus { + color: #0078a0; } + .panel.radius { + border-radius: 3px; } + +.dropdown.button, button.dropdown { + position: relative; + outline: none; + padding-right: 3.5625rem; } + .dropdown.button::after, button.dropdown::after { + position: absolute; + content: ""; + width: 0; + height: 0; + display: block; + border-style: solid; + border-color: #FFFFFF transparent transparent transparent; + top: 50%; } + .dropdown.button::after, button.dropdown::after { + border-width: 0.375rem; + right: 1.40625rem; + margin-top: -0.15625rem; } + .dropdown.button::after, button.dropdown::after { + border-color: #FFFFFF transparent transparent transparent; } + .dropdown.button.tiny, button.dropdown.tiny { + padding-right: 2.625rem; } + .dropdown.button.tiny:after, button.dropdown.tiny:after { + border-width: 0.375rem; + right: 1.125rem; + margin-top: -0.125rem; } + .dropdown.button.tiny::after, button.dropdown.tiny::after { + border-color: #FFFFFF transparent transparent transparent; } + .dropdown.button.small, button.dropdown.small { + padding-right: 3.0625rem; } + .dropdown.button.small::after, button.dropdown.small::after { + border-width: 0.4375rem; + right: 1.3125rem; + margin-top: -0.15625rem; } + .dropdown.button.small::after, button.dropdown.small::after { + border-color: #FFFFFF transparent transparent transparent; } + .dropdown.button.large, button.dropdown.large { + padding-right: 3.625rem; } + .dropdown.button.large::after, button.dropdown.large::after { + border-width: 0.3125rem; + right: 1.71875rem; + margin-top: -0.15625rem; } + .dropdown.button.large::after, button.dropdown.large::after { + border-color: #FFFFFF transparent transparent transparent; } + .dropdown.button.secondary:after, button.dropdown.secondary:after { + border-color: #333333 transparent transparent transparent; } + +/* Image Thumbnails */ +.th { + line-height: 0; + display: inline-block; + border: solid 4px #FFFFFF; + max-width: 100%; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); + transition: all 200ms ease-out; } + .th:hover, .th:focus { + box-shadow: 0 0 6px 1px rgba(0, 140, 186, 0.5); } + .th.radius { + border-radius: 3px; } + +.toolbar { + background: #333333; + width: 100%; + font-size: 0; + display: inline-block; } + .toolbar.label-bottom .tab .tab-content i, .toolbar.label-bottom .tab .tab-content img { + margin-bottom: 10px; } + .toolbar.label-right .tab .tab-content i, .toolbar.label-right .tab .tab-content img { + margin-right: 10px; + display: inline-block; } + .toolbar.label-right .tab .tab-content label { + display: inline-block; } + .toolbar.vertical.label-right .tab .tab-content { + text-align: left; } + .toolbar.vertical { + height: 100%; + width: auto; } + .toolbar.vertical .tab { + width: auto; + margin: auto; + float: none; } + .toolbar .tab { + text-align: center; + width: 25%; + margin: 0 auto; + display: block; + padding: 20px; + float: left; } + .toolbar .tab:hover { + background: rgba(255, 255, 255, 0.1); } + +.toolbar .tab-content { + font-size: 16px; + text-align: center; } + .toolbar .tab-content label { + color: #CCCCCC; } + .toolbar .tab-content i { + font-size: 30px; + display: block; + margin: 0 auto; + color: #CCCCCC; + vertical-align: middle; } + .toolbar .tab-content img { + width: 30px; + height: 30px; + display: block; + margin: 0 auto; } + +/* Pricing Tables */ +.pricing-table { + border: solid 1px #DDDDDD; + margin-left: 0; + margin-bottom: 1.25rem; } + .pricing-table * { + list-style: none; + line-height: 1; } + .pricing-table .title { + background-color: #333333; + padding: 0.9375rem 1.25rem; + text-align: center; + color: #EEEEEE; + font-weight: normal; + font-size: 1rem; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; } + .pricing-table .price { + background-color: #F6F6F6; + padding: 0.9375rem 1.25rem; + text-align: center; + color: #333333; + font-weight: normal; + font-size: 2rem; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; } + .pricing-table .description { + background-color: #FFFFFF; + padding: 0.9375rem; + text-align: center; + color: #777777; + font-size: 0.75rem; + font-weight: normal; + line-height: 1.4; + border-bottom: dotted 1px #DDDDDD; } + .pricing-table .bullet-item { + background-color: #FFFFFF; + padding: 0.9375rem; + text-align: center; + color: #333333; + font-size: 0.875rem; + font-weight: normal; + border-bottom: dotted 1px #DDDDDD; } + .pricing-table .cta-button { + background-color: #FFFFFF; + text-align: center; + padding: 1.25rem 1.25rem 0; } + +@-webkit-keyframes rotate { + from { + -webkit-transform: rotate(0deg); } + to { + -webkit-transform: rotate(360deg); } } +@-moz-keyframes rotate { + from { + -moz-transform: rotate(0deg); } + to { + -moz-transform: rotate(360deg); } } +@-o-keyframes rotate { + from { + -o-transform: rotate(0deg); } + to { + -o-transform: rotate(360deg); } } +@keyframes rotate { + from { + transform: rotate(0deg); } + to { + transform: rotate(360deg); } } +/* Orbit Graceful Loading */ +.slideshow-wrapper { + position: relative; } + .slideshow-wrapper ul { + list-style-type: none; + margin: 0; } + .slideshow-wrapper ul li, + .slideshow-wrapper ul li .orbit-caption { + display: none; } + .slideshow-wrapper ul li:first-child { + display: block; } + .slideshow-wrapper .orbit-container { + background-color: transparent; } + .slideshow-wrapper .orbit-container li { + display: block; } + .slideshow-wrapper .orbit-container li .orbit-caption { + display: block; } + .slideshow-wrapper .orbit-container .orbit-bullets li { + display: inline-block; } + .slideshow-wrapper .preloader { + display: block; + width: 40px; + height: 40px; + position: absolute; + top: 50%; + left: 50%; + margin-top: -20px; + margin-left: -20px; + border: solid 3px; + border-color: #555555 #FFFFFF; + border-radius: 1000px; + animation-name: rotate; + animation-duration: 1.5s; + animation-iteration-count: infinite; + animation-timing-function: linear; } + +.orbit-container { + overflow: hidden; + width: 100%; + position: relative; + background: none; } + .orbit-container .orbit-slides-container { + list-style: none; + margin: 0; + padding: 0; + position: relative; + -webkit-transform: translateZ(0); } + .orbit-container .orbit-slides-container img { + display: block; + max-width: 100%; } + .orbit-container .orbit-slides-container > * { + position: absolute; + top: 0; + width: 100%; + margin-left: 100%; } + .orbit-container .orbit-slides-container > *:first-child { + margin-left: 0; } + .orbit-container .orbit-slides-container > * .orbit-caption { + position: absolute; + bottom: 0; + background-color: rgba(51, 51, 51, 0.8); + color: #FFFFFF; + width: 100%; + padding: 0.625rem 0.875rem; + font-size: 0.875rem; } + .orbit-container .orbit-slide-number { + position: absolute; + top: 10px; + left: 10px; + font-size: 12px; + color: #FFFFFF; + background: transparent; + z-index: 10; } + .orbit-container .orbit-slide-number span { + font-weight: 700; + padding: 0.3125rem; } + .orbit-container .orbit-timer { + position: absolute; + top: 12px; + right: 10px; + height: 6px; + width: 100px; + z-index: 10; } + .orbit-container .orbit-timer .orbit-progress { + height: 3px; + background-color: rgba(255, 255, 255, 0.3); + display: block; + width: 0; + position: relative; + right: 20px; + top: 5px; } + .orbit-container .orbit-timer > span { + display: none; + position: absolute; + top: 0; + right: 0; + width: 11px; + height: 14px; + border: solid 4px #FFFFFF; + border-top: none; + border-bottom: none; } + .orbit-container .orbit-timer.paused > span { + right: -4px; + top: 0; + width: 11px; + height: 14px; + border: inset 8px; + border-left-style: solid; + border-color: transparent; + border-left-color: #FFFFFF; } + .orbit-container .orbit-timer.paused > span.dark { + border-left-color: #333333; } + .orbit-container:hover .orbit-timer > span { + display: block; } + .orbit-container .orbit-prev, + .orbit-container .orbit-next { + position: absolute; + top: 45%; + margin-top: -25px; + width: 36px; + height: 60px; + line-height: 50px; + color: white; + background-color: transparent; + text-indent: -9999px !important; + z-index: 10; } + .orbit-container .orbit-prev:hover, + .orbit-container .orbit-next:hover { + background-color: rgba(0, 0, 0, 0.3); } + .orbit-container .orbit-prev > span, + .orbit-container .orbit-next > span { + position: absolute; + top: 50%; + margin-top: -10px; + display: block; + width: 0; + height: 0; + border: inset 10px; } + .orbit-container .orbit-prev { + left: 0; } + .orbit-container .orbit-prev > span { + border-right-style: solid; + border-color: transparent; + border-right-color: #FFFFFF; } + .orbit-container .orbit-prev:hover > span { + border-right-color: #FFFFFF; } + .orbit-container .orbit-next { + right: 0; } + .orbit-container .orbit-next > span { + border-color: transparent; + border-left-style: solid; + border-left-color: #FFFFFF; + left: 50%; + margin-left: -4px; } + .orbit-container .orbit-next:hover > span { + border-left-color: #FFFFFF; } + +.orbit-bullets-container { + text-align: center; } + +.orbit-bullets { + margin: 0 auto 30px auto; + overflow: hidden; + position: relative; + top: 10px; + float: none; + text-align: center; + display: block; } + .orbit-bullets li { + cursor: pointer; + display: inline-block; + width: 0.5625rem; + height: 0.5625rem; + background: #CCCCCC; + float: none; + margin-right: 6px; + border-radius: 1000px; } + .orbit-bullets li.active { + background: #999999; } + .orbit-bullets li:last-child { + margin-right: 0; } + +.touch .orbit-container .orbit-prev, +.touch .orbit-container .orbit-next { + display: none; } +.touch .orbit-bullets { + display: none; } + +@media only screen and (min-width: 40.063em) { + .touch .orbit-container .orbit-prev, + .touch .orbit-container .orbit-next { + display: inherit; } + .touch .orbit-bullets { + display: block; } } +@media only screen and (max-width: 40em) { + .orbit-stack-on-small .orbit-slides-container { + height: auto !important; } + .orbit-stack-on-small .orbit-slides-container > * { + position: relative; + margin: 0 !important; + opacity: 1 !important; } + .orbit-stack-on-small .orbit-slide-number { + display: none; } + + .orbit-timer { + display: none; } + + .orbit-next, .orbit-prev { + display: none; } + + .orbit-bullets { + display: none; } } +[data-magellan-expedition], [data-magellan-expedition-clone] { + background: #FFFFFF; + z-index: 50; + min-width: 100%; + padding: 10px; } + [data-magellan-expedition] .sub-nav, [data-magellan-expedition-clone] .sub-nav { + margin-bottom: 0; } + [data-magellan-expedition] .sub-nav dd, [data-magellan-expedition-clone] .sub-nav dd { + margin-bottom: 0; } + [data-magellan-expedition] .sub-nav a, [data-magellan-expedition-clone] .sub-nav a { + line-height: 1.8em; } + +.icon-bar { + width: 100%; + font-size: 0; + display: inline-block; + background: #333333; } + .icon-bar > * { + text-align: center; + font-size: 1rem; + width: 25%; + margin: 0 auto; + display: block; + padding: 1.25rem; + float: left; } + .icon-bar > * i, .icon-bar > * img { + display: block; + margin: 0 auto; } + .icon-bar > * i + label, .icon-bar > * img + label { + margin-top: .0625rem; } + .icon-bar > * i { + font-size: 1.875rem; + vertical-align: middle; } + .icon-bar > * img { + width: 1.875rem; + height: 1.875rem; } + .icon-bar.label-right > * i, .icon-bar.label-right > * img { + margin: 0 .0625rem 0 0; + display: inline-block; } + .icon-bar.label-right > * i + label, .icon-bar.label-right > * img + label { + margin-top: 0; } + .icon-bar.label-right > * label { + display: inline-block; } + .icon-bar.vertical.label-right > * { + text-align: left; } + .icon-bar.vertical, .icon-bar.small-vertical { + height: 100%; + width: auto; } + .icon-bar.vertical .item, .icon-bar.small-vertical .item { + width: auto; + margin: auto; + float: none; } + @media only screen and (min-width: 40.063em) { + .icon-bar.medium-vertical { + height: 100%; + width: auto; } + .icon-bar.medium-vertical .item { + width: auto; + margin: auto; + float: none; } } + @media only screen and (min-width: 64.063em) { + .icon-bar.large-vertical { + height: 100%; + width: auto; } + .icon-bar.large-vertical .item { + width: auto; + margin: auto; + float: none; } } + .icon-bar > * { + font-size: 1rem; + padding: 1.25rem; } + .icon-bar > * i + label, .icon-bar > * img + label { + margin-top: .0625rem; } + .icon-bar > * i { + font-size: 1.875rem; } + .icon-bar > * img { + width: 1.875rem; + height: 1.875rem; } + .icon-bar > * label { + color: #FFFFFF; } + .icon-bar > * i { + color: #FFFFFF; } + .icon-bar > a:hover { + background: #008CBA; } + .icon-bar > a:hover label { + color: #FFFFFF; } + .icon-bar > a:hover i { + color: #FFFFFF; } + .icon-bar > a.active { + background: #008CBA; } + .icon-bar > a.active label { + color: #FFFFFF; } + .icon-bar > a.active i { + color: #FFFFFF; } + .icon-bar .item.disabled { + opacity: 0.7; + cursor: not-allowed; + pointer-events: none; } + .icon-bar .item.disabled > * { + opacity: 0.7; + cursor: not-allowed; } + +.icon-bar.two-up .item { + width: 50%; } +.icon-bar.two-up.vertical .item, .icon-bar.two-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.063em) { + .icon-bar.two-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.063em) { + .icon-bar.two-up.large-vertical .item { + width: auto; } } +.icon-bar.three-up .item { + width: 33.3333%; } +.icon-bar.three-up.vertical .item, .icon-bar.three-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.063em) { + .icon-bar.three-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.063em) { + .icon-bar.three-up.large-vertical .item { + width: auto; } } +.icon-bar.four-up .item { + width: 25%; } +.icon-bar.four-up.vertical .item, .icon-bar.four-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.063em) { + .icon-bar.four-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.063em) { + .icon-bar.four-up.large-vertical .item { + width: auto; } } +.icon-bar.five-up .item { + width: 20%; } +.icon-bar.five-up.vertical .item, .icon-bar.five-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.063em) { + .icon-bar.five-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.063em) { + .icon-bar.five-up.large-vertical .item { + width: auto; } } +.icon-bar.six-up .item { + width: 16.66667%; } +.icon-bar.six-up.vertical .item, .icon-bar.six-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.063em) { + .icon-bar.six-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.063em) { + .icon-bar.six-up.large-vertical .item { + width: auto; } } +.icon-bar.seven-up .item { + width: 14.28571%; } +.icon-bar.seven-up.vertical .item, .icon-bar.seven-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.063em) { + .icon-bar.seven-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.063em) { + .icon-bar.seven-up.large-vertical .item { + width: auto; } } +.icon-bar.eight-up .item { + width: 12.5%; } +.icon-bar.eight-up.vertical .item, .icon-bar.eight-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.063em) { + .icon-bar.eight-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.063em) { + .icon-bar.eight-up.large-vertical .item { + width: auto; } } + +.tabs { + margin-bottom: 0 !important; + margin-left: 0; } + .tabs:before, .tabs:after { + content: " "; + display: table; } + .tabs:after { + clear: both; } + .tabs dd, .tabs .tab-title { + position: relative; + margin-bottom: 0 !important; + list-style: none; + float: left; } + .tabs dd > a, .tabs .tab-title > a { + display: block; + background-color: #EFEFEF; + color: #222222; + padding: 1rem 2rem; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-size: 1rem; } + .tabs dd > a:hover, .tabs .tab-title > a:hover { + background-color: #e1e1e1; } + .tabs dd > a:focus, .tabs .tab-title > a:focus { + outline: none; } + .tabs dd.active a, .tabs .tab-title.active a { + background-color: #FFFFFF; + color: #222222; } + .tabs.radius dd:first-child a, .tabs.radius .tab:first-child a { + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } + .tabs.radius dd:last-child a, .tabs.radius .tab:last-child a { + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + .tabs.vertical dd, .tabs.vertical .tab-title { + position: inherit; + float: none; + display: block; + top: auto; } + +.tabs-content { + margin-bottom: 1.5rem; + width: 100%; } + .tabs-content:before, .tabs-content:after { + content: " "; + display: table; } + .tabs-content:after { + clear: both; } + .tabs-content > .content { + display: none; + float: left; + padding: 0.9375rem 0; + width: 100%; } + .tabs-content > .content.active { + display: block; + float: none; } + .tabs-content > .content.contained { + padding: 0.9375rem; } + .tabs-content.vertical { + display: block; } + .tabs-content.vertical > .content { + padding: 0 0.9375rem; } + +@media only screen and (min-width: 40.063em) { + .tabs.vertical { + width: 20%; + max-width: 20%; + float: left; + margin: 0 0 1.25rem; } + + .tabs-content.vertical { + width: 80%; + max-width: 80%; + float: left; + margin-left: -1px; + padding-left: 1rem; } } +.no-js .tabs-content > .content { + display: block; + float: none; } + +ul.pagination { + display: block; + min-height: 1.5rem; + margin-left: -0.3125rem; } + ul.pagination li { + height: 1.5rem; + color: #222222; + font-size: 0.875rem; + margin-left: 0.3125rem; } + ul.pagination li a, ul.pagination li button { + display: block; + padding: 0.0625rem 0.625rem 0.0625rem; + color: #999999; + background: none; + border-radius: 3px; + font-weight: normal; + font-size: 1em; + line-height: inherit; + transition: background-color 300ms ease-out; } + ul.pagination li:hover a, + ul.pagination li a:focus, ul.pagination li:hover button, + ul.pagination li button:focus { + background: #e6e6e6; } + ul.pagination li.unavailable a, ul.pagination li.unavailable button { + cursor: default; + color: #999999; } + ul.pagination li.unavailable:hover a, ul.pagination li.unavailable a:focus, ul.pagination li.unavailable:hover button, ul.pagination li.unavailable button:focus { + background: transparent; } + ul.pagination li.current a, ul.pagination li.current button { + background: #008CBA; + color: #FFFFFF; + font-weight: bold; + cursor: default; } + ul.pagination li.current a:hover, ul.pagination li.current a:focus, ul.pagination li.current button:hover, ul.pagination li.current button:focus { + background: #008CBA; } + ul.pagination li { + float: left; + display: block; } + +/* Pagination centred wrapper */ +.pagination-centered { + text-align: center; } + .pagination-centered ul.pagination li { + float: none; + display: inline-block; } + +.side-nav { + display: block; + margin: 0; + padding: 0.875rem 0; + list-style-type: none; + list-style-position: outside; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; } + .side-nav li { + margin: 0 0 0.4375rem 0; + font-size: 0.875rem; + font-weight: normal; } + .side-nav li a:not(.button) { + display: block; + color: #008CBA; + margin: 0; + padding: 0.4375rem 0.875rem; } + .side-nav li a:not(.button):hover, .side-nav li a:not(.button):focus { + background: rgba(0, 0, 0, 0.025); + color: #1cc7ff; } + .side-nav li.active > a:first-child:not(.button) { + color: #1cc7ff; + font-weight: normal; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; } + .side-nav li.divider { + border-top: 1px solid; + height: 0; + padding: 0; + list-style: none; + border-top-color: white; } + .side-nav li.heading { + color: #008CBA; + font-size: 0.875rem; + font-weight: bold; + text-transform: uppercase; } + +.accordion { + margin-bottom: 0; } + .accordion:before, .accordion:after { + content: " "; + display: table; } + .accordion:after { + clear: both; } + .accordion .accordion-navigation, .accordion dd { + display: block; + margin-bottom: 0 !important; } + .accordion .accordion-navigation.active > a, .accordion dd.active > a { + background: #e8e8e8; } + .accordion .accordion-navigation > a, .accordion dd > a { + background: #EFEFEF; + color: #222222; + padding: 1rem; + display: block; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-size: 1rem; } + .accordion .accordion-navigation > a:hover, .accordion dd > a:hover { + background: #e3e3e3; } + .accordion .accordion-navigation > .content, .accordion dd > .content { + display: none; + padding: 0.9375rem; } + .accordion .accordion-navigation > .content.active, .accordion dd > .content.active { + display: block; + background: #FFFFFF; } + +.text-left { + text-align: left !important; } + +.text-right { + text-align: right !important; } + +.text-center { + text-align: center !important; } + +.text-justify { + text-align: justify !important; } + +@media only screen and (max-width: 40em) { + .small-only-text-left { + text-align: left !important; } + + .small-only-text-right { + text-align: right !important; } + + .small-only-text-center { + text-align: center !important; } + + .small-only-text-justify { + text-align: justify !important; } } +@media only screen { + .small-text-left { + text-align: left !important; } + + .small-text-right { + text-align: right !important; } + + .small-text-center { + text-align: center !important; } + + .small-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 40.063em) and (max-width: 64em) { + .medium-only-text-left { + text-align: left !important; } + + .medium-only-text-right { + text-align: right !important; } + + .medium-only-text-center { + text-align: center !important; } + + .medium-only-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 40.063em) { + .medium-text-left { + text-align: left !important; } + + .medium-text-right { + text-align: right !important; } + + .medium-text-center { + text-align: center !important; } + + .medium-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 64.063em) and (max-width: 90em) { + .large-only-text-left { + text-align: left !important; } + + .large-only-text-right { + text-align: right !important; } + + .large-only-text-center { + text-align: center !important; } + + .large-only-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 64.063em) { + .large-text-left { + text-align: left !important; } + + .large-text-right { + text-align: right !important; } + + .large-text-center { + text-align: center !important; } + + .large-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 90.063em) and (max-width: 120em) { + .xlarge-only-text-left { + text-align: left !important; } + + .xlarge-only-text-right { + text-align: right !important; } + + .xlarge-only-text-center { + text-align: center !important; } + + .xlarge-only-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 90.063em) { + .xlarge-text-left { + text-align: left !important; } + + .xlarge-text-right { + text-align: right !important; } + + .xlarge-text-center { + text-align: center !important; } + + .xlarge-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 120.063em) and (max-width: 99999999em) { + .xxlarge-only-text-left { + text-align: left !important; } + + .xxlarge-only-text-right { + text-align: right !important; } + + .xxlarge-only-text-center { + text-align: center !important; } + + .xxlarge-only-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 120.063em) { + .xxlarge-text-left { + text-align: left !important; } + + .xxlarge-text-right { + text-align: right !important; } + + .xxlarge-text-center { + text-align: center !important; } + + .xxlarge-text-justify { + text-align: justify !important; } } +/* Typography resets */ +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; } + +/* Default Link Styles */ +a { + color: #008CBA; + text-decoration: none; + line-height: inherit; } + a:hover, a:focus { + color: #0078a0; } + a img { + border: none; } + +/* Default paragraph styles */ +p { + font-family: inherit; + font-weight: normal; + font-size: 1rem; + line-height: 1.6; + margin-bottom: 1.25rem; + text-rendering: optimizeLegibility; } + p.lead { + font-size: 1.21875rem; + line-height: 1.6; } + p aside { + font-size: 0.875rem; + line-height: 1.35; + font-style: italic; } + +/* Default header styles */ +h1, h2, h3, h4, h5, h6 { + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + font-style: normal; + color: #222222; + text-rendering: optimizeLegibility; + margin-top: 0.2rem; + margin-bottom: 0.5rem; + line-height: 1.4; } + h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { + font-size: 60%; + color: #6f6f6f; + line-height: 0; } + +h1 { + font-size: 2.125rem; } + +h2 { + font-size: 1.6875rem; } + +h3 { + font-size: 1.375rem; } + +h4 { + font-size: 1.125rem; } + +h5 { + font-size: 1.125rem; } + +h6 { + font-size: 1rem; } + +.subheader { + line-height: 1.4; + color: #6f6f6f; + font-weight: normal; + margin-top: 0.2rem; + margin-bottom: 0.5rem; } + +hr { + border: solid #DDDDDD; + border-width: 1px 0 0; + clear: both; + margin: 1.25rem 0 1.1875rem; + height: 0; } + +/* Helpful Typography Defaults */ +em, +i { + font-style: italic; + line-height: inherit; } + +strong, +b { + font-weight: bold; + line-height: inherit; } + +small { + font-size: 60%; + line-height: inherit; } + +code { + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #333333; + background-color: #f8f8f8; + border-width: 1px; + border-style: solid; + border-color: #dfdfdf; + padding: 0.125rem 0.3125rem 0.0625rem; } + +/* Lists */ +ul, +ol, +dl { + font-size: 1rem; + line-height: 1.6; + margin-bottom: 1.25rem; + list-style-position: outside; + font-family: inherit; } + +ul { + margin-left: 1.1rem; } + ul.no-bullet { + margin-left: 0; } + ul.no-bullet li ul, + ul.no-bullet li ol { + margin-left: 1.25rem; + margin-bottom: 0; + list-style: none; } + +/* Unordered Lists */ +ul li ul, +ul li ol { + margin-left: 1.25rem; + margin-bottom: 0; } +ul.square li ul, ul.circle li ul, ul.disc li ul { + list-style: inherit; } +ul.square { + list-style-type: square; + margin-left: 1.1rem; } +ul.circle { + list-style-type: circle; + margin-left: 1.1rem; } +ul.disc { + list-style-type: disc; + margin-left: 1.1rem; } +ul.no-bullet { + list-style: none; } + +/* Ordered Lists */ +ol { + margin-left: 1.4rem; } + ol li ul, + ol li ol { + margin-left: 1.25rem; + margin-bottom: 0; } + +/* Definition Lists */ +dl dt { + margin-bottom: 0.3rem; + font-weight: bold; } +dl dd { + margin-bottom: 0.75rem; } + +/* Abbreviations */ +abbr, +acronym { + text-transform: uppercase; + font-size: 90%; + color: #222; + cursor: help; } + +abbr { + text-transform: none; } + abbr[title] { + border-bottom: 1px dotted #DDDDDD; } + +/* Blockquotes */ +blockquote { + margin: 0 0 1.25rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-left: 1px solid #DDDDDD; } + blockquote cite { + display: block; + font-size: 0.8125rem; + color: #555555; } + blockquote cite:before { + content: "\2014 \0020"; } + blockquote cite a, + blockquote cite a:visited { + color: #555555; } + +blockquote, +blockquote p { + line-height: 1.6; + color: #6f6f6f; } + +/* Microformats */ +.vcard { + display: inline-block; + margin: 0 0 1.25rem 0; + border: 1px solid #DDDDDD; + padding: 0.625rem 0.75rem; } + .vcard li { + margin: 0; + display: block; } + .vcard .fn { + font-weight: bold; + font-size: 0.9375rem; } + +.vevent .summary { + font-weight: bold; } +.vevent abbr { + cursor: default; + text-decoration: none; + font-weight: bold; + border: none; + padding: 0 0.0625rem; } + +@media only screen and (min-width: 40.063em) { + h1, h2, h3, h4, h5, h6 { + line-height: 1.4; } + + h1 { + font-size: 2.75rem; } + + h2 { + font-size: 2.3125rem; } + + h3 { + font-size: 1.6875rem; } + + h4 { + font-size: 1.4375rem; } + + h5 { + font-size: 1.125rem; } + + h6 { + font-size: 1rem; } } +.split.button { + position: relative; + padding-right: 5.0625rem; } + .split.button span { + display: block; + height: 100%; + position: absolute; + right: 0; + top: 0; + border-left: solid 1px; } + .split.button span:after { + position: absolute; + content: ""; + width: 0; + height: 0; + display: block; + border-style: inset; + top: 50%; + left: 50%; } + .split.button span:active { + background-color: rgba(0, 0, 0, 0.1); } + .split.button span { + border-left-color: rgba(255, 255, 255, 0.5); } + .split.button span { + width: 3.09375rem; } + .split.button span:after { + border-top-style: solid; + border-width: 0.375rem; + top: 48%; + margin-left: -0.375rem; } + .split.button span:after { + border-color: #FFFFFF transparent transparent transparent; } + .split.button.secondary span { + border-left-color: rgba(255, 255, 255, 0.5); } + .split.button.secondary span:after { + border-color: #FFFFFF transparent transparent transparent; } + .split.button.alert span { + border-left-color: rgba(255, 255, 255, 0.5); } + .split.button.success span { + border-left-color: rgba(255, 255, 255, 0.5); } + .split.button.tiny { + padding-right: 3.75rem; } + .split.button.tiny span { + width: 2.25rem; } + .split.button.tiny span:after { + border-top-style: solid; + border-width: 0.375rem; + top: 48%; + margin-left: -0.375rem; } + .split.button.small { + padding-right: 4.375rem; } + .split.button.small span { + width: 2.625rem; } + .split.button.small span:after { + border-top-style: solid; + border-width: 0.4375rem; + top: 48%; + margin-left: -0.375rem; } + .split.button.large { + padding-right: 5.5rem; } + .split.button.large span { + width: 3.4375rem; } + .split.button.large span:after { + border-top-style: solid; + border-width: 0.3125rem; + top: 48%; + margin-left: -0.375rem; } + .split.button.expand { + padding-left: 2rem; } + .split.button.secondary span:after { + border-color: #333333 transparent transparent transparent; } + .split.button.radius span { + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + .split.button.round span { + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } + .split.button.no-pip span:before { + border-style: none; } + .split.button.no-pip span:after { + border-style: none; } + .split.button.no-pip span > i { + top: 50%; + display: block; + position: absolute; + left: 50%; + margin-left: -0.28889em; + margin-top: -0.48889em; } + +.reveal-modal-bg { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: #000000; + background: rgba(0, 0, 0, 0.45); + z-index: 1004; + display: none; + left: 0; } + +.reveal-modal { + visibility: hidden; + display: none; + position: absolute; + z-index: 1005; + width: 100%; + top: 0; + border-radius: 3px; + left: 0; + background-color: #FFFFFF; + padding: 1.875rem; + border: solid 1px #666666; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); } + @media only screen and (max-width: 40em) { + .reveal-modal { + min-height: 100vh; } } + .reveal-modal .column, .reveal-modal .columns { + min-width: 0; } + .reveal-modal > :first-child { + margin-top: 0; } + .reveal-modal > :last-child { + margin-bottom: 0; } + @media only screen and (min-width: 40.063em) { + .reveal-modal { + width: 80%; + max-width: 62.5rem; + left: 0; + right: 0; + margin: 0 auto; } } + @media only screen and (min-width: 40.063em) { + .reveal-modal { + top: 6.25rem; } } + .reveal-modal.radius { + border-radius: 3px; } + .reveal-modal.round { + border-radius: 1000px; } + .reveal-modal.collapse { + padding: 0; } + @media only screen and (min-width: 40.063em) { + .reveal-modal.tiny { + width: 30%; + max-width: 62.5rem; + left: 0; + right: 0; + margin: 0 auto; } } + @media only screen and (min-width: 40.063em) { + .reveal-modal.small { + width: 40%; + max-width: 62.5rem; + left: 0; + right: 0; + margin: 0 auto; } } + @media only screen and (min-width: 40.063em) { + .reveal-modal.medium { + width: 60%; + max-width: 62.5rem; + left: 0; + right: 0; + margin: 0 auto; } } + @media only screen and (min-width: 40.063em) { + .reveal-modal.large { + width: 70%; + max-width: 62.5rem; + left: 0; + right: 0; + margin: 0 auto; } } + @media only screen and (min-width: 40.063em) { + .reveal-modal.xlarge { + width: 95%; + max-width: 62.5rem; + left: 0; + right: 0; + margin: 0 auto; } } + .reveal-modal.full { + top: 0; + left: 0; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none !important; + margin-left: 0 !important; } + @media only screen and (min-width: 40.063em) { + .reveal-modal.full { + width: 100%; + max-width: 62.5rem; + left: 0; + right: 0; + margin: 0 auto; } } + .reveal-modal.toback { + z-index: 1003; } + .reveal-modal .close-reveal-modal { + font-size: 2.5rem; + line-height: 1; + position: absolute; + top: 0.625rem; + right: 1.375rem; + color: #AAAAAA; + font-weight: bold; + cursor: pointer; } + +/* Tooltips */ +.has-tip { + border-bottom: dotted 1px #CCCCCC; + cursor: help; + font-weight: bold; + color: #333333; } + .has-tip:hover, .has-tip:focus { + border-bottom: dotted 1px #003f54; + color: #008CBA; } + .has-tip.tip-left, .has-tip.tip-right { + float: none !important; } + +.tooltip { + display: none; + position: absolute; + z-index: 1006; + font-weight: normal; + font-size: 0.875rem; + line-height: 1.3; + padding: 0.75rem; + max-width: 300px; + left: 50%; + width: 100%; + color: #FFFFFF; + background: #333333; } + .tooltip > .nub { + display: block; + left: 5px; + position: absolute; + width: 0; + height: 0; + border: solid 5px; + border-color: transparent transparent #333333 transparent; + top: -10px; + pointer-events: none; } + .tooltip > .nub.rtl { + left: auto; + right: 5px; } + .tooltip.radius { + border-radius: 3px; } + .tooltip.round { + border-radius: 1000px; } + .tooltip.round > .nub { + left: 2rem; } + .tooltip.opened { + color: #008CBA !important; + border-bottom: dotted 1px #003f54 !important; } + +.tap-to-close { + display: block; + font-size: 0.625rem; + color: #777777; + font-weight: normal; } + +@media only screen and (min-width: 40.063em) { + .tooltip > .nub { + border-color: transparent transparent #333333 transparent; + top: -10px; } + .tooltip.tip-top > .nub { + border-color: #333333 transparent transparent transparent; + top: auto; + bottom: -10px; } + .tooltip.tip-left, .tooltip.tip-right { + float: none !important; } + .tooltip.tip-left > .nub { + border-color: transparent transparent transparent #333333; + right: -10px; + left: auto; + top: 50%; + margin-top: -5px; } + .tooltip.tip-right > .nub { + border-color: transparent #333333 transparent transparent; + right: auto; + left: -10px; + top: 50%; + margin-top: -5px; } } +/* Clearing Styles */ +.clearing-thumbs, [data-clearing] { + margin-bottom: 0; + margin-left: 0; + list-style: none; } + .clearing-thumbs:before, .clearing-thumbs:after, [data-clearing]:before, [data-clearing]:after { + content: " "; + display: table; } + .clearing-thumbs:after, [data-clearing]:after { + clear: both; } + .clearing-thumbs li, [data-clearing] li { + float: left; + margin-right: 10px; } + .clearing-thumbs[class*="block-grid-"] li, [data-clearing][class*="block-grid-"] li { + margin-right: 0; } + +.clearing-blackout { + background: #333333; + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 998; } + .clearing-blackout .clearing-close { + display: block; } + +.clearing-container { + position: relative; + z-index: 998; + height: 100%; + overflow: hidden; + margin: 0; } + +.clearing-touch-label { + position: absolute; + top: 50%; + left: 50%; + color: #AAAAAA; + font-size: 0.6em; } + +.visible-img { + height: 95%; + position: relative; } + .visible-img img { + position: absolute; + left: 50%; + top: 50%; + transform: translateY(-50%) translateX(-50%); + -webkit-transform: translateY(-50%) translateX(-50%); + -ms-transform: translateY(-50%) translateX(-50%); + max-height: 100%; + max-width: 100%; } + +.clearing-caption { + color: #CCCCCC; + font-size: 0.875em; + line-height: 1.3; + margin-bottom: 0; + text-align: center; + bottom: 0; + background: #333333; + width: 100%; + padding: 10px 30px 20px; + position: absolute; + left: 0; } + +.clearing-close { + z-index: 999; + padding-left: 20px; + padding-top: 10px; + font-size: 30px; + line-height: 1; + color: #CCCCCC; + display: none; } + .clearing-close:hover, .clearing-close:focus { + color: #CCCCCC; } + +.clearing-assembled .clearing-container { + height: 100%; } + .clearing-assembled .clearing-container .carousel > ul { + display: none; } + +.clearing-feature li { + display: none; } + .clearing-feature li.clearing-featured-img { + display: block; } + +@media only screen and (min-width: 40.063em) { + .clearing-main-prev, + .clearing-main-next { + position: absolute; + height: 100%; + width: 40px; + top: 0; } + .clearing-main-prev > span, + .clearing-main-next > span { + position: absolute; + top: 50%; + display: block; + width: 0; + height: 0; + border: solid 12px; } + .clearing-main-prev > span:hover, + .clearing-main-next > span:hover { + opacity: 0.8; } + + .clearing-main-prev { + left: 0; } + .clearing-main-prev > span { + left: 5px; + border-color: transparent; + border-right-color: #CCCCCC; } + + .clearing-main-next { + right: 0; } + .clearing-main-next > span { + border-color: transparent; + border-left-color: #CCCCCC; } + + .clearing-main-prev.disabled, + .clearing-main-next.disabled { + opacity: 0.3; } + + .clearing-assembled .clearing-container .carousel { + background: rgba(51, 51, 51, 0.8); + height: 120px; + margin-top: 10px; + text-align: center; } + .clearing-assembled .clearing-container .carousel > ul { + display: inline-block; + z-index: 999; + height: 100%; + position: relative; + float: none; } + .clearing-assembled .clearing-container .carousel > ul li { + display: block; + width: 120px; + min-height: inherit; + float: left; + overflow: hidden; + margin-right: 0; + padding: 0; + position: relative; + cursor: pointer; + opacity: 0.4; + clear: none; } + .clearing-assembled .clearing-container .carousel > ul li.fix-height img { + height: 100%; + max-width: none; } + .clearing-assembled .clearing-container .carousel > ul li a.th { + border: none; + box-shadow: none; + display: block; } + .clearing-assembled .clearing-container .carousel > ul li img { + cursor: pointer !important; + width: 100% !important; } + .clearing-assembled .clearing-container .carousel > ul li.visible { + opacity: 1; } + .clearing-assembled .clearing-container .carousel > ul li:hover { + opacity: 0.8; } + .clearing-assembled .clearing-container .visible-img { + background: #333333; + overflow: hidden; + height: 85%; } + + .clearing-close { + position: absolute; + top: 10px; + right: 20px; + padding-left: 0; + padding-top: 0; } } +/* Progress Bar */ +.progress { + background-color: #F6F6F6; + height: 1.5625rem; + border: 1px solid white; + padding: 0.125rem; + margin-bottom: 0.625rem; } + .progress .meter { + background: #008CBA; + height: 100%; + display: block; } + .progress.secondary .meter { + background: #e7e7e7; + height: 100%; + display: block; } + .progress.success .meter { + background: #43AC6A; + height: 100%; + display: block; } + .progress.alert .meter { + background: #f04124; + height: 100%; + display: block; } + .progress.radius { + border-radius: 3px; } + .progress.radius .meter { + border-radius: 2px; } + .progress.round { + border-radius: 1000px; } + .progress.round .meter { + border-radius: 999px; } + +.sub-nav { + display: block; + width: auto; + overflow: hidden; + margin-bottom: -0.25rem 0 1.125rem; + padding-top: 0.25rem; } + .sub-nav dt { + text-transform: uppercase; } + .sub-nav dt, + .sub-nav dd, + .sub-nav li { + float: left; + margin-left: 1rem; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + font-size: 0.875rem; + color: #999999; } + .sub-nav dt a, + .sub-nav dd a, + .sub-nav li a { + text-decoration: none; + color: #999999; + padding: 0.1875rem 1rem; } + .sub-nav dt a:hover, + .sub-nav dd a:hover, + .sub-nav li a:hover { + color: #737373; } + .sub-nav dt.active a, + .sub-nav dd.active a, + .sub-nav li.active a { + border-radius: 3px; + font-weight: normal; + background: #008CBA; + padding: 0.1875rem 1rem; + cursor: default; + color: #FFFFFF; } + .sub-nav dt.active a:hover, + .sub-nav dd.active a:hover, + .sub-nav li.active a:hover { + background: #0078a0; } + +/* Foundation Joyride */ +.joyride-list { + display: none; } + +/* Default styles for the container */ +.joyride-tip-guide { + display: none; + position: absolute; + background: #333333; + color: #FFFFFF; + z-index: 101; + top: 0; + left: 2.5%; + font-family: inherit; + font-weight: normal; + width: 95%; } + +.lt-ie9 .joyride-tip-guide { + max-width: 800px; + left: 50%; + margin-left: -400px; } + +.joyride-content-wrapper { + width: 100%; + padding: 1.125rem 1.25rem 1.5rem; } + .joyride-content-wrapper .button { + margin-bottom: 0 !important; } + .joyride-content-wrapper .joyride-prev-tip { + margin-right: 10px; } + +/* Add a little css triangle pip, older browser just miss out on the fanciness of it */ +.joyride-tip-guide .joyride-nub { + display: block; + position: absolute; + left: 22px; + width: 0; + height: 0; + border: 10px solid #333333; } + .joyride-tip-guide .joyride-nub.top { + border-top-style: solid; + border-color: #333333; + border-top-color: transparent !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + top: -20px; } + .joyride-tip-guide .joyride-nub.bottom { + border-bottom-style: solid; + border-color: #333333 !important; + border-bottom-color: transparent !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + bottom: -20px; } + .joyride-tip-guide .joyride-nub.right { + right: -20px; } + .joyride-tip-guide .joyride-nub.left { + left: -20px; } + +/* Typography */ +.joyride-tip-guide h1, +.joyride-tip-guide h2, +.joyride-tip-guide h3, +.joyride-tip-guide h4, +.joyride-tip-guide h5, +.joyride-tip-guide h6 { + line-height: 1.25; + margin: 0; + font-weight: bold; + color: #FFFFFF; } + +.joyride-tip-guide p { + margin: 0 0 1.125rem 0; + font-size: 0.875rem; + line-height: 1.3; } + +.joyride-timer-indicator-wrap { + width: 50px; + height: 3px; + border: solid 1px #555555; + position: absolute; + right: 1.0625rem; + bottom: 1rem; } + +.joyride-timer-indicator { + display: block; + width: 0; + height: inherit; + background: #666666; } + +.joyride-close-tip { + position: absolute; + right: 12px; + top: 10px; + color: #777777 !important; + text-decoration: none; + font-size: 24px; + font-weight: normal; + line-height: .5 !important; } + .joyride-close-tip:hover, .joyride-close-tip:focus { + color: #EEEEEE !important; } + +.joyride-modal-bg { + position: fixed; + height: 100%; + width: 100%; + background: transparent; + background: rgba(0, 0, 0, 0.5); + z-index: 100; + display: none; + top: 0; + left: 0; + cursor: pointer; } + +.joyride-expose-wrapper { + background-color: #FFFFFF; + position: absolute; + border-radius: 3px; + z-index: 102; + box-shadow: 0 0 15px #FFFFFF; } + +.joyride-expose-cover { + background: transparent; + border-radius: 3px; + position: absolute; + z-index: 9999; + top: 0; + left: 0; } + +/* Styles for screens that are at least 768px; */ +@media only screen and (min-width: 40.063em) { + .joyride-tip-guide { + width: 300px; + left: inherit; } + .joyride-tip-guide .joyride-nub.bottom { + border-color: #333333 !important; + border-bottom-color: transparent !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + bottom: -20px; } + .joyride-tip-guide .joyride-nub.right { + border-color: #333333 !important; + border-top-color: transparent !important; + border-right-color: transparent !important; + border-bottom-color: transparent !important; + top: 22px; + left: auto; + right: -20px; } + .joyride-tip-guide .joyride-nub.left { + border-color: #333333 !important; + border-top-color: transparent !important; + border-left-color: transparent !important; + border-bottom-color: transparent !important; + top: 22px; + left: -20px; + right: auto; } } +.label { + font-weight: normal; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + text-align: center; + text-decoration: none; + line-height: 1; + white-space: nowrap; + display: inline-block; + position: relative; + margin-bottom: auto; + padding: 0.25rem 0.5rem 0.25rem; + font-size: 0.6875rem; + background-color: #008CBA; + color: #FFFFFF; } + .label.radius { + border-radius: 3px; } + .label.round { + border-radius: 1000px; } + .label.alert { + background-color: #f04124; + color: #FFFFFF; } + .label.warning { + background-color: #f08a24; + color: #FFFFFF; } + .label.success { + background-color: #43AC6A; + color: #FFFFFF; } + .label.secondary { + background-color: #e7e7e7; + color: #333333; } + .label.info { + background-color: #a0d3e8; + color: #333333; } + +.off-canvas-wrap { + -webkit-backface-visibility: hidden; + position: relative; + width: 100%; + overflow: hidden; } + .off-canvas-wrap.move-right, .off-canvas-wrap.move-left { + min-height: 100%; + -webkit-overflow-scrolling: touch; } + +.inner-wrap { + position: relative; + width: 100%; + -webkit-transition: -webkit-transform 500ms ease; + -moz-transition: -moz-transform 500ms ease; + -ms-transition: -ms-transform 500ms ease; + -o-transition: -o-transform 500ms ease; + transition: transform 500ms ease; } + .inner-wrap:before, .inner-wrap:after { + content: " "; + display: table; } + .inner-wrap:after { + clear: both; } + +.tab-bar { + -webkit-backface-visibility: hidden; + background: #333333; + color: #FFFFFF; + height: 2.8125rem; + line-height: 2.8125rem; + position: relative; } + .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4, .tab-bar h5, .tab-bar h6 { + color: #FFFFFF; + font-weight: bold; + line-height: 2.8125rem; + margin: 0; } + .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4 { + font-size: 1.125rem; } + +.left-small { + width: 2.8125rem; + height: 2.8125rem; + position: absolute; + top: 0; + border-right: solid 1px #1a1a1a; + left: 0; } + +.right-small { + width: 2.8125rem; + height: 2.8125rem; + position: absolute; + top: 0; + border-left: solid 1px #1a1a1a; + right: 0; } + +.tab-bar-section { + padding: 0 0.625rem; + position: absolute; + text-align: center; + height: 2.8125rem; + top: 0; } + @media only screen and (min-width: 40.063em) { + .tab-bar-section.left { + text-align: left; } + .tab-bar-section.right { + text-align: right; } } + .tab-bar-section.left { + left: 0; + right: 2.8125rem; } + .tab-bar-section.right { + left: 2.8125rem; + right: 0; } + .tab-bar-section.middle { + left: 2.8125rem; + right: 2.8125rem; } + +.tab-bar .menu-icon { + text-indent: 2.1875rem; + width: 2.8125rem; + height: 2.8125rem; + display: block; + padding: 0; + color: #FFFFFF; + position: relative; + transform: translate3d(0, 0, 0); } + .tab-bar .menu-icon span::after { + content: ""; + position: absolute; + display: block; + height: 0; + top: 50%; + margin-top: -0.5rem; + left: 0.90625rem; + box-shadow: 0 0 0 1px #FFFFFF, 0 7px 0 1px #FFFFFF, 0 14px 0 1px #FFFFFF; + width: 1rem; } + .tab-bar .menu-icon span:hover:after { + box-shadow: 0 0 0 1px #b3b3b3, 0 7px 0 1px #b3b3b3, 0 14px 0 1px #b3b3b3; } + +.left-off-canvas-menu { + -webkit-backface-visibility: hidden; + width: 15.625rem; + top: 0; + bottom: 0; + position: absolute; + overflow-x: hidden; + overflow-y: auto; + background: #333333; + z-index: 1001; + box-sizing: content-box; + transition: transform 500ms ease 0s; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + -ms-transform: translate(-100%, 0); + -webkit-transform: translate3d(-100%, 0, 0); + -moz-transform: translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0); + -o-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; } + .left-off-canvas-menu * { + -webkit-backface-visibility: hidden; } + +.right-off-canvas-menu { + -webkit-backface-visibility: hidden; + width: 15.625rem; + top: 0; + bottom: 0; + position: absolute; + overflow-x: hidden; + overflow-y: auto; + background: #333333; + z-index: 1001; + box-sizing: content-box; + transition: transform 500ms ease 0s; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + -ms-transform: translate(100%, 0); + -webkit-transform: translate3d(100%, 0, 0); + -moz-transform: translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0); + -o-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + right: 0; } + .right-off-canvas-menu * { + -webkit-backface-visibility: hidden; } + +ul.off-canvas-list { + list-style-type: none; + padding: 0; + margin: 0; } + ul.off-canvas-list li label { + display: block; + padding: 0.3rem 0.9375rem; + color: #999999; + text-transform: uppercase; + font-size: 0.75rem; + font-weight: bold; + background: #444444; + border-top: 1px solid #5e5e5e; + border-bottom: none; + margin: 0; } + ul.off-canvas-list li a { + display: block; + padding: 0.66667rem; + color: rgba(255, 255, 255, 0.7); + border-bottom: 1px solid #262626; + transition: background 300ms ease; } + ul.off-canvas-list li a:hover { + background: #242424; } + +.move-right > .inner-wrap { + -ms-transform: translate(15.625rem, 0); + -webkit-transform: translate3d(15.625rem, 0, 0); + -moz-transform: translate3d(15.625rem, 0, 0); + -ms-transform: translate3d(15.625rem, 0, 0); + -o-transform: translate3d(15.625rem, 0, 0); + transform: translate3d(15.625rem, 0, 0); } +.move-right .exit-off-canvas { + -webkit-backface-visibility: hidden; + transition: background 300ms ease; + cursor: pointer; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + display: block; + position: absolute; + background: rgba(255, 255, 255, 0.2); + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1002; + -webkit-tap-highlight-color: transparent; } + @media only screen and (min-width: 40.063em) { + .move-right .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.move-left > .inner-wrap { + -ms-transform: translate(-15.625rem, 0); + -webkit-transform: translate3d(-15.625rem, 0, 0); + -moz-transform: translate3d(-15.625rem, 0, 0); + -ms-transform: translate3d(-15.625rem, 0, 0); + -o-transform: translate3d(-15.625rem, 0, 0); + transform: translate3d(-15.625rem, 0, 0); } +.move-left .exit-off-canvas { + -webkit-backface-visibility: hidden; + transition: background 300ms ease; + cursor: pointer; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + display: block; + position: absolute; + background: rgba(255, 255, 255, 0.2); + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1002; + -webkit-tap-highlight-color: transparent; } + @media only screen and (min-width: 40.063em) { + .move-left .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.offcanvas-overlap .left-off-canvas-menu, .offcanvas-overlap .right-off-canvas-menu { + -ms-transform: none; + -webkit-transform: none; + -moz-transform: none; + -o-transform: none; + transform: none; + z-index: 1003; } +.offcanvas-overlap .exit-off-canvas { + -webkit-backface-visibility: hidden; + transition: background 300ms ease; + cursor: pointer; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + display: block; + position: absolute; + background: rgba(255, 255, 255, 0.2); + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1002; + -webkit-tap-highlight-color: transparent; } + @media only screen and (min-width: 40.063em) { + .offcanvas-overlap .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.offcanvas-overlap-left .right-off-canvas-menu { + -ms-transform: none; + -webkit-transform: none; + -moz-transform: none; + -o-transform: none; + transform: none; + z-index: 1003; } +.offcanvas-overlap-left .exit-off-canvas { + -webkit-backface-visibility: hidden; + transition: background 300ms ease; + cursor: pointer; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + display: block; + position: absolute; + background: rgba(255, 255, 255, 0.2); + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1002; + -webkit-tap-highlight-color: transparent; } + @media only screen and (min-width: 40.063em) { + .offcanvas-overlap-left .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.offcanvas-overlap-right .left-off-canvas-menu { + -ms-transform: none; + -webkit-transform: none; + -moz-transform: none; + -o-transform: none; + transform: none; + z-index: 1003; } +.offcanvas-overlap-right .exit-off-canvas { + -webkit-backface-visibility: hidden; + transition: background 300ms ease; + cursor: pointer; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + display: block; + position: absolute; + background: rgba(255, 255, 255, 0.2); + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1002; + -webkit-tap-highlight-color: transparent; } + @media only screen and (min-width: 40.063em) { + .offcanvas-overlap-right .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.no-csstransforms .left-off-canvas-menu { + left: -15.625rem; } +.no-csstransforms .right-off-canvas-menu { + right: -15.625rem; } +.no-csstransforms .move-left > .inner-wrap { + right: 15.625rem; } +.no-csstransforms .move-right > .inner-wrap { + left: 15.625rem; } + +.left-submenu { + -webkit-backface-visibility: hidden; + width: 15.625rem; + top: 0; + bottom: 0; + position: absolute; + margin: 0; + overflow-x: hidden; + overflow-y: auto; + background: #333333; + z-index: 1002; + box-sizing: content-box; + -webkit-overflow-scrolling: touch; + -ms-transform: translate(-100%, 0); + -webkit-transform: translate3d(-100%, 0, 0); + -moz-transform: translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0); + -o-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + -webkit-transition: -webkit-transform 500ms ease; + -moz-transition: -moz-transform 500ms ease; + -ms-transition: -ms-transform 500ms ease; + -o-transition: -o-transform 500ms ease; + transition: transform 500ms ease; } + .left-submenu * { + -webkit-backface-visibility: hidden; } + .left-submenu .back > a { + padding: 0.3rem 0.9375rem; + color: #999999; + text-transform: uppercase; + font-weight: bold; + background: #444; + border-top: 1px solid #5e5e5e; + border-bottom: none; + margin: 0; } + .left-submenu .back > a:hover { + background: #303030; + border-top: 1px solid #5e5e5e; + border-bottom: none; } + .left-submenu .back > a:before { + content: "\AB"; + margin-right: 0.5rem; + display: inline; } + .left-submenu.move-right, .left-submenu.offcanvas-overlap-right, .left-submenu.offcanvas-overlap { + -ms-transform: translate(0%, 0); + -webkit-transform: translate3d(0%, 0, 0); + -moz-transform: translate3d(0%, 0, 0); + -ms-transform: translate3d(0%, 0, 0); + -o-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); } + +.right-submenu { + -webkit-backface-visibility: hidden; + width: 15.625rem; + top: 0; + bottom: 0; + position: absolute; + margin: 0; + overflow-x: hidden; + overflow-y: auto; + background: #333333; + z-index: 1002; + box-sizing: content-box; + -webkit-overflow-scrolling: touch; + -ms-transform: translate(100%, 0); + -webkit-transform: translate3d(100%, 0, 0); + -moz-transform: translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0); + -o-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + right: 0; + -webkit-transition: -webkit-transform 500ms ease; + -moz-transition: -moz-transform 500ms ease; + -ms-transition: -ms-transform 500ms ease; + -o-transition: -o-transform 500ms ease; + transition: transform 500ms ease; } + .right-submenu * { + -webkit-backface-visibility: hidden; } + .right-submenu .back > a { + padding: 0.3rem 0.9375rem; + color: #999999; + text-transform: uppercase; + font-weight: bold; + background: #444; + border-top: 1px solid #5e5e5e; + border-bottom: none; + margin: 0; } + .right-submenu .back > a:hover { + background: #303030; + border-top: 1px solid #5e5e5e; + border-bottom: none; } + .right-submenu .back > a:after { + content: "\BB"; + margin-left: 0.5rem; + display: inline; } + .right-submenu.move-left, .right-submenu.offcanvas-overlap-left, .right-submenu.offcanvas-overlap { + -ms-transform: translate(0%, 0); + -webkit-transform: translate3d(0%, 0, 0); + -moz-transform: translate3d(0%, 0, 0); + -ms-transform: translate3d(0%, 0, 0); + -o-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); } + +.left-off-canvas-menu ul.off-canvas-list li.has-submenu > a:after { + content: "\BB"; + margin-left: 0.5rem; + display: inline; } + +.right-off-canvas-menu ul.off-canvas-list li.has-submenu > a:before { + content: "\AB"; + margin-right: 0.5rem; + display: inline; } + +/* Foundation Dropdowns */ +.f-dropdown { + position: absolute; + left: -9999px; + list-style: none; + margin-left: 0; + outline: none; + width: 100%; + max-height: none; + height: auto; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + z-index: 89; + margin-top: 2px; + max-width: 200px; } + .f-dropdown > *:first-child { + margin-top: 0; } + .f-dropdown > *:last-child { + margin-bottom: 0; } + .f-dropdown:before { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent transparent #FFFFFF transparent; + border-bottom-style: solid; + position: absolute; + top: -12px; + left: 10px; + z-index: 89; } + .f-dropdown:after { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 7px; + border-color: transparent transparent #cccccc transparent; + border-bottom-style: solid; + position: absolute; + top: -14px; + left: 9px; + z-index: 88; } + .f-dropdown.right:before { + left: auto; + right: 10px; } + .f-dropdown.right:after { + left: auto; + right: 9px; } + .f-dropdown.drop-right { + position: absolute; + left: -9999px; + list-style: none; + margin-left: 0; + outline: none; + width: 100%; + max-height: none; + height: auto; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + z-index: 89; + margin-top: 0; + margin-left: 2px; + max-width: 200px; } + .f-dropdown.drop-right > *:first-child { + margin-top: 0; } + .f-dropdown.drop-right > *:last-child { + margin-bottom: 0; } + .f-dropdown.drop-right:before { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent #FFFFFF transparent transparent; + border-right-style: solid; + position: absolute; + top: 10px; + left: -12px; + z-index: 89; } + .f-dropdown.drop-right:after { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 7px; + border-color: transparent #cccccc transparent transparent; + border-right-style: solid; + position: absolute; + top: 9px; + left: -14px; + z-index: 88; } + .f-dropdown.drop-left { + position: absolute; + left: -9999px; + list-style: none; + margin-left: 0; + outline: none; + width: 100%; + max-height: none; + height: auto; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + z-index: 89; + margin-top: 0; + margin-left: -2px; + max-width: 200px; } + .f-dropdown.drop-left > *:first-child { + margin-top: 0; } + .f-dropdown.drop-left > *:last-child { + margin-bottom: 0; } + .f-dropdown.drop-left:before { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent transparent transparent #FFFFFF; + border-left-style: solid; + position: absolute; + top: 10px; + right: -12px; + left: auto; + z-index: 89; } + .f-dropdown.drop-left:after { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 7px; + border-color: transparent transparent transparent #cccccc; + border-left-style: solid; + position: absolute; + top: 9px; + right: -14px; + left: auto; + z-index: 88; } + .f-dropdown.drop-top { + position: absolute; + left: -9999px; + list-style: none; + margin-left: 0; + outline: none; + width: 100%; + max-height: none; + height: auto; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + z-index: 89; + margin-top: -2px; + margin-left: 0; + max-width: 200px; } + .f-dropdown.drop-top > *:first-child { + margin-top: 0; } + .f-dropdown.drop-top > *:last-child { + margin-bottom: 0; } + .f-dropdown.drop-top:before { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: #FFFFFF transparent transparent transparent; + border-top-style: solid; + position: absolute; + top: auto; + bottom: -12px; + left: 10px; + right: auto; + z-index: 89; } + .f-dropdown.drop-top:after { + content: ""; + display: block; + width: 0; + height: 0; + border: inset 7px; + border-color: #cccccc transparent transparent transparent; + border-top-style: solid; + position: absolute; + top: auto; + bottom: -14px; + left: 9px; + right: auto; + z-index: 88; } + .f-dropdown li { + font-size: 0.875rem; + cursor: pointer; + line-height: 1.125rem; + margin: 0; } + .f-dropdown li:hover, .f-dropdown li:focus { + background: #EEEEEE; } + .f-dropdown li.radius { + border-radius: 3px; } + .f-dropdown li a { + display: block; + padding: 0.5rem; + color: #555555; } + .f-dropdown.content { + position: absolute; + left: -9999px; + list-style: none; + margin-left: 0; + outline: none; + padding: 1.25rem; + width: 100%; + height: auto; + max-height: none; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + z-index: 89; + max-width: 200px; } + .f-dropdown.content > *:first-child { + margin-top: 0; } + .f-dropdown.content > *:last-child { + margin-bottom: 0; } + .f-dropdown.tiny { + max-width: 200px; } + .f-dropdown.small { + max-width: 300px; } + .f-dropdown.medium { + max-width: 500px; } + .f-dropdown.large { + max-width: 800px; } + .f-dropdown.mega { + width: 100% !important; + max-width: 100% !important; } + .f-dropdown.mega.open { + left: 0 !important; } + +table { + background: #FFFFFF; + margin-bottom: 1.25rem; + border: solid 1px #DDDDDD; + table-layout: auto; } + table caption { + background: transparent; + color: #222222; + font-size: 1rem; + font-weight: bold; } + table thead { + background: #F5F5F5; } + table thead tr th, + table thead tr td { + padding: 0.5rem 0.625rem 0.625rem; + font-size: 0.875rem; + font-weight: bold; + color: #222222; } + table tfoot { + background: #F5F5F5; } + table tfoot tr th, + table tfoot tr td { + padding: 0.5rem 0.625rem 0.625rem; + font-size: 0.875rem; + font-weight: bold; + color: #222222; } + table tr th, + table tr td { + padding: 0.5625rem 0.625rem; + font-size: 0.875rem; + color: #222222; + text-align: left; } + table tr.even, table tr.alt, table tr:nth-of-type(even) { + background: #F9F9F9; } + table thead tr th, + table tfoot tr th, + table tfoot tr td, + table tbody tr th, + table tbody tr td, + table tr td { + display: table-cell; + line-height: 1.125rem; } + +.range-slider { + position: relative; + border: 1px solid #DDDDDD; + margin: 1.25rem 0; + -ms-touch-action: none; + touch-action: none; + display: block; + width: 100%; + height: 1rem; + background: #FAFAFA; } + .range-slider.vertical-range { + position: relative; + border: 1px solid #DDDDDD; + margin: 1.25rem 0; + -ms-touch-action: none; + touch-action: none; + display: inline-block; + width: 1rem; + height: 12.5rem; } + .range-slider.vertical-range .range-slider-handle { + margin-top: 0; + margin-left: -0.5rem; + position: absolute; + bottom: -10.5rem; } + .range-slider.vertical-range .range-slider-active-segment { + width: 0.875rem; + height: auto; + bottom: 0; } + .range-slider.radius { + background: #FAFAFA; + border-radius: 3px; } + .range-slider.radius .range-slider-handle { + background: #008CBA; + border-radius: 3px; } + .range-slider.radius .range-slider-handle:hover { + background: #007ba4; } + .range-slider.round { + background: #FAFAFA; + border-radius: 1000px; } + .range-slider.round .range-slider-handle { + background: #008CBA; + border-radius: 1000px; } + .range-slider.round .range-slider-handle:hover { + background: #007ba4; } + .range-slider.disabled, .range-slider[disabled] { + background: #FAFAFA; + cursor: not-allowed; + opacity: 0.7; } + .range-slider.disabled .range-slider-handle, .range-slider[disabled] .range-slider-handle { + background: #008CBA; + cursor: default; + opacity: 0.7; } + .range-slider.disabled .range-slider-handle:hover, .range-slider[disabled] .range-slider-handle:hover { + background: #007ba4; } + +.range-slider-active-segment { + display: inline-block; + position: absolute; + height: 0.875rem; + background: #e5e5e5; } + +.range-slider-handle { + display: inline-block; + position: absolute; + z-index: 1; + top: -0.3125rem; + width: 2rem; + height: 1.375rem; + border: 1px solid none; + cursor: pointer; + -ms-touch-action: manipulation; + touch-action: manipulation; + background: #008CBA; } + .range-slider-handle:hover { + background: #007ba4; } + +[class*="block-grid-"] { + display: block; + padding: 0; + margin: 0 -0.625rem; } + [class*="block-grid-"]:before, [class*="block-grid-"]:after { + content: " "; + display: table; } + [class*="block-grid-"]:after { + clear: both; } + [class*="block-grid-"] > li { + display: block; + height: auto; + float: left; + padding: 0 0.625rem 1.25rem; } + +@media only screen { + .small-block-grid-1 > li { + width: 100%; + list-style: none; } + .small-block-grid-1 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-1 > li:nth-of-type(1n+1) { + clear: both; } + + .small-block-grid-2 > li { + width: 50%; + list-style: none; } + .small-block-grid-2 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-2 > li:nth-of-type(2n+1) { + clear: both; } + + .small-block-grid-3 > li { + width: 33.33333%; + list-style: none; } + .small-block-grid-3 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-3 > li:nth-of-type(3n+1) { + clear: both; } + + .small-block-grid-4 > li { + width: 25%; + list-style: none; } + .small-block-grid-4 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-4 > li:nth-of-type(4n+1) { + clear: both; } + + .small-block-grid-5 > li { + width: 20%; + list-style: none; } + .small-block-grid-5 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-5 > li:nth-of-type(5n+1) { + clear: both; } + + .small-block-grid-6 > li { + width: 16.66667%; + list-style: none; } + .small-block-grid-6 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-6 > li:nth-of-type(6n+1) { + clear: both; } + + .small-block-grid-7 > li { + width: 14.28571%; + list-style: none; } + .small-block-grid-7 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-7 > li:nth-of-type(7n+1) { + clear: both; } + + .small-block-grid-8 > li { + width: 12.5%; + list-style: none; } + .small-block-grid-8 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-8 > li:nth-of-type(8n+1) { + clear: both; } + + .small-block-grid-9 > li { + width: 11.11111%; + list-style: none; } + .small-block-grid-9 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-9 > li:nth-of-type(9n+1) { + clear: both; } + + .small-block-grid-10 > li { + width: 10%; + list-style: none; } + .small-block-grid-10 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-10 > li:nth-of-type(10n+1) { + clear: both; } + + .small-block-grid-11 > li { + width: 9.09091%; + list-style: none; } + .small-block-grid-11 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-11 > li:nth-of-type(11n+1) { + clear: both; } + + .small-block-grid-12 > li { + width: 8.33333%; + list-style: none; } + .small-block-grid-12 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-12 > li:nth-of-type(12n+1) { + clear: both; } } +@media only screen and (min-width: 40.063em) { + .medium-block-grid-1 > li { + width: 100%; + list-style: none; } + .medium-block-grid-1 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-1 > li:nth-of-type(1n+1) { + clear: both; } + + .medium-block-grid-2 > li { + width: 50%; + list-style: none; } + .medium-block-grid-2 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-2 > li:nth-of-type(2n+1) { + clear: both; } + + .medium-block-grid-3 > li { + width: 33.33333%; + list-style: none; } + .medium-block-grid-3 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-3 > li:nth-of-type(3n+1) { + clear: both; } + + .medium-block-grid-4 > li { + width: 25%; + list-style: none; } + .medium-block-grid-4 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-4 > li:nth-of-type(4n+1) { + clear: both; } + + .medium-block-grid-5 > li { + width: 20%; + list-style: none; } + .medium-block-grid-5 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-5 > li:nth-of-type(5n+1) { + clear: both; } + + .medium-block-grid-6 > li { + width: 16.66667%; + list-style: none; } + .medium-block-grid-6 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-6 > li:nth-of-type(6n+1) { + clear: both; } + + .medium-block-grid-7 > li { + width: 14.28571%; + list-style: none; } + .medium-block-grid-7 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-7 > li:nth-of-type(7n+1) { + clear: both; } + + .medium-block-grid-8 > li { + width: 12.5%; + list-style: none; } + .medium-block-grid-8 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-8 > li:nth-of-type(8n+1) { + clear: both; } + + .medium-block-grid-9 > li { + width: 11.11111%; + list-style: none; } + .medium-block-grid-9 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-9 > li:nth-of-type(9n+1) { + clear: both; } + + .medium-block-grid-10 > li { + width: 10%; + list-style: none; } + .medium-block-grid-10 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-10 > li:nth-of-type(10n+1) { + clear: both; } + + .medium-block-grid-11 > li { + width: 9.09091%; + list-style: none; } + .medium-block-grid-11 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-11 > li:nth-of-type(11n+1) { + clear: both; } + + .medium-block-grid-12 > li { + width: 8.33333%; + list-style: none; } + .medium-block-grid-12 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-12 > li:nth-of-type(12n+1) { + clear: both; } } +@media only screen and (min-width: 64.063em) { + .large-block-grid-1 > li { + width: 100%; + list-style: none; } + .large-block-grid-1 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-1 > li:nth-of-type(1n+1) { + clear: both; } + + .large-block-grid-2 > li { + width: 50%; + list-style: none; } + .large-block-grid-2 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-2 > li:nth-of-type(2n+1) { + clear: both; } + + .large-block-grid-3 > li { + width: 33.33333%; + list-style: none; } + .large-block-grid-3 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-3 > li:nth-of-type(3n+1) { + clear: both; } + + .large-block-grid-4 > li { + width: 25%; + list-style: none; } + .large-block-grid-4 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-4 > li:nth-of-type(4n+1) { + clear: both; } + + .large-block-grid-5 > li { + width: 20%; + list-style: none; } + .large-block-grid-5 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-5 > li:nth-of-type(5n+1) { + clear: both; } + + .large-block-grid-6 > li { + width: 16.66667%; + list-style: none; } + .large-block-grid-6 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-6 > li:nth-of-type(6n+1) { + clear: both; } + + .large-block-grid-7 > li { + width: 14.28571%; + list-style: none; } + .large-block-grid-7 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-7 > li:nth-of-type(7n+1) { + clear: both; } + + .large-block-grid-8 > li { + width: 12.5%; + list-style: none; } + .large-block-grid-8 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-8 > li:nth-of-type(8n+1) { + clear: both; } + + .large-block-grid-9 > li { + width: 11.11111%; + list-style: none; } + .large-block-grid-9 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-9 > li:nth-of-type(9n+1) { + clear: both; } + + .large-block-grid-10 > li { + width: 10%; + list-style: none; } + .large-block-grid-10 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-10 > li:nth-of-type(10n+1) { + clear: both; } + + .large-block-grid-11 > li { + width: 9.09091%; + list-style: none; } + .large-block-grid-11 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-11 > li:nth-of-type(11n+1) { + clear: both; } + + .large-block-grid-12 > li { + width: 8.33333%; + list-style: none; } + .large-block-grid-12 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-12 > li:nth-of-type(12n+1) { + clear: both; } } +.flex-video { + position: relative; + padding-top: 1.5625rem; + padding-bottom: 67.5%; + height: 0; + margin-bottom: 1rem; + overflow: hidden; } + .flex-video.widescreen { + padding-bottom: 56.34%; } + .flex-video.vimeo { + padding-top: 0; } + .flex-video iframe, + .flex-video object, + .flex-video embed, + .flex-video video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +.keystroke, +kbd { + background-color: #ededed; + border-color: #dddddd; + color: #222222; + border-style: solid; + border-width: 1px; + margin: 0; + font-family: "Consolas", "Menlo", "Courier", monospace; + font-size: inherit; + padding: 0.125rem 0.25rem 0; + border-radius: 3px; } + +.switch { + padding: 0; + border: none; + position: relative; + outline: 0; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; } + .switch label { + display: block; + margin-bottom: 1rem; + position: relative; + color: transparent; + background: #DDDDDD; + text-indent: 100%; + width: 4rem; + height: 2rem; + cursor: pointer; + transition: left 0.15s ease-out; } + .switch input { + opacity: 0; + position: absolute; + top: 9px; + left: 10px; + padding: 0; } + .switch input + label { + margin-left: 0; + margin-right: 0; } + .switch label:after { + content: ""; + display: block; + background: #FFFFFF; + position: absolute; + top: .25rem; + left: .25rem; + width: 1.5rem; + height: 1.5rem; + -webkit-transition: left 0.15s ease-out; + -moz-transition: left 0.15s ease-out; + -o-transition: translate3d(0, 0, 0); + transition: left 0.15s ease-out; + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + .switch input:checked + label { + background: #008CBA; } + .switch input:checked + label:after { + left: 2.25rem; } + .switch label { + width: 4rem; + height: 2rem; } + .switch label:after { + width: 1.5rem; + height: 1.5rem; } + .switch input:checked + label:after { + left: 2.25rem; } + .switch label { + color: transparent; + background: #DDDDDD; } + .switch label:after { + background: #FFFFFF; } + .switch input:checked + label { + background: #008CBA; } + .switch.large label { + width: 5rem; + height: 2.5rem; } + .switch.large label:after { + width: 2rem; + height: 2rem; } + .switch.large input:checked + label:after { + left: 2.75rem; } + .switch.small label { + width: 3.5rem; + height: 1.75rem; } + .switch.small label:after { + width: 1.25rem; + height: 1.25rem; } + .switch.small input:checked + label:after { + left: 2rem; } + .switch.tiny label { + width: 3rem; + height: 1.5rem; } + .switch.tiny label:after { + width: 1rem; + height: 1rem; } + .switch.tiny input:checked + label:after { + left: 1.75rem; } + .switch.radius label { + border-radius: 4px; } + .switch.radius label:after { + border-radius: 3px; } + .switch.round { + border-radius: 1000px; } + .switch.round label { + border-radius: 2rem; } + .switch.round label:after { + border-radius: 2rem; } + +/* small displays */ +@media only screen { + .show-for-small-only, .show-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .hide-for-small-only, .hide-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .visible-for-small-only, .visible-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .hidden-for-small-only, .hidden-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down { + position: absolute !important; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); } + + table.show-for-small-only, table.show-for-small-up, table.show-for-small, table.show-for-small-down, table.hide-for-medium-only, table.hide-for-medium-up, table.hide-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.show-for-small-only, thead.show-for-small-up, thead.show-for-small, thead.show-for-small-down, thead.hide-for-medium-only, thead.hide-for-medium-up, thead.hide-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.show-for-small-only, tbody.show-for-small-up, tbody.show-for-small, tbody.show-for-small-down, tbody.hide-for-medium-only, tbody.hide-for-medium-up, tbody.hide-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.show-for-small-only, tr.show-for-small-up, tr.show-for-small, tr.show-for-small-down, tr.hide-for-medium-only, tr.hide-for-medium-up, tr.hide-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.show-for-small-only, td.show-for-small-only, th.show-for-small-up, td.show-for-small-up, th.show-for-small, td.show-for-small, th.show-for-small-down, td.show-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.hide-for-medium-up, td.hide-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* medium displays */ +@media only screen and (min-width: 40.063em) { + .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down { + position: absolute !important; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); } + + table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.show-for-medium-only, table.show-for-medium-up, table.show-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.show-for-medium-only, thead.show-for-medium-up, thead.show-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.show-for-medium-only, tbody.show-for-medium-up, tbody.show-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.show-for-medium-only, tr.show-for-medium-up, tr.show-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.show-for-medium-only, td.show-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.show-for-medium, td.show-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* large displays */ +@media only screen and (min-width: 64.063em) { + .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down { + position: absolute !important; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); } + + table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.show-for-large-only, table.show-for-large-up, table.show-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.show-for-large-only, thead.show-for-large-up, thead.show-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.show-for-large-only, tbody.show-for-large-up, tbody.show-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.show-for-large-only, tr.show-for-large-up, tr.show-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.show-for-large-only, td.show-for-large-only, th.show-for-large-up, td.show-for-large-up, th.show-for-large, td.show-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* xlarge displays */ +@media only screen and (min-width: 90.063em) { + .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down { + position: absolute !important; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); } + + table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.show-for-xlarge-only, table.show-for-xlarge-up, table.show-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.show-for-xlarge-only, thead.show-for-xlarge-up, thead.show-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.show-for-xlarge-only, tbody.show-for-xlarge-up, tbody.show-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.show-for-xlarge-only, tr.show-for-xlarge-up, tr.show-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.show-for-xlarge-only, td.show-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.show-for-xlarge, td.show-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* xxlarge displays */ +@media only screen and (min-width: 120.063em) { + .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .hide-for-xlarge-only, .show-for-xlarge-up, .hide-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .show-for-xlarge-only, .hide-for-xlarge-up, .show-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .hidden-for-xlarge-only, .visible-for-xlarge-up, .hidden-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .visible-for-xlarge-only, .hidden-for-xlarge-up, .visible-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .hidden-for-xxlarge-down { + position: absolute !important; + height: 1px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); } + + table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.hide-for-xlarge-only, table.show-for-xlarge-up, table.hide-for-xlarge, table.hide-for-xlarge-down, table.show-for-xxlarge-only, table.show-for-xxlarge-up, table.show-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.hide-for-xlarge-only, thead.show-for-xlarge-up, thead.hide-for-xlarge, thead.hide-for-xlarge-down, thead.show-for-xxlarge-only, thead.show-for-xxlarge-up, thead.show-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.hide-for-xlarge-only, tbody.show-for-xlarge-up, tbody.hide-for-xlarge, tbody.hide-for-xlarge-down, tbody.show-for-xxlarge-only, tbody.show-for-xxlarge-up, tbody.show-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.hide-for-xlarge-only, tr.show-for-xlarge-up, tr.hide-for-xlarge, tr.hide-for-xlarge-down, tr.show-for-xxlarge-only, tr.show-for-xxlarge-up, tr.show-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.hide-for-xlarge-down, td.hide-for-xlarge-down, th.show-for-xxlarge-only, td.show-for-xxlarge-only, th.show-for-xxlarge-up, td.show-for-xxlarge-up, th.show-for-xxlarge, td.show-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* Orientation targeting */ +.show-for-landscape, +.hide-for-portrait { + display: inherit !important; } + +.hide-for-landscape, +.show-for-portrait { + display: none !important; } + +/* Specific visibility for tables */ +table.hide-for-landscape, table.show-for-portrait { + display: table !important; } + +thead.hide-for-landscape, thead.show-for-portrait { + display: table-header-group !important; } + +tbody.hide-for-landscape, tbody.show-for-portrait { + display: table-row-group !important; } + +tr.hide-for-landscape, tr.show-for-portrait { + display: table-row !important; } + +td.hide-for-landscape, td.show-for-portrait, +th.hide-for-landscape, +th.show-for-portrait { + display: table-cell !important; } + +@media only screen and (orientation: landscape) { + .show-for-landscape, + .hide-for-portrait { + display: inherit !important; } + + .hide-for-landscape, + .show-for-portrait { + display: none !important; } + + /* Specific visibility for tables */ + table.show-for-landscape, table.hide-for-portrait { + display: table !important; } + + thead.show-for-landscape, thead.hide-for-portrait { + display: table-header-group !important; } + + tbody.show-for-landscape, tbody.hide-for-portrait { + display: table-row-group !important; } + + tr.show-for-landscape, tr.hide-for-portrait { + display: table-row !important; } + + td.show-for-landscape, td.hide-for-portrait, + th.show-for-landscape, + th.hide-for-portrait { + display: table-cell !important; } } +@media only screen and (orientation: portrait) { + .show-for-portrait, + .hide-for-landscape { + display: inherit !important; } + + .hide-for-portrait, + .show-for-landscape { + display: none !important; } + + /* Specific visibility for tables */ + table.show-for-portrait, table.hide-for-landscape { + display: table !important; } + + thead.show-for-portrait, thead.hide-for-landscape { + display: table-header-group !important; } + + tbody.show-for-portrait, tbody.hide-for-landscape { + display: table-row-group !important; } + + tr.show-for-portrait, tr.hide-for-landscape { + display: table-row !important; } + + td.show-for-portrait, td.hide-for-landscape, + th.show-for-portrait, + th.hide-for-landscape { + display: table-cell !important; } } +/* Touch-enabled device targeting */ +.show-for-touch { + display: none !important; } + +.hide-for-touch { + display: inherit !important; } + +.touch .show-for-touch { + display: inherit !important; } + +.touch .hide-for-touch { + display: none !important; } + +/* Specific visibility for tables */ +table.hide-for-touch { + display: table !important; } + +.touch table.show-for-touch { + display: table !important; } + +thead.hide-for-touch { + display: table-header-group !important; } + +.touch thead.show-for-touch { + display: table-header-group !important; } + +tbody.hide-for-touch { + display: table-row-group !important; } + +.touch tbody.show-for-touch { + display: table-row-group !important; } + +tr.hide-for-touch { + display: table-row !important; } + +.touch tr.show-for-touch { + display: table-row !important; } + +td.hide-for-touch { + display: table-cell !important; } + +.touch td.show-for-touch { + display: table-cell !important; } + +th.hide-for-touch { + display: table-cell !important; } + +.touch th.show-for-touch { + display: table-cell !important; } + +/* + * Print styles. + * + * Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ + * Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com) +*/ +.print-only { + display: none !important; } + +@media print { + * { + background: transparent !important; + color: #000000 !important; + /* Black prints faster: h5bp.com/s */ + box-shadow: none !important; + text-shadow: none !important; } + + .show-for-print { + display: block; } + + .hide-for-print { + display: none; } + + table.show-for-print { + display: table !important; } + + thead.show-for-print { + display: table-header-group !important; } + + tbody.show-for-print { + display: table-row-group !important; } + + tr.show-for-print { + display: table-row !important; } + + td.show-for-print { + display: table-cell !important; } + + th.show-for-print { + display: table-cell !important; } + + a, + a:visited { + text-decoration: underline; } + + a[href]:after { + content: " (" attr(href) ")"; } + + abbr[title]:after { + content: " (" attr(title) ")"; } + + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; } + + pre, + blockquote { + border: 1px solid #999999; + page-break-inside: avoid; } + + thead { + display: table-header-group; + /* h5bp.com/t */ } + + tr, + img { + page-break-inside: avoid; } + + img { + max-width: 100% !important; } + + @page { + margin: 0.5cm; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + + h2, + h3 { + page-break-after: avoid; } + + .hide-on-print { + display: none !important; } + + .print-only { + display: block !important; } + + .hide-for-print { + display: none !important; } + + .show-for-print { + display: inherit !important; } } +/* Print visibility */ +@media print { + .show-for-print { + display: block; } + + .hide-for-print { + display: none; } + + table.show-for-print { + display: table !important; } + + thead.show-for-print { + display: table-header-group !important; } + + tbody.show-for-print { + display: table-row-group !important; } + + tr.show-for-print { + display: table-row !important; } + + td.show-for-print { + display: table-cell !important; } + + th.show-for-print { + display: table-cell !important; } } diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation.min.css b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation.min.css new file mode 100644 index 0000000000..c00b25b0f4 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation.min.css @@ -0,0 +1 @@ +meta.foundation-version{font-family:"/5.5.1/"}meta.foundation-mq-small{font-family:"/only screen/";width:0}meta.foundation-mq-small-only{font-family:"/only screen and (max-width: 40em)/";width:0}meta.foundation-mq-medium{font-family:"/only screen and (min-width:40.063em)/";width:40.063em}meta.foundation-mq-medium-only{font-family:"/only screen and (min-width:40.063em) and (max-width:64em)/";width:40.063em}meta.foundation-mq-large{font-family:"/only screen and (min-width:64.063em)/";width:64.063em}meta.foundation-mq-large-only{font-family:"/only screen and (min-width:64.063em) and (max-width:90em)/";width:64.063em}meta.foundation-mq-xlarge{font-family:"/only screen and (min-width:90.063em)/";width:90.063em}meta.foundation-mq-xlarge-only{font-family:"/only screen and (min-width:90.063em) and (max-width:120em)/";width:90.063em}meta.foundation-mq-xxlarge{font-family:"/only screen and (min-width:120.063em)/";width:120.063em}meta.foundation-data-attribute-namespace{font-family:false}html,body{height:100%}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html,body{font-size:100%}body{background:#fff;color:#222;padding:0;margin:0;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;font-style:normal;line-height:1.5;position:relative;cursor:auto}a:hover{cursor:pointer}img{max-width:100%;height:auto}img{-ms-interpolation-mode:bicubic}#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object{max-width:none !important}.left{float:left !important}.right{float:right !important}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.hide{display:none}.invisible{visibility:hidden}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px}select{width:100%}.row{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5rem}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row.collapse .row{margin-left:0;margin-right:0}.row .row{width:auto;margin-left:-0.9375rem;margin-right:-0.9375rem;margin-top:0;margin-bottom:0;max-width:none}.row .row:before,.row .row:after{content:" ";display:table}.row .row:after{clear:both}.row .row.collapse{width:auto;margin:0;max-width:none}.row .row.collapse:before,.row .row.collapse:after{content:" ";display:table}.row .row.collapse:after{clear:both}.column,.columns{padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left}[class*="column"]+[class*="column"]:last-child{float:right}[class*="column"]+[class*="column"].end{float:left}@media only screen{.small-push-0{position:relative;left:0%;right:auto}.small-pull-0{position:relative;right:0%;left:auto}.small-push-1{position:relative;left:8.33333%;right:auto}.small-pull-1{position:relative;right:8.33333%;left:auto}.small-push-2{position:relative;left:16.66667%;right:auto}.small-pull-2{position:relative;right:16.66667%;left:auto}.small-push-3{position:relative;left:25%;right:auto}.small-pull-3{position:relative;right:25%;left:auto}.small-push-4{position:relative;left:33.33333%;right:auto}.small-pull-4{position:relative;right:33.33333%;left:auto}.small-push-5{position:relative;left:41.66667%;right:auto}.small-pull-5{position:relative;right:41.66667%;left:auto}.small-push-6{position:relative;left:50%;right:auto}.small-pull-6{position:relative;right:50%;left:auto}.small-push-7{position:relative;left:58.33333%;right:auto}.small-pull-7{position:relative;right:58.33333%;left:auto}.small-push-8{position:relative;left:66.66667%;right:auto}.small-pull-8{position:relative;right:66.66667%;left:auto}.small-push-9{position:relative;left:75%;right:auto}.small-pull-9{position:relative;right:75%;left:auto}.small-push-10{position:relative;left:83.33333%;right:auto}.small-pull-10{position:relative;right:83.33333%;left:auto}.small-push-11{position:relative;left:91.66667%;right:auto}.small-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.small-1{width:8.33333%}.small-2{width:16.66667%}.small-3{width:25%}.small-4{width:33.33333%}.small-5{width:41.66667%}.small-6{width:50%}.small-7{width:58.33333%}.small-8{width:66.66667%}.small-9{width:75%}.small-10{width:83.33333%}.small-11{width:91.66667%}.small-12{width:100%}.small-offset-0{margin-left:0% !important}.small-offset-1{margin-left:8.33333% !important}.small-offset-2{margin-left:16.66667% !important}.small-offset-3{margin-left:25% !important}.small-offset-4{margin-left:33.33333% !important}.small-offset-5{margin-left:41.66667% !important}.small-offset-6{margin-left:50% !important}.small-offset-7{margin-left:58.33333% !important}.small-offset-8{margin-left:66.66667% !important}.small-offset-9{margin-left:75% !important}.small-offset-10{margin-left:83.33333% !important}.small-offset-11{margin-left:91.66667% !important}.small-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}.column.small-centered,.columns.small-centered{margin-left:auto;margin-right:auto;float:none}.column.small-uncentered,.columns.small-uncentered{margin-left:0;margin-right:0;float:left}.column.small-centered:last-child,.columns.small-centered:last-child{float:none}.column.small-uncentered:last-child,.columns.small-uncentered:last-child{float:left}.column.small-uncentered.opposite,.columns.small-uncentered.opposite{float:right}.row.small-collapse>.column,.row.small-collapse>.columns{padding-left:0;padding-right:0}.row.small-collapse .row{margin-left:0;margin-right:0}.row.small-uncollapse>.column,.row.small-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}}@media only screen and (min-width: 40.063em){.medium-push-0{position:relative;left:0%;right:auto}.medium-pull-0{position:relative;right:0%;left:auto}.medium-push-1{position:relative;left:8.33333%;right:auto}.medium-pull-1{position:relative;right:8.33333%;left:auto}.medium-push-2{position:relative;left:16.66667%;right:auto}.medium-pull-2{position:relative;right:16.66667%;left:auto}.medium-push-3{position:relative;left:25%;right:auto}.medium-pull-3{position:relative;right:25%;left:auto}.medium-push-4{position:relative;left:33.33333%;right:auto}.medium-pull-4{position:relative;right:33.33333%;left:auto}.medium-push-5{position:relative;left:41.66667%;right:auto}.medium-pull-5{position:relative;right:41.66667%;left:auto}.medium-push-6{position:relative;left:50%;right:auto}.medium-pull-6{position:relative;right:50%;left:auto}.medium-push-7{position:relative;left:58.33333%;right:auto}.medium-pull-7{position:relative;right:58.33333%;left:auto}.medium-push-8{position:relative;left:66.66667%;right:auto}.medium-pull-8{position:relative;right:66.66667%;left:auto}.medium-push-9{position:relative;left:75%;right:auto}.medium-pull-9{position:relative;right:75%;left:auto}.medium-push-10{position:relative;left:83.33333%;right:auto}.medium-pull-10{position:relative;right:83.33333%;left:auto}.medium-push-11{position:relative;left:91.66667%;right:auto}.medium-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.medium-1{width:8.33333%}.medium-2{width:16.66667%}.medium-3{width:25%}.medium-4{width:33.33333%}.medium-5{width:41.66667%}.medium-6{width:50%}.medium-7{width:58.33333%}.medium-8{width:66.66667%}.medium-9{width:75%}.medium-10{width:83.33333%}.medium-11{width:91.66667%}.medium-12{width:100%}.medium-offset-0{margin-left:0% !important}.medium-offset-1{margin-left:8.33333% !important}.medium-offset-2{margin-left:16.66667% !important}.medium-offset-3{margin-left:25% !important}.medium-offset-4{margin-left:33.33333% !important}.medium-offset-5{margin-left:41.66667% !important}.medium-offset-6{margin-left:50% !important}.medium-offset-7{margin-left:58.33333% !important}.medium-offset-8{margin-left:66.66667% !important}.medium-offset-9{margin-left:75% !important}.medium-offset-10{margin-left:83.33333% !important}.medium-offset-11{margin-left:91.66667% !important}.medium-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}.column.medium-centered,.columns.medium-centered{margin-left:auto;margin-right:auto;float:none}.column.medium-uncentered,.columns.medium-uncentered{margin-left:0;margin-right:0;float:left}.column.medium-centered:last-child,.columns.medium-centered:last-child{float:none}.column.medium-uncentered:last-child,.columns.medium-uncentered:last-child{float:left}.column.medium-uncentered.opposite,.columns.medium-uncentered.opposite{float:right}.row.medium-collapse>.column,.row.medium-collapse>.columns{padding-left:0;padding-right:0}.row.medium-collapse .row{margin-left:0;margin-right:0}.row.medium-uncollapse>.column,.row.medium-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0%;right:auto}.pull-0{position:relative;right:0%;left:auto}.push-1{position:relative;left:8.33333%;right:auto}.pull-1{position:relative;right:8.33333%;left:auto}.push-2{position:relative;left:16.66667%;right:auto}.pull-2{position:relative;right:16.66667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.33333%;right:auto}.pull-4{position:relative;right:33.33333%;left:auto}.push-5{position:relative;left:41.66667%;right:auto}.pull-5{position:relative;right:41.66667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.33333%;right:auto}.pull-7{position:relative;right:58.33333%;left:auto}.push-8{position:relative;left:66.66667%;right:auto}.pull-8{position:relative;right:66.66667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.33333%;right:auto}.pull-10{position:relative;right:83.33333%;left:auto}.push-11{position:relative;left:91.66667%;right:auto}.pull-11{position:relative;right:91.66667%;left:auto}}@media only screen and (min-width: 64.063em){.large-push-0{position:relative;left:0%;right:auto}.large-pull-0{position:relative;right:0%;left:auto}.large-push-1{position:relative;left:8.33333%;right:auto}.large-pull-1{position:relative;right:8.33333%;left:auto}.large-push-2{position:relative;left:16.66667%;right:auto}.large-pull-2{position:relative;right:16.66667%;left:auto}.large-push-3{position:relative;left:25%;right:auto}.large-pull-3{position:relative;right:25%;left:auto}.large-push-4{position:relative;left:33.33333%;right:auto}.large-pull-4{position:relative;right:33.33333%;left:auto}.large-push-5{position:relative;left:41.66667%;right:auto}.large-pull-5{position:relative;right:41.66667%;left:auto}.large-push-6{position:relative;left:50%;right:auto}.large-pull-6{position:relative;right:50%;left:auto}.large-push-7{position:relative;left:58.33333%;right:auto}.large-pull-7{position:relative;right:58.33333%;left:auto}.large-push-8{position:relative;left:66.66667%;right:auto}.large-pull-8{position:relative;right:66.66667%;left:auto}.large-push-9{position:relative;left:75%;right:auto}.large-pull-9{position:relative;right:75%;left:auto}.large-push-10{position:relative;left:83.33333%;right:auto}.large-pull-10{position:relative;right:83.33333%;left:auto}.large-push-11{position:relative;left:91.66667%;right:auto}.large-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.large-1{width:8.33333%}.large-2{width:16.66667%}.large-3{width:25%}.large-4{width:33.33333%}.large-5{width:41.66667%}.large-6{width:50%}.large-7{width:58.33333%}.large-8{width:66.66667%}.large-9{width:75%}.large-10{width:83.33333%}.large-11{width:91.66667%}.large-12{width:100%}.large-offset-0{margin-left:0% !important}.large-offset-1{margin-left:8.33333% !important}.large-offset-2{margin-left:16.66667% !important}.large-offset-3{margin-left:25% !important}.large-offset-4{margin-left:33.33333% !important}.large-offset-5{margin-left:41.66667% !important}.large-offset-6{margin-left:50% !important}.large-offset-7{margin-left:58.33333% !important}.large-offset-8{margin-left:66.66667% !important}.large-offset-9{margin-left:75% !important}.large-offset-10{margin-left:83.33333% !important}.large-offset-11{margin-left:91.66667% !important}.large-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}.column.large-centered,.columns.large-centered{margin-left:auto;margin-right:auto;float:none}.column.large-uncentered,.columns.large-uncentered{margin-left:0;margin-right:0;float:left}.column.large-centered:last-child,.columns.large-centered:last-child{float:none}.column.large-uncentered:last-child,.columns.large-uncentered:last-child{float:left}.column.large-uncentered.opposite,.columns.large-uncentered.opposite{float:right}.row.large-collapse>.column,.row.large-collapse>.columns{padding-left:0;padding-right:0}.row.large-collapse .row{margin-left:0;margin-right:0}.row.large-uncollapse>.column,.row.large-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0%;right:auto}.pull-0{position:relative;right:0%;left:auto}.push-1{position:relative;left:8.33333%;right:auto}.pull-1{position:relative;right:8.33333%;left:auto}.push-2{position:relative;left:16.66667%;right:auto}.pull-2{position:relative;right:16.66667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.33333%;right:auto}.pull-4{position:relative;right:33.33333%;left:auto}.push-5{position:relative;left:41.66667%;right:auto}.pull-5{position:relative;right:41.66667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.33333%;right:auto}.pull-7{position:relative;right:58.33333%;left:auto}.push-8{position:relative;left:66.66667%;right:auto}.pull-8{position:relative;right:66.66667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.33333%;right:auto}.pull-10{position:relative;right:83.33333%;left:auto}.push-11{position:relative;left:91.66667%;right:auto}.pull-11{position:relative;right:91.66667%;left:auto}}button,.button{border-style:solid;border-width:0;cursor:pointer;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:normal;margin:0 0 1.25rem;position:relative;text-decoration:none;text-align:center;-webkit-appearance:none;-moz-appearance:none;border-radius:0;display:inline-block;padding-top:1rem;padding-right:2rem;padding-bottom:1.0625rem;padding-left:2rem;font-size:1rem;background-color:#008CBA;border-color:#007095;color:#fff;transition:background-color 300ms ease-out}button:hover,button:focus,.button:hover,.button:focus{background-color:#007095}button:hover,button:focus,.button:hover,.button:focus{color:#fff}button.secondary,.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{background-color:#b9b9b9}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{color:#333}button.success,.button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{background-color:#368a55}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{color:#fff}button.alert,.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{background-color:#cf2a0e}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{color:#fff}button.warning,.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{background-color:#cf6e0e}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{color:#fff}button.info,.button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{background-color:#61b6d9}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{color:#fff}button.large,.button.large{padding-top:1.125rem;padding-right:2.25rem;padding-bottom:1.1875rem;padding-left:2.25rem;font-size:1.25rem}button.small,.button.small{padding-top:0.875rem;padding-right:1.75rem;padding-bottom:0.9375rem;padding-left:1.75rem;font-size:0.8125rem}button.tiny,.button.tiny{padding-top:0.625rem;padding-right:1.25rem;padding-bottom:0.6875rem;padding-left:1.25rem;font-size:0.6875rem}button.expand,.button.expand{padding-right:0;padding-left:0;width:100%}button.left-align,.button.left-align{text-align:left;text-indent:0.75rem}button.right-align,.button.right-align{text-align:right;padding-right:0.75rem}button.radius,.button.radius{border-radius:3px}button.round,.button.round{border-radius:1000px}button.disabled,button[disabled],.button.disabled,.button[disabled]{background-color:#008CBA;border-color:#007095;color:#fff;cursor:default;opacity:0.7;box-shadow:none}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#007095}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{color:#fff}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#008CBA}button.disabled.secondary,button[disabled].secondary,.button.disabled.secondary,.button[disabled].secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333;cursor:default;opacity:0.7;box-shadow:none}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#b9b9b9}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{color:#333}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#e7e7e7}button.disabled.success,button[disabled].success,.button.disabled.success,.button[disabled].success{background-color:#43AC6A;border-color:#368a55;color:#fff;cursor:default;opacity:0.7;box-shadow:none}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#368a55}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{color:#fff}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#43AC6A}button.disabled.alert,button[disabled].alert,.button.disabled.alert,.button[disabled].alert{background-color:#f04124;border-color:#cf2a0e;color:#fff;cursor:default;opacity:0.7;box-shadow:none}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#cf2a0e}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{color:#fff}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#f04124}button.disabled.warning,button[disabled].warning,.button.disabled.warning,.button[disabled].warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff;cursor:default;opacity:0.7;box-shadow:none}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#cf6e0e}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{color:#fff}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#f08a24}button.disabled.info,button[disabled].info,.button.disabled.info,.button[disabled].info{background-color:#a0d3e8;border-color:#61b6d9;color:#333;cursor:default;opacity:0.7;box-shadow:none}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#61b6d9}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{color:#fff}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#a0d3e8}button::-moz-focus-inner{border:0;padding:0}@media only screen and (min-width: 40.063em){button,.button{display:inline-block}}form{margin:0 0 1rem}form .row .row{margin:0 -0.5rem}form .row .row .column,form .row .row .columns{padding:0 0.5rem}form .row .row.collapse{margin:0}form .row .row.collapse .column,form .row .row.collapse .columns{padding:0}form .row .row.collapse input{-webkit-border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-bottom-right-radius:0;border-top-right-radius:0}form .row input.column,form .row input.columns,form .row textarea.column,form .row textarea.columns{padding-left:0.5rem}label{font-size:0.875rem;color:#4d4d4d;cursor:pointer;display:block;font-weight:normal;line-height:1.5;margin-bottom:0}label.right{float:none !important;text-align:right}label.inline{margin:0 0 1rem 0;padding:0.5625rem 0}label small{text-transform:capitalize;color:#676767}.prefix,.postfix{display:block;position:relative;z-index:2;text-align:center;width:100%;padding-top:0;padding-bottom:0;border-style:solid;border-width:1px;overflow:visible;font-size:0.875rem;height:2.3125rem;line-height:2.3125rem}.postfix.button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;border:none}.prefix.button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;border:none}.prefix.button.radius{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.postfix.button.radius{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.prefix.button.round{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.postfix.button.round{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}span.prefix,label.prefix{background:#f2f2f2;border-right:none;color:#333;border-color:#ccc}span.postfix,label.postfix{background:#f2f2f2;border-left:none;color:#333;border-color:#ccc}input[type="text"],input[type="password"],input[type="date"],input[type="datetime"],input[type="datetime-local"],input[type="month"],input[type="week"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],input[type="color"],textarea{-webkit-appearance:none;border-radius:0;background-color:#fff;font-family:inherit;border-style:solid;border-width:1px;border-color:#ccc;box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-size:0.875rem;margin:0 0 1rem 0;padding:0.5rem;height:2.3125rem;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;transition:all 0.15s linear}input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="month"]:focus,input[type="week"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,input[type="color"]:focus,textarea:focus{background:#fafafa;border-color:#999;outline:none}input[type="text"]:disabled,input[type="password"]:disabled,input[type="date"]:disabled,input[type="datetime"]:disabled,input[type="datetime-local"]:disabled,input[type="month"]:disabled,input[type="week"]:disabled,input[type="email"]:disabled,input[type="number"]:disabled,input[type="search"]:disabled,input[type="tel"]:disabled,input[type="time"]:disabled,input[type="url"]:disabled,input[type="color"]:disabled,textarea:disabled{background-color:#ddd;cursor:default}input[type="text"][disabled],input[type="text"][readonly],fieldset[disabled] input[type="text"],input[type="password"][disabled],input[type="password"][readonly],fieldset[disabled] input[type="password"],input[type="date"][disabled],input[type="date"][readonly],fieldset[disabled] input[type="date"],input[type="datetime"][disabled],input[type="datetime"][readonly],fieldset[disabled] input[type="datetime"],input[type="datetime-local"][disabled],input[type="datetime-local"][readonly],fieldset[disabled] input[type="datetime-local"],input[type="month"][disabled],input[type="month"][readonly],fieldset[disabled] input[type="month"],input[type="week"][disabled],input[type="week"][readonly],fieldset[disabled] input[type="week"],input[type="email"][disabled],input[type="email"][readonly],fieldset[disabled] input[type="email"],input[type="number"][disabled],input[type="number"][readonly],fieldset[disabled] input[type="number"],input[type="search"][disabled],input[type="search"][readonly],fieldset[disabled] input[type="search"],input[type="tel"][disabled],input[type="tel"][readonly],fieldset[disabled] input[type="tel"],input[type="time"][disabled],input[type="time"][readonly],fieldset[disabled] input[type="time"],input[type="url"][disabled],input[type="url"][readonly],fieldset[disabled] input[type="url"],input[type="color"][disabled],input[type="color"][readonly],fieldset[disabled] input[type="color"],textarea[disabled],textarea[readonly],fieldset[disabled] textarea{background-color:#ddd;cursor:default}input[type="text"].radius,input[type="password"].radius,input[type="date"].radius,input[type="datetime"].radius,input[type="datetime-local"].radius,input[type="month"].radius,input[type="week"].radius,input[type="email"].radius,input[type="number"].radius,input[type="search"].radius,input[type="tel"].radius,input[type="time"].radius,input[type="url"].radius,input[type="color"].radius,textarea.radius{border-radius:3px}form .row .prefix-radius.row.collapse input,form .row .prefix-radius.row.collapse textarea,form .row .prefix-radius.row.collapse select,form .row .prefix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-radius.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse input,form .row .postfix-radius.row.collapse textarea,form .row .postfix-radius.row.collapse select,form .row .postfix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-round.row.collapse input,form .row .prefix-round.row.collapse textarea,form .row .prefix-round.row.collapse select,form .row .prefix-round.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}form .row .prefix-round.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse input,form .row .postfix-round.row.collapse textarea,form .row .postfix-round.row.collapse select,form .row .postfix-round.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}input[type="submit"]{-webkit-appearance:none;border-radius:0}textarea[rows]{height:auto}textarea{max-width:100%}select{-webkit-appearance:none !important;border-radius:0;background-color:#FAFAFA;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);background-position:100% center;background-repeat:no-repeat;border-style:solid;border-width:1px;border-color:#ccc;padding:0.5rem;font-size:0.875rem;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;color:rgba(0,0,0,0.75);line-height:normal;border-radius:0;height:2.3125rem}select::-ms-expand{display:none}select.radius{border-radius:3px}select:hover{background-color:#f3f3f3;border-color:#999}select:disabled{background-color:#ddd;cursor:default}select[multiple]{height:auto}input[type="file"],input[type="checkbox"],input[type="radio"],select{margin:0 0 1rem 0}input[type="checkbox"]+label,input[type="radio"]+label{display:inline-block;margin-left:0.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}input[type="file"]{width:100%}fieldset{border:1px solid #ddd;padding:1.25rem;margin:1.125rem 0}fieldset legend{font-weight:bold;background:#fff;padding:0 0.1875rem;margin:0;margin-left:-0.1875rem}[data-abide] .error small.error,[data-abide] .error span.error,[data-abide] span.error,[data-abide] small.error{display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#fff}[data-abide] span.error,[data-abide] small.error{display:none}span.error,small.error{display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#fff}.error input,.error textarea,.error select{margin-bottom:0}.error input[type="checkbox"],.error input[type="radio"]{margin-bottom:1rem}.error label,.error label.error{color:#f04124}.error small.error{display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#fff}.error>label>small{color:#676767;background:transparent;padding:0;text-transform:capitalize;font-style:normal;font-size:60%;margin:0;display:inline}.error span.error-message{display:block}input.error,textarea.error,select.error{margin-bottom:0}label.error{color:#f04124}meta.foundation-mq-topbar{font-family:"/only screen and (min-width:40.063em)/";width:40.063em}.contain-to-grid{width:100%;background:#333}.contain-to-grid .top-bar{margin-bottom:0}.fixed{width:100%;left:0;position:fixed;top:0;z-index:99}.fixed.expanded:not(.top-bar){overflow-y:auto;height:auto;width:100%;max-height:100%}.fixed.expanded:not(.top-bar) .title-area{position:fixed;width:100%;z-index:99}.fixed.expanded:not(.top-bar) .top-bar-section{z-index:98;margin-top:2.8125rem}.top-bar{overflow:hidden;height:2.8125rem;line-height:2.8125rem;position:relative;background:#333;margin-bottom:0}.top-bar ul{margin-bottom:0;list-style:none}.top-bar .row{max-width:none}.top-bar form,.top-bar input{margin-bottom:0}.top-bar input{height:1.75rem;padding-top:.35rem;padding-bottom:.35rem;font-size:0.75rem}.top-bar .button,.top-bar button{padding-top:0.4125rem;padding-bottom:0.4125rem;margin-bottom:0;font-size:0.75rem}@media only screen and (max-width: 40em){.top-bar .button,.top-bar button{position:relative;top:-1px}}.top-bar .title-area{position:relative;margin:0}.top-bar .name{height:2.8125rem;margin:0;font-size:16px}.top-bar .name h1,.top-bar .name h2,.top-bar .name h3,.top-bar .name h4,.top-bar .name p,.top-bar .name span{line-height:2.8125rem;font-size:1.0625rem;margin:0}.top-bar .name h1 a,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name p a,.top-bar .name span a{font-weight:normal;color:#fff;width:75%;display:block;padding:0 0.9375rem}.top-bar .toggle-topbar{position:absolute;right:0;top:0}.top-bar .toggle-topbar a{color:#fff;text-transform:uppercase;font-size:0.8125rem;font-weight:bold;position:relative;display:block;padding:0 0.9375rem;height:2.8125rem;line-height:2.8125rem}.top-bar .toggle-topbar.menu-icon{top:50%;margin-top:-16px}.top-bar .toggle-topbar.menu-icon a{height:34px;line-height:33px;padding:0 2.5rem 0 0.9375rem;color:#fff;position:relative}.top-bar .toggle-topbar.menu-icon a span::after{content:"";position:absolute;display:block;height:0;top:50%;margin-top:-8px;right:0.9375rem;box-shadow:0 0 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:16px}.top-bar .toggle-topbar.menu-icon a span:hover:after{box-shadow:0 0 0 1px "",0 7px 0 1px "",0 14px 0 1px ""}.top-bar.expanded{height:auto;background:transparent}.top-bar.expanded .title-area{background:#333}.top-bar.expanded .toggle-topbar a{color:#888}.top-bar.expanded .toggle-topbar a span::after{box-shadow:0 0 0 1px #888,0 7px 0 1px #888,0 14px 0 1px #888}.top-bar-section{left:0;position:relative;width:auto;transition:left 300ms ease-out}.top-bar-section ul{padding:0;width:100%;height:auto;display:block;font-size:16px;margin:0}.top-bar-section .divider,.top-bar-section [role="separator"]{border-top:solid 1px #1a1a1a;clear:both;height:1px;width:100%}.top-bar-section ul li{background:#333}.top-bar-section ul li>a{display:block;width:100%;color:#fff;padding:12px 0 12px 0;padding-left:0.9375rem;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:0.8125rem;font-weight:normal;text-transform:none}.top-bar-section ul li>a.button{font-size:0.8125rem;padding-right:0.9375rem;padding-left:0.9375rem;background-color:#008CBA;border-color:#007095;color:#fff}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{background-color:#007095}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{color:#fff}.top-bar-section ul li>a.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{color:#333}.top-bar-section ul li>a.button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{background-color:#368a55}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{color:#fff}.top-bar-section ul li>a.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{color:#fff}.top-bar-section ul li>a.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{color:#fff}.top-bar-section ul li>button{font-size:0.8125rem;padding-right:0.9375rem;padding-left:0.9375rem;background-color:#008CBA;border-color:#007095;color:#fff}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{background-color:#007095}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{color:#fff}.top-bar-section ul li>button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{color:#333}.top-bar-section ul li>button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{background-color:#368a55}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{color:#fff}.top-bar-section ul li>button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{color:#fff}.top-bar-section ul li>button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{color:#fff}.top-bar-section ul li:hover:not(.has-form)>a{background-color:#555;background:#333;color:#fff}.top-bar-section ul li.active>a{background:#008CBA;color:#fff}.top-bar-section ul li.active>a:hover{background:#0078a0;color:#fff}.top-bar-section .has-form{padding:0.9375rem}.top-bar-section .has-dropdown{position:relative}.top-bar-section .has-dropdown>a:after{content:"";display:block;width:0;height:0;border:inset 5px;border-color:transparent transparent transparent rgba(255,255,255,0.4);border-left-style:solid;margin-right:0.9375rem;margin-top:-4.5px;position:absolute;top:50%;right:0}.top-bar-section .has-dropdown.moved{position:static}.top-bar-section .has-dropdown.moved>.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;width:100%}.top-bar-section .has-dropdown.moved>a:after{display:none}.top-bar-section .dropdown{padding:0;position:absolute;left:100%;top:0;z-index:99;display:block;position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}.top-bar-section .dropdown li{width:100%;height:auto}.top-bar-section .dropdown li a{font-weight:normal;padding:8px 0.9375rem}.top-bar-section .dropdown li a.parent-link{font-weight:normal}.top-bar-section .dropdown li.title h5,.top-bar-section .dropdown li.parent-link{margin-bottom:0;margin-top:0;font-size:1.125rem}.top-bar-section .dropdown li.title h5 a,.top-bar-section .dropdown li.parent-link a{color:#fff;display:block}.top-bar-section .dropdown li.title h5 a:hover,.top-bar-section .dropdown li.parent-link a:hover{background:none}.top-bar-section .dropdown li.has-form{padding:8px 0.9375rem}.top-bar-section .dropdown li .button,.top-bar-section .dropdown li button{top:auto}.top-bar-section .dropdown label{padding:8px 0.9375rem 2px;margin-bottom:0;text-transform:uppercase;color:#777;font-weight:bold;font-size:0.625rem}.js-generated{display:block}@media only screen and (min-width: 40.063em){.top-bar{background:#333;overflow:visible}.top-bar:before,.top-bar:after{content:" ";display:table}.top-bar:after{clear:both}.top-bar .toggle-topbar{display:none}.top-bar .title-area{float:left}.top-bar .name h1 a,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name h5 a,.top-bar .name h6 a{width:auto}.top-bar input,.top-bar .button,.top-bar button{font-size:0.875rem;position:relative;height:1.75rem;top:0.53125rem}.top-bar.expanded{background:#333}.contain-to-grid .top-bar{max-width:62.5rem;margin:0 auto;margin-bottom:0}.top-bar-section{transition:none 0 0;left:0 !important}.top-bar-section ul{width:auto;height:auto !important;display:inline}.top-bar-section ul li{float:left}.top-bar-section ul li .js-generated{display:none}.top-bar-section li.hover>a:not(.button){background-color:#555;background:#333;color:#fff}.top-bar-section li:not(.has-form) a:not(.button){padding:0 0.9375rem;line-height:2.8125rem;background:#333}.top-bar-section li:not(.has-form) a:not(.button):hover{background-color:#555;background:#333}.top-bar-section li.active:not(.has-form) a:not(.button){padding:0 0.9375rem;line-height:2.8125rem;color:#fff;background:#008CBA}.top-bar-section li.active:not(.has-form) a:not(.button):hover{background:#0078a0;color:#fff}.top-bar-section .has-dropdown>a{padding-right:2.1875rem !important}.top-bar-section .has-dropdown>a:after{content:"";display:block;width:0;height:0;border:inset 5px;border-color:rgba(255,255,255,0.4) transparent transparent transparent;border-top-style:solid;margin-top:-2.5px;top:1.40625rem}.top-bar-section .has-dropdown.moved{position:relative}.top-bar-section .has-dropdown.moved>.dropdown{display:block;position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}.top-bar-section .has-dropdown.hover>.dropdown,.top-bar-section .has-dropdown.not-click:hover>.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important}.top-bar-section .has-dropdown>a:focus+.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important}.top-bar-section .has-dropdown .dropdown li.has-dropdown>a:after{border:none;content:"\00bb";top:1rem;margin-top:-1px;right:5px;line-height:1.2}.top-bar-section .dropdown{left:0;top:auto;background:transparent;min-width:100%}.top-bar-section .dropdown li a{color:#fff;line-height:2.8125rem;white-space:nowrap;padding:12px 0.9375rem;background:#333}.top-bar-section .dropdown li:not(.has-form):not(.active)>a:not(.button){color:#fff;background:#333}.top-bar-section .dropdown li:not(.has-form):not(.active):hover>a:not(.button){color:#fff;background-color:#555;background:#333}.top-bar-section .dropdown li label{white-space:nowrap;background:#333}.top-bar-section .dropdown li .dropdown{left:100%;top:0}.top-bar-section>ul>.divider,.top-bar-section>ul>[role="separator"]{border-bottom:none;border-top:none;border-right:solid 1px #4e4e4e;clear:none;height:2.8125rem;width:0}.top-bar-section .has-form{background:#333;padding:0 0.9375rem;height:2.8125rem}.top-bar-section .right li .dropdown{left:auto;right:0}.top-bar-section .right li .dropdown li .dropdown{right:100%}.top-bar-section .left li .dropdown{right:auto;left:0}.top-bar-section .left li .dropdown li .dropdown{left:100%}.no-js .top-bar-section ul li:hover>a{background-color:#555;background:#333;color:#fff}.no-js .top-bar-section ul li:active>a{background:#008CBA;color:#fff}.no-js .top-bar-section .has-dropdown:hover>.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important}.no-js .top-bar-section .has-dropdown>a:focus+.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important}}.breadcrumbs{display:block;padding:0.5625rem 0.875rem 0.5625rem;overflow:hidden;margin-left:0;list-style:none;border-style:solid;border-width:1px;background-color:#f4f4f4;border-color:#dcdcdc;border-radius:3px}.breadcrumbs>*{margin:0;float:left;font-size:0.6875rem;line-height:0.6875rem;text-transform:uppercase;color:#008CBA}.breadcrumbs>*:hover a,.breadcrumbs>*:focus a{text-decoration:underline}.breadcrumbs>* a{color:#008CBA}.breadcrumbs>*.current{cursor:default;color:#333}.breadcrumbs>*.current a{cursor:default;color:#333}.breadcrumbs>*.current:hover,.breadcrumbs>*.current:hover a,.breadcrumbs>*.current:focus,.breadcrumbs>*.current:focus a{text-decoration:none}.breadcrumbs>*.unavailable{color:#999}.breadcrumbs>*.unavailable a{color:#999}.breadcrumbs>*.unavailable:hover,.breadcrumbs>*.unavailable:hover a,.breadcrumbs>*.unavailable:focus,.breadcrumbs>*.unavailable a:focus{text-decoration:none;color:#999;cursor:not-allowed}.breadcrumbs>*:before{content:"/";color:#aaa;margin:0 0.75rem;position:relative;top:1px}.breadcrumbs>*:first-child:before{content:" ";margin:0}[aria-label="breadcrumbs"] [aria-hidden="true"]:after{content:"/"}.alert-box{border-style:solid;border-width:1px;display:block;font-weight:normal;margin-bottom:1.25rem;position:relative;padding:0.875rem 1.5rem 0.875rem 0.875rem;font-size:0.8125rem;transition:opacity 300ms ease-out;background-color:#008CBA;border-color:#0078a0;color:#fff}.alert-box .close{font-size:1.375rem;padding:0 6px 4px;line-height:.9;position:absolute;top:50%;margin-top:-0.6875rem;right:0.25rem;color:#333;opacity:0.3;background:inherit}.alert-box .close:hover,.alert-box .close:focus{opacity:0.5}.alert-box.radius{border-radius:3px}.alert-box.round{border-radius:1000px}.alert-box.success{background-color:#43AC6A;border-color:#3a945b;color:#fff}.alert-box.alert{background-color:#f04124;border-color:#de2d0f;color:#fff}.alert-box.secondary{background-color:#e7e7e7;border-color:#c7c7c7;color:#4f4f4f}.alert-box.warning{background-color:#f08a24;border-color:#de770f;color:#fff}.alert-box.info{background-color:#a0d3e8;border-color:#74bfdd;color:#4f4f4f}.alert-box.alert-close{opacity:0}.inline-list{margin:0 auto 1.0625rem auto;margin-left:-1.375rem;margin-right:0;padding:0;list-style:none;overflow:hidden}.inline-list>li{list-style:none;float:left;margin-left:1.375rem;display:block}.inline-list>li>*{display:block}.button-group{list-style:none;margin:0;left:0}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group.even-2 li{margin:0 -2px;display:inline-block;width:50%}.button-group.even-2 li>button,.button-group.even-2 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-2 li:first-child button,.button-group.even-2 li:first-child .button{border-left:0}.button-group.even-2 li button,.button-group.even-2 li .button{width:100%}.button-group.even-3 li{margin:0 -2px;display:inline-block;width:33.33333%}.button-group.even-3 li>button,.button-group.even-3 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-3 li:first-child button,.button-group.even-3 li:first-child .button{border-left:0}.button-group.even-3 li button,.button-group.even-3 li .button{width:100%}.button-group.even-4 li{margin:0 -2px;display:inline-block;width:25%}.button-group.even-4 li>button,.button-group.even-4 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-4 li:first-child button,.button-group.even-4 li:first-child .button{border-left:0}.button-group.even-4 li button,.button-group.even-4 li .button{width:100%}.button-group.even-5 li{margin:0 -2px;display:inline-block;width:20%}.button-group.even-5 li>button,.button-group.even-5 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-5 li:first-child button,.button-group.even-5 li:first-child .button{border-left:0}.button-group.even-5 li button,.button-group.even-5 li .button{width:100%}.button-group.even-6 li{margin:0 -2px;display:inline-block;width:16.66667%}.button-group.even-6 li>button,.button-group.even-6 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-6 li:first-child button,.button-group.even-6 li:first-child .button{border-left:0}.button-group.even-6 li button,.button-group.even-6 li .button{width:100%}.button-group.even-7 li{margin:0 -2px;display:inline-block;width:14.28571%}.button-group.even-7 li>button,.button-group.even-7 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-7 li:first-child button,.button-group.even-7 li:first-child .button{border-left:0}.button-group.even-7 li button,.button-group.even-7 li .button{width:100%}.button-group.even-8 li{margin:0 -2px;display:inline-block;width:12.5%}.button-group.even-8 li>button,.button-group.even-8 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-8 li:first-child button,.button-group.even-8 li:first-child .button{border-left:0}.button-group.even-8 li button,.button-group.even-8 li .button{width:100%}.button-group>li{margin:0 -2px;display:inline-block}.button-group>li>button,.button-group>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group>li:first-child button,.button-group>li:first-child .button{border-left:0}.button-group.stack>li{margin:0 -2px;display:inline-block;display:block;margin:0;float:none}.button-group.stack>li>button,.button-group.stack>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-left:0}.button-group.stack>li>button,.button-group.stack>li .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block}.button-group.stack>li>button{width:100%}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-top:0}.button-group.stack-for-small>li{margin:0 -2px;display:inline-block}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}@media only screen and (max-width: 40em){.button-group.stack-for-small>li{margin:0 -2px;display:inline-block;display:block;margin:0}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block}.button-group.stack-for-small>li>button{width:100%}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-top:0}}.button-group.radius>*{margin:0 -2px;display:inline-block}.button-group.radius>*>button,.button-group.radius>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius>*:first-child button,.button-group.radius>*:first-child .button{border-left:0}.button-group.radius>*,.button-group.radius>*>a,.button-group.radius>*>button,.button-group.radius>*>.button{border-radius:0}.button-group.radius>*:first-child,.button-group.radius>*:first-child>a,.button-group.radius>*:first-child>button,.button-group.radius>*:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius>*:last-child,.button-group.radius>*:last-child>a,.button-group.radius>*:last-child>button,.button-group.radius>*:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*{margin:0 -2px;display:inline-block;display:block;margin:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-left:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block}.button-group.radius.stack>*>button{width:100%}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-top:0}.button-group.radius.stack>*,.button-group.radius.stack>*>a,.button-group.radius.stack>*>button,.button-group.radius.stack>*>.button{border-radius:0}.button-group.radius.stack>*:first-child,.button-group.radius.stack>*:first-child>a,.button-group.radius.stack>*:first-child>button,.button-group.radius.stack>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*:last-child,.button-group.radius.stack>*:last-child>a,.button-group.radius.stack>*:last-child>button,.button-group.radius.stack>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}@media only screen and (min-width: 40.063em){.button-group.radius.stack-for-small>*{margin:0 -2px;display:inline-block}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}}@media only screen and (max-width: 40em){.button-group.radius.stack-for-small>*{margin:0 -2px;display:inline-block;display:block;margin:0}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block}.button-group.radius.stack-for-small>*>button{width:100%}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-top:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}}.button-group.round>*{margin:0 -2px;display:inline-block}.button-group.round>*>button,.button-group.round>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round>*:first-child button,.button-group.round>*:first-child .button{border-left:0}.button-group.round>*,.button-group.round>*>a,.button-group.round>*>button,.button-group.round>*>.button{border-radius:0}.button-group.round>*:first-child,.button-group.round>*:first-child>a,.button-group.round>*:first-child>button,.button-group.round>*:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round>*:last-child,.button-group.round>*:last-child>a,.button-group.round>*:last-child>button,.button-group.round>*:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.button-group.round.stack>*{margin:0 -2px;display:inline-block;display:block;margin:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-left:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block}.button-group.round.stack>*>button{width:100%}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-top:0}.button-group.round.stack>*,.button-group.round.stack>*>a,.button-group.round.stack>*>button,.button-group.round.stack>*>.button{border-radius:0}.button-group.round.stack>*:first-child,.button-group.round.stack>*:first-child>a,.button-group.round.stack>*:first-child>button,.button-group.round.stack>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack>*:last-child,.button-group.round.stack>*:last-child>a,.button-group.round.stack>*:last-child>button,.button-group.round.stack>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}@media only screen and (min-width: 40.063em){.button-group.round.stack-for-small>*{margin:0 -2px;display:inline-block}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}}@media only screen and (max-width: 40em){.button-group.round.stack-for-small>*{margin:0 -2px;display:inline-block;display:block;margin:0}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block}.button-group.round.stack-for-small>*>button{width:100%}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-top:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}}.button-bar:before,.button-bar:after{content:" ";display:table}.button-bar:after{clear:both}.button-bar .button-group{float:left;margin-right:0.625rem}.button-bar .button-group div{overflow:hidden}.panel{border-style:solid;border-width:1px;border-color:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#f2f2f2;color:#333}.panel>:first-child{margin-top:0}.panel>:last-child{margin-bottom:0}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6,.panel p,.panel li,.panel dl{color:#333}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6{line-height:1;margin-bottom:0.625rem}.panel h1.subheader,.panel h2.subheader,.panel h3.subheader,.panel h4.subheader,.panel h5.subheader,.panel h6.subheader{line-height:1.4}.panel.callout{border-style:solid;border-width:1px;border-color:#b6edff;margin-bottom:1.25rem;padding:1.25rem;background:#ecfaff;color:#333}.panel.callout>:first-child{margin-top:0}.panel.callout>:last-child{margin-bottom:0}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6,.panel.callout p,.panel.callout li,.panel.callout dl{color:#333}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6{line-height:1;margin-bottom:0.625rem}.panel.callout h1.subheader,.panel.callout h2.subheader,.panel.callout h3.subheader,.panel.callout h4.subheader,.panel.callout h5.subheader,.panel.callout h6.subheader{line-height:1.4}.panel.callout a:not(.button){color:#008CBA}.panel.callout a:not(.button):hover,.panel.callout a:not(.button):focus{color:#0078a0}.panel.radius{border-radius:3px}.dropdown.button,button.dropdown{position:relative;outline:none;padding-right:3.5625rem}.dropdown.button::after,button.dropdown::after{position:absolute;content:"";width:0;height:0;display:block;border-style:solid;border-color:#fff transparent transparent transparent;top:50%}.dropdown.button::after,button.dropdown::after{border-width:0.375rem;right:1.40625rem;margin-top:-0.15625rem}.dropdown.button::after,button.dropdown::after{border-color:#fff transparent transparent transparent}.dropdown.button.tiny,button.dropdown.tiny{padding-right:2.625rem}.dropdown.button.tiny:after,button.dropdown.tiny:after{border-width:0.375rem;right:1.125rem;margin-top:-0.125rem}.dropdown.button.tiny::after,button.dropdown.tiny::after{border-color:#fff transparent transparent transparent}.dropdown.button.small,button.dropdown.small{padding-right:3.0625rem}.dropdown.button.small::after,button.dropdown.small::after{border-width:0.4375rem;right:1.3125rem;margin-top:-0.15625rem}.dropdown.button.small::after,button.dropdown.small::after{border-color:#fff transparent transparent transparent}.dropdown.button.large,button.dropdown.large{padding-right:3.625rem}.dropdown.button.large::after,button.dropdown.large::after{border-width:0.3125rem;right:1.71875rem;margin-top:-0.15625rem}.dropdown.button.large::after,button.dropdown.large::after{border-color:#fff transparent transparent transparent}.dropdown.button.secondary:after,button.dropdown.secondary:after{border-color:#333 transparent transparent transparent}.th{line-height:0;display:inline-block;border:solid 4px #fff;max-width:100%;box-shadow:0 0 0 1px rgba(0,0,0,0.2);transition:all 200ms ease-out}.th:hover,.th:focus{box-shadow:0 0 6px 1px rgba(0,140,186,0.5)}.th.radius{border-radius:3px}.toolbar{background:#333;width:100%;font-size:0;display:inline-block}.toolbar.label-bottom .tab .tab-content i,.toolbar.label-bottom .tab .tab-content img{margin-bottom:10px}.toolbar.label-right .tab .tab-content i,.toolbar.label-right .tab .tab-content img{margin-right:10px;display:inline-block}.toolbar.label-right .tab .tab-content label{display:inline-block}.toolbar.vertical.label-right .tab .tab-content{text-align:left}.toolbar.vertical{height:100%;width:auto}.toolbar.vertical .tab{width:auto;margin:auto;float:none}.toolbar .tab{text-align:center;width:25%;margin:0 auto;display:block;padding:20px;float:left}.toolbar .tab:hover{background:rgba(255,255,255,0.1)}.toolbar .tab-content{font-size:16px;text-align:center}.toolbar .tab-content label{color:#ccc}.toolbar .tab-content i{font-size:30px;display:block;margin:0 auto;color:#ccc;vertical-align:middle}.toolbar .tab-content img{width:30px;height:30px;display:block;margin:0 auto}.pricing-table{border:solid 1px #ddd;margin-left:0;margin-bottom:1.25rem}.pricing-table *{list-style:none;line-height:1}.pricing-table .title{background-color:#333;padding:0.9375rem 1.25rem;text-align:center;color:#eee;font-weight:normal;font-size:1rem;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif}.pricing-table .price{background-color:#F6F6F6;padding:0.9375rem 1.25rem;text-align:center;color:#333;font-weight:normal;font-size:2rem;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif}.pricing-table .description{background-color:#fff;padding:0.9375rem;text-align:center;color:#777;font-size:0.75rem;font-weight:normal;line-height:1.4;border-bottom:dotted 1px #ddd}.pricing-table .bullet-item{background-color:#fff;padding:0.9375rem;text-align:center;color:#333;font-size:0.875rem;font-weight:normal;border-bottom:dotted 1px #ddd}.pricing-table .cta-button{background-color:#fff;text-align:center;padding:1.25rem 1.25rem 0}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotate{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotate{from{-o-transform:rotate(0deg)}to{-o-transform:rotate(360deg)}}@keyframes rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.slideshow-wrapper{position:relative}.slideshow-wrapper ul{list-style-type:none;margin:0}.slideshow-wrapper ul li,.slideshow-wrapper ul li .orbit-caption{display:none}.slideshow-wrapper ul li:first-child{display:block}.slideshow-wrapper .orbit-container{background-color:transparent}.slideshow-wrapper .orbit-container li{display:block}.slideshow-wrapper .orbit-container li .orbit-caption{display:block}.slideshow-wrapper .orbit-container .orbit-bullets li{display:inline-block}.slideshow-wrapper .preloader{display:block;width:40px;height:40px;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-20px;border:solid 3px;border-color:#555 #fff;border-radius:1000px;animation-name:rotate;animation-duration:1.5s;animation-iteration-count:infinite;animation-timing-function:linear}.orbit-container{overflow:hidden;width:100%;position:relative;background:none}.orbit-container .orbit-slides-container{list-style:none;margin:0;padding:0;position:relative;-webkit-transform:translateZ(0)}.orbit-container .orbit-slides-container img{display:block;max-width:100%}.orbit-container .orbit-slides-container>*{position:absolute;top:0;width:100%;margin-left:100%}.orbit-container .orbit-slides-container>*:first-child{margin-left:0}.orbit-container .orbit-slides-container>* .orbit-caption{position:absolute;bottom:0;background-color:rgba(51,51,51,0.8);color:#fff;width:100%;padding:0.625rem 0.875rem;font-size:0.875rem}.orbit-container .orbit-slide-number{position:absolute;top:10px;left:10px;font-size:12px;color:#fff;background:transparent;z-index:10}.orbit-container .orbit-slide-number span{font-weight:700;padding:0.3125rem}.orbit-container .orbit-timer{position:absolute;top:12px;right:10px;height:6px;width:100px;z-index:10}.orbit-container .orbit-timer .orbit-progress{height:3px;background-color:rgba(255,255,255,0.3);display:block;width:0;position:relative;right:20px;top:5px}.orbit-container .orbit-timer>span{display:none;position:absolute;top:0;right:0;width:11px;height:14px;border:solid 4px #fff;border-top:none;border-bottom:none}.orbit-container .orbit-timer.paused>span{right:-4px;top:0;width:11px;height:14px;border:inset 8px;border-left-style:solid;border-color:transparent;border-left-color:#fff}.orbit-container .orbit-timer.paused>span.dark{border-left-color:#333}.orbit-container:hover .orbit-timer>span{display:block}.orbit-container .orbit-prev,.orbit-container .orbit-next{position:absolute;top:45%;margin-top:-25px;width:36px;height:60px;line-height:50px;color:white;background-color:transparent;text-indent:-9999px !important;z-index:10}.orbit-container .orbit-prev:hover,.orbit-container .orbit-next:hover{background-color:rgba(0,0,0,0.3)}.orbit-container .orbit-prev>span,.orbit-container .orbit-next>span{position:absolute;top:50%;margin-top:-10px;display:block;width:0;height:0;border:inset 10px}.orbit-container .orbit-prev{left:0}.orbit-container .orbit-prev>span{border-right-style:solid;border-color:transparent;border-right-color:#fff}.orbit-container .orbit-prev:hover>span{border-right-color:#fff}.orbit-container .orbit-next{right:0}.orbit-container .orbit-next>span{border-color:transparent;border-left-style:solid;border-left-color:#fff;left:50%;margin-left:-4px}.orbit-container .orbit-next:hover>span{border-left-color:#fff}.orbit-bullets-container{text-align:center}.orbit-bullets{margin:0 auto 30px auto;overflow:hidden;position:relative;top:10px;float:none;text-align:center;display:block}.orbit-bullets li{cursor:pointer;display:inline-block;width:0.5625rem;height:0.5625rem;background:#ccc;float:none;margin-right:6px;border-radius:1000px}.orbit-bullets li.active{background:#999}.orbit-bullets li:last-child{margin-right:0}.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:none}.touch .orbit-bullets{display:none}@media only screen and (min-width: 40.063em){.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:inherit}.touch .orbit-bullets{display:block}}@media only screen and (max-width: 40em){.orbit-stack-on-small .orbit-slides-container{height:auto !important}.orbit-stack-on-small .orbit-slides-container>*{position:relative;margin:0 !important;opacity:1 !important}.orbit-stack-on-small .orbit-slide-number{display:none}.orbit-timer{display:none}.orbit-next,.orbit-prev{display:none}.orbit-bullets{display:none}}[data-magellan-expedition],[data-magellan-expedition-clone]{background:#fff;z-index:50;min-width:100%;padding:10px}[data-magellan-expedition] .sub-nav,[data-magellan-expedition-clone] .sub-nav{margin-bottom:0}[data-magellan-expedition] .sub-nav dd,[data-magellan-expedition-clone] .sub-nav dd{margin-bottom:0}[data-magellan-expedition] .sub-nav a,[data-magellan-expedition-clone] .sub-nav a{line-height:1.8em}.icon-bar{width:100%;font-size:0;display:inline-block;background:#333}.icon-bar>*{text-align:center;font-size:1rem;width:25%;margin:0 auto;display:block;padding:1.25rem;float:left}.icon-bar>* i,.icon-bar>* img{display:block;margin:0 auto}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem}.icon-bar>* i{font-size:1.875rem;vertical-align:middle}.icon-bar>* img{width:1.875rem;height:1.875rem}.icon-bar.label-right>* i,.icon-bar.label-right>* img{margin:0 .0625rem 0 0;display:inline-block}.icon-bar.label-right>* i+label,.icon-bar.label-right>* img+label{margin-top:0}.icon-bar.label-right>* label{display:inline-block}.icon-bar.vertical.label-right>*{text-align:left}.icon-bar.vertical,.icon-bar.small-vertical{height:100%;width:auto}.icon-bar.vertical .item,.icon-bar.small-vertical .item{width:auto;margin:auto;float:none}@media only screen and (min-width: 40.063em){.icon-bar.medium-vertical{height:100%;width:auto}.icon-bar.medium-vertical .item{width:auto;margin:auto;float:none}}@media only screen and (min-width: 64.063em){.icon-bar.large-vertical{height:100%;width:auto}.icon-bar.large-vertical .item{width:auto;margin:auto;float:none}}.icon-bar>*{font-size:1rem;padding:1.25rem}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem}.icon-bar>* i{font-size:1.875rem}.icon-bar>* img{width:1.875rem;height:1.875rem}.icon-bar>* label{color:#fff}.icon-bar>* i{color:#fff}.icon-bar>a:hover{background:#008CBA}.icon-bar>a:hover label{color:#fff}.icon-bar>a:hover i{color:#fff}.icon-bar>a.active{background:#008CBA}.icon-bar>a.active label{color:#fff}.icon-bar>a.active i{color:#fff}.icon-bar .item.disabled{opacity:0.7;cursor:not-allowed;pointer-events:none}.icon-bar .item.disabled>*{opacity:0.7;cursor:not-allowed}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item,.icon-bar.two-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.063em){.icon-bar.two-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.063em){.icon-bar.two-up.large-vertical .item{width:auto}}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item,.icon-bar.three-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.063em){.icon-bar.three-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.063em){.icon-bar.three-up.large-vertical .item{width:auto}}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item,.icon-bar.four-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.063em){.icon-bar.four-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.063em){.icon-bar.four-up.large-vertical .item{width:auto}}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item,.icon-bar.five-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.063em){.icon-bar.five-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.063em){.icon-bar.five-up.large-vertical .item{width:auto}}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item,.icon-bar.six-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.063em){.icon-bar.six-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.063em){.icon-bar.six-up.large-vertical .item{width:auto}}.icon-bar.seven-up .item{width:14.28571%}.icon-bar.seven-up.vertical .item,.icon-bar.seven-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.063em){.icon-bar.seven-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.063em){.icon-bar.seven-up.large-vertical .item{width:auto}}.icon-bar.eight-up .item{width:12.5%}.icon-bar.eight-up.vertical .item,.icon-bar.eight-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.063em){.icon-bar.eight-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.063em){.icon-bar.eight-up.large-vertical .item{width:auto}}.tabs{margin-bottom:0 !important;margin-left:0}.tabs:before,.tabs:after{content:" ";display:table}.tabs:after{clear:both}.tabs dd,.tabs .tab-title{position:relative;margin-bottom:0 !important;list-style:none;float:left}.tabs dd>a,.tabs .tab-title>a{display:block;background-color:#EFEFEF;color:#222;padding:1rem 2rem;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem}.tabs dd>a:hover,.tabs .tab-title>a:hover{background-color:#e1e1e1}.tabs dd>a:focus,.tabs .tab-title>a:focus{outline:none}.tabs dd.active a,.tabs .tab-title.active a{background-color:#fff;color:#222}.tabs.radius dd:first-child a,.tabs.radius .tab:first-child a{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.tabs.radius dd:last-child a,.tabs.radius .tab:last-child a{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.tabs.vertical dd,.tabs.vertical .tab-title{position:inherit;float:none;display:block;top:auto}.tabs-content{margin-bottom:1.5rem;width:100%}.tabs-content:before,.tabs-content:after{content:" ";display:table}.tabs-content:after{clear:both}.tabs-content>.content{display:none;float:left;padding:0.9375rem 0;width:100%}.tabs-content>.content.active{display:block;float:none}.tabs-content>.content.contained{padding:0.9375rem}.tabs-content.vertical{display:block}.tabs-content.vertical>.content{padding:0 0.9375rem}@media only screen and (min-width: 40.063em){.tabs.vertical{width:20%;max-width:20%;float:left;margin:0 0 1.25rem}.tabs-content.vertical{width:80%;max-width:80%;float:left;margin-left:-1px;padding-left:1rem}}.no-js .tabs-content>.content{display:block;float:none}ul.pagination{display:block;min-height:1.5rem;margin-left:-0.3125rem}ul.pagination li{height:1.5rem;color:#222;font-size:0.875rem;margin-left:0.3125rem}ul.pagination li a,ul.pagination li button{display:block;padding:0.0625rem 0.625rem 0.0625rem;color:#999;background:none;border-radius:3px;font-weight:normal;font-size:1em;line-height:inherit;transition:background-color 300ms ease-out}ul.pagination li:hover a,ul.pagination li a:focus,ul.pagination li:hover button,ul.pagination li button:focus{background:#e6e6e6}ul.pagination li.unavailable a,ul.pagination li.unavailable button{cursor:default;color:#999}ul.pagination li.unavailable:hover a,ul.pagination li.unavailable a:focus,ul.pagination li.unavailable:hover button,ul.pagination li.unavailable button:focus{background:transparent}ul.pagination li.current a,ul.pagination li.current button{background:#008CBA;color:#fff;font-weight:bold;cursor:default}ul.pagination li.current a:hover,ul.pagination li.current a:focus,ul.pagination li.current button:hover,ul.pagination li.current button:focus{background:#008CBA}ul.pagination li{float:left;display:block}.pagination-centered{text-align:center}.pagination-centered ul.pagination li{float:none;display:inline-block}.side-nav{display:block;margin:0;padding:0.875rem 0;list-style-type:none;list-style-position:outside;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif}.side-nav li{margin:0 0 0.4375rem 0;font-size:0.875rem;font-weight:normal}.side-nav li a:not(.button){display:block;color:#008CBA;margin:0;padding:0.4375rem 0.875rem}.side-nav li a:not(.button):hover,.side-nav li a:not(.button):focus{background:rgba(0,0,0,0.025);color:#1cc7ff}.side-nav li.active>a:first-child:not(.button){color:#1cc7ff;font-weight:normal;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif}.side-nav li.divider{border-top:1px solid;height:0;padding:0;list-style:none;border-top-color:#fff}.side-nav li.heading{color:#008CBA;font-size:0.875rem;font-weight:bold;text-transform:uppercase}.accordion{margin-bottom:0}.accordion:before,.accordion:after{content:" ";display:table}.accordion:after{clear:both}.accordion .accordion-navigation,.accordion dd{display:block;margin-bottom:0 !important}.accordion .accordion-navigation.active>a,.accordion dd.active>a{background:#e8e8e8}.accordion .accordion-navigation>a,.accordion dd>a{background:#EFEFEF;color:#222;padding:1rem;display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem}.accordion .accordion-navigation>a:hover,.accordion dd>a:hover{background:#e3e3e3}.accordion .accordion-navigation>.content,.accordion dd>.content{display:none;padding:0.9375rem}.accordion .accordion-navigation>.content.active,.accordion dd>.content.active{display:block;background:#fff}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}.text-justify{text-align:justify !important}@media only screen and (max-width: 40em){.small-only-text-left{text-align:left !important}.small-only-text-right{text-align:right !important}.small-only-text-center{text-align:center !important}.small-only-text-justify{text-align:justify !important}}@media only screen{.small-text-left{text-align:left !important}.small-text-right{text-align:right !important}.small-text-center{text-align:center !important}.small-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.063em) and (max-width: 64em){.medium-only-text-left{text-align:left !important}.medium-only-text-right{text-align:right !important}.medium-only-text-center{text-align:center !important}.medium-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.063em){.medium-text-left{text-align:left !important}.medium-text-right{text-align:right !important}.medium-text-center{text-align:center !important}.medium-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.063em) and (max-width: 90em){.large-only-text-left{text-align:left !important}.large-only-text-right{text-align:right !important}.large-only-text-center{text-align:center !important}.large-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.063em){.large-text-left{text-align:left !important}.large-text-right{text-align:right !important}.large-text-center{text-align:center !important}.large-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.063em) and (max-width: 120em){.xlarge-only-text-left{text-align:left !important}.xlarge-only-text-right{text-align:right !important}.xlarge-only-text-center{text-align:center !important}.xlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.063em){.xlarge-text-left{text-align:left !important}.xlarge-text-right{text-align:right !important}.xlarge-text-center{text-align:center !important}.xlarge-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.063em) and (max-width: 99999999em){.xxlarge-only-text-left{text-align:left !important}.xxlarge-only-text-right{text-align:right !important}.xxlarge-only-text-center{text-align:center !important}.xxlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.063em){.xxlarge-text-left{text-align:left !important}.xxlarge-text-right{text-align:right !important}.xxlarge-text-center{text-align:center !important}.xxlarge-text-justify{text-align:justify !important}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}a{color:#008CBA;text-decoration:none;line-height:inherit}a:hover,a:focus{color:#0078a0}a img{border:none}p{font-family:inherit;font-weight:normal;font-size:1rem;line-height:1.6;margin-bottom:1.25rem;text-rendering:optimizeLegibility}p.lead{font-size:1.21875rem;line-height:1.6}p aside{font-size:0.875rem;line-height:1.35;font-style:italic}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;font-style:normal;color:#222;text-rendering:optimizeLegibility;margin-top:0.2rem;margin-bottom:0.5rem;line-height:1.4}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:60%;color:#6f6f6f;line-height:0}h1{font-size:2.125rem}h2{font-size:1.6875rem}h3{font-size:1.375rem}h4{font-size:1.125rem}h5{font-size:1.125rem}h6{font-size:1rem}.subheader{line-height:1.4;color:#6f6f6f;font-weight:normal;margin-top:0.2rem;margin-bottom:0.5rem}hr{border:solid #ddd;border-width:1px 0 0;clear:both;margin:1.25rem 0 1.1875rem;height:0}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:60%;line-height:inherit}code{font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:normal;color:#333;background-color:#f8f8f8;border-width:1px;border-style:solid;border-color:#dfdfdf;padding:0.125rem 0.3125rem 0.0625rem}ul,ol,dl{font-size:1rem;line-height:1.6;margin-bottom:1.25rem;list-style-position:outside;font-family:inherit}ul{margin-left:1.1rem}ul.no-bullet{margin-left:0}ul.no-bullet li ul,ul.no-bullet li ol{margin-left:1.25rem;margin-bottom:0;list-style:none}ul li ul,ul li ol{margin-left:1.25rem;margin-bottom:0}ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}ul.square{list-style-type:square;margin-left:1.1rem}ul.circle{list-style-type:circle;margin-left:1.1rem}ul.disc{list-style-type:disc;margin-left:1.1rem}ul.no-bullet{list-style:none}ol{margin-left:1.4rem}ol li ul,ol li ol{margin-left:1.25rem;margin-bottom:0}dl dt{margin-bottom:0.3rem;font-weight:bold}dl dd{margin-bottom:0.75rem}abbr,acronym{text-transform:uppercase;font-size:90%;color:#222;cursor:help}abbr{text-transform:none}abbr[title]{border-bottom:1px dotted #ddd}blockquote{margin:0 0 1.25rem;padding:0.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #ddd}blockquote cite{display:block;font-size:0.8125rem;color:#555}blockquote cite:before{content:"\2014 \0020"}blockquote cite a,blockquote cite a:visited{color:#555}blockquote,blockquote p{line-height:1.6;color:#6f6f6f}.vcard{display:inline-block;margin:0 0 1.25rem 0;border:1px solid #ddd;padding:0.625rem 0.75rem}.vcard li{margin:0;display:block}.vcard .fn{font-weight:bold;font-size:0.9375rem}.vevent .summary{font-weight:bold}.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 0.0625rem}@media only screen and (min-width: 40.063em){h1,h2,h3,h4,h5,h6{line-height:1.4}h1{font-size:2.75rem}h2{font-size:2.3125rem}h3{font-size:1.6875rem}h4{font-size:1.4375rem}h5{font-size:1.125rem}h6{font-size:1rem}}.split.button{position:relative;padding-right:5.0625rem}.split.button span{display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px}.split.button span:after{position:absolute;content:"";width:0;height:0;display:block;border-style:inset;top:50%;left:50%}.split.button span:active{background-color:rgba(0,0,0,0.1)}.split.button span{border-left-color:rgba(255,255,255,0.5)}.split.button span{width:3.09375rem}.split.button span:after{border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem}.split.button span:after{border-color:#fff transparent transparent transparent}.split.button.secondary span{border-left-color:rgba(255,255,255,0.5)}.split.button.secondary span:after{border-color:#fff transparent transparent transparent}.split.button.alert span{border-left-color:rgba(255,255,255,0.5)}.split.button.success span{border-left-color:rgba(255,255,255,0.5)}.split.button.tiny{padding-right:3.75rem}.split.button.tiny span{width:2.25rem}.split.button.tiny span:after{border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem}.split.button.small{padding-right:4.375rem}.split.button.small span{width:2.625rem}.split.button.small span:after{border-top-style:solid;border-width:0.4375rem;top:48%;margin-left:-0.375rem}.split.button.large{padding-right:5.5rem}.split.button.large span{width:3.4375rem}.split.button.large span:after{border-top-style:solid;border-width:0.3125rem;top:48%;margin-left:-0.375rem}.split.button.expand{padding-left:2rem}.split.button.secondary span:after{border-color:#333 transparent transparent transparent}.split.button.radius span{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.split.button.round span{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.split.button.no-pip span:before{border-style:none}.split.button.no-pip span:after{border-style:none}.split.button.no-pip span>i{top:50%;display:block;position:absolute;left:50%;margin-left:-0.28889em;margin-top:-0.48889em}.reveal-modal-bg{position:fixed;top:0;bottom:0;left:0;right:0;background:#000;background:rgba(0,0,0,0.45);z-index:1004;display:none;left:0}.reveal-modal{visibility:hidden;display:none;position:absolute;z-index:1005;width:100%;top:0;border-radius:3px;left:0;background-color:#fff;padding:1.875rem;border:solid 1px #666;box-shadow:0 0 10px rgba(0,0,0,0.4)}@media only screen and (max-width: 40em){.reveal-modal{min-height:100vh}}.reveal-modal .column,.reveal-modal .columns{min-width:0}.reveal-modal>:first-child{margin-top:0}.reveal-modal>:last-child{margin-bottom:0}@media only screen and (min-width: 40.063em){.reveal-modal{width:80%;max-width:62.5rem;left:0;right:0;margin:0 auto}}@media only screen and (min-width: 40.063em){.reveal-modal{top:6.25rem}}.reveal-modal.radius{border-radius:3px}.reveal-modal.round{border-radius:1000px}.reveal-modal.collapse{padding:0}@media only screen and (min-width: 40.063em){.reveal-modal.tiny{width:30%;max-width:62.5rem;left:0;right:0;margin:0 auto}}@media only screen and (min-width: 40.063em){.reveal-modal.small{width:40%;max-width:62.5rem;left:0;right:0;margin:0 auto}}@media only screen and (min-width: 40.063em){.reveal-modal.medium{width:60%;max-width:62.5rem;left:0;right:0;margin:0 auto}}@media only screen and (min-width: 40.063em){.reveal-modal.large{width:70%;max-width:62.5rem;left:0;right:0;margin:0 auto}}@media only screen and (min-width: 40.063em){.reveal-modal.xlarge{width:95%;max-width:62.5rem;left:0;right:0;margin:0 auto}}.reveal-modal.full{top:0;left:0;height:100%;height:100vh;min-height:100vh;max-width:none !important;margin-left:0 !important}@media only screen and (min-width: 40.063em){.reveal-modal.full{width:100%;max-width:62.5rem;left:0;right:0;margin:0 auto}}.reveal-modal.toback{z-index:1003}.reveal-modal .close-reveal-modal{font-size:2.5rem;line-height:1;position:absolute;top:0.625rem;right:1.375rem;color:#aaa;font-weight:bold;cursor:pointer}.has-tip{border-bottom:dotted 1px #ccc;cursor:help;font-weight:bold;color:#333}.has-tip:hover,.has-tip:focus{border-bottom:dotted 1px #003f54;color:#008CBA}.has-tip.tip-left,.has-tip.tip-right{float:none !important}.tooltip{display:none;position:absolute;z-index:1006;font-weight:normal;font-size:0.875rem;line-height:1.3;padding:0.75rem;max-width:300px;left:50%;width:100%;color:#fff;background:#333}.tooltip>.nub{display:block;left:5px;position:absolute;width:0;height:0;border:solid 5px;border-color:transparent transparent #333 transparent;top:-10px;pointer-events:none}.tooltip>.nub.rtl{left:auto;right:5px}.tooltip.radius{border-radius:3px}.tooltip.round{border-radius:1000px}.tooltip.round>.nub{left:2rem}.tooltip.opened{color:#008CBA !important;border-bottom:dotted 1px #003f54 !important}.tap-to-close{display:block;font-size:0.625rem;color:#777;font-weight:normal}@media only screen and (min-width: 40.063em){.tooltip>.nub{border-color:transparent transparent #333 transparent;top:-10px}.tooltip.tip-top>.nub{border-color:#333 transparent transparent transparent;top:auto;bottom:-10px}.tooltip.tip-left,.tooltip.tip-right{float:none !important}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #333;right:-10px;left:auto;top:50%;margin-top:-5px}.tooltip.tip-right>.nub{border-color:transparent #333 transparent transparent;right:auto;left:-10px;top:50%;margin-top:-5px}}.clearing-thumbs,[data-clearing]{margin-bottom:0;margin-left:0;list-style:none}.clearing-thumbs:before,.clearing-thumbs:after,[data-clearing]:before,[data-clearing]:after{content:" ";display:table}.clearing-thumbs:after,[data-clearing]:after{clear:both}.clearing-thumbs li,[data-clearing] li{float:left;margin-right:10px}.clearing-thumbs[class*="block-grid-"] li,[data-clearing][class*="block-grid-"] li{margin-right:0}.clearing-blackout{background:#333;position:fixed;width:100%;height:100%;top:0;left:0;z-index:998}.clearing-blackout .clearing-close{display:block}.clearing-container{position:relative;z-index:998;height:100%;overflow:hidden;margin:0}.clearing-touch-label{position:absolute;top:50%;left:50%;color:#aaa;font-size:0.6em}.visible-img{height:95%;position:relative}.visible-img img{position:absolute;left:50%;top:50%;transform:translateY(-50%) translateX(-50%);-webkit-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);max-height:100%;max-width:100%}.clearing-caption{color:#ccc;font-size:0.875em;line-height:1.3;margin-bottom:0;text-align:center;bottom:0;background:#333;width:100%;padding:10px 30px 20px;position:absolute;left:0}.clearing-close{z-index:999;padding-left:20px;padding-top:10px;font-size:30px;line-height:1;color:#ccc;display:none}.clearing-close:hover,.clearing-close:focus{color:#ccc}.clearing-assembled .clearing-container{height:100%}.clearing-assembled .clearing-container .carousel>ul{display:none}.clearing-feature li{display:none}.clearing-feature li.clearing-featured-img{display:block}@media only screen and (min-width: 40.063em){.clearing-main-prev,.clearing-main-next{position:absolute;height:100%;width:40px;top:0}.clearing-main-prev>span,.clearing-main-next>span{position:absolute;top:50%;display:block;width:0;height:0;border:solid 12px}.clearing-main-prev>span:hover,.clearing-main-next>span:hover{opacity:0.8}.clearing-main-prev{left:0}.clearing-main-prev>span{left:5px;border-color:transparent;border-right-color:#ccc}.clearing-main-next{right:0}.clearing-main-next>span{border-color:transparent;border-left-color:#ccc}.clearing-main-prev.disabled,.clearing-main-next.disabled{opacity:0.3}.clearing-assembled .clearing-container .carousel{background:rgba(51,51,51,0.8);height:120px;margin-top:10px;text-align:center}.clearing-assembled .clearing-container .carousel>ul{display:inline-block;z-index:999;height:100%;position:relative;float:none}.clearing-assembled .clearing-container .carousel>ul li{display:block;width:120px;min-height:inherit;float:left;overflow:hidden;margin-right:0;padding:0;position:relative;cursor:pointer;opacity:0.4;clear:none}.clearing-assembled .clearing-container .carousel>ul li.fix-height img{height:100%;max-width:none}.clearing-assembled .clearing-container .carousel>ul li a.th{border:none;box-shadow:none;display:block}.clearing-assembled .clearing-container .carousel>ul li img{cursor:pointer !important;width:100% !important}.clearing-assembled .clearing-container .carousel>ul li.visible{opacity:1}.clearing-assembled .clearing-container .carousel>ul li:hover{opacity:0.8}.clearing-assembled .clearing-container .visible-img{background:#333;overflow:hidden;height:85%}.clearing-close{position:absolute;top:10px;right:20px;padding-left:0;padding-top:0}}.progress{background-color:#F6F6F6;height:1.5625rem;border:1px solid #fff;padding:0.125rem;margin-bottom:0.625rem}.progress .meter{background:#008CBA;height:100%;display:block}.progress.secondary .meter{background:#e7e7e7;height:100%;display:block}.progress.success .meter{background:#43AC6A;height:100%;display:block}.progress.alert .meter{background:#f04124;height:100%;display:block}.progress.radius{border-radius:3px}.progress.radius .meter{border-radius:2px}.progress.round{border-radius:1000px}.progress.round .meter{border-radius:999px}.sub-nav{display:block;width:auto;overflow:hidden;margin-bottom:-0.25rem 0 1.125rem;padding-top:0.25rem}.sub-nav dt{text-transform:uppercase}.sub-nav dt,.sub-nav dd,.sub-nav li{float:left;margin-left:1rem;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;font-size:0.875rem;color:#999}.sub-nav dt a,.sub-nav dd a,.sub-nav li a{text-decoration:none;color:#999;padding:0.1875rem 1rem}.sub-nav dt a:hover,.sub-nav dd a:hover,.sub-nav li a:hover{color:#737373}.sub-nav dt.active a,.sub-nav dd.active a,.sub-nav li.active a{border-radius:3px;font-weight:normal;background:#008CBA;padding:0.1875rem 1rem;cursor:default;color:#fff}.sub-nav dt.active a:hover,.sub-nav dd.active a:hover,.sub-nav li.active a:hover{background:#0078a0}.joyride-list{display:none}.joyride-tip-guide{display:none;position:absolute;background:#333;color:#fff;z-index:101;top:0;left:2.5%;font-family:inherit;font-weight:normal;width:95%}.lt-ie9 .joyride-tip-guide{max-width:800px;left:50%;margin-left:-400px}.joyride-content-wrapper{width:100%;padding:1.125rem 1.25rem 1.5rem}.joyride-content-wrapper .button{margin-bottom:0 !important}.joyride-content-wrapper .joyride-prev-tip{margin-right:10px}.joyride-tip-guide .joyride-nub{display:block;position:absolute;left:22px;width:0;height:0;border:10px solid #333}.joyride-tip-guide .joyride-nub.top{border-top-style:solid;border-color:#333;border-top-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;top:-20px}.joyride-tip-guide .joyride-nub.bottom{border-bottom-style:solid;border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{right:-20px}.joyride-tip-guide .joyride-nub.left{left:-20px}.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6{line-height:1.25;margin:0;font-weight:bold;color:#fff}.joyride-tip-guide p{margin:0 0 1.125rem 0;font-size:0.875rem;line-height:1.3}.joyride-timer-indicator-wrap{width:50px;height:3px;border:solid 1px #555;position:absolute;right:1.0625rem;bottom:1rem}.joyride-timer-indicator{display:block;width:0;height:inherit;background:#666}.joyride-close-tip{position:absolute;right:12px;top:10px;color:#777 !important;text-decoration:none;font-size:24px;font-weight:normal;line-height:.5 !important}.joyride-close-tip:hover,.joyride-close-tip:focus{color:#eee !important}.joyride-modal-bg{position:fixed;height:100%;width:100%;background:transparent;background:rgba(0,0,0,0.5);z-index:100;display:none;top:0;left:0;cursor:pointer}.joyride-expose-wrapper{background-color:#fff;position:absolute;border-radius:3px;z-index:102;box-shadow:0 0 15px #fff}.joyride-expose-cover{background:transparent;border-radius:3px;position:absolute;z-index:9999;top:0;left:0}@media only screen and (min-width: 40.063em){.joyride-tip-guide{width:300px;left:inherit}.joyride-tip-guide .joyride-nub.bottom{border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{border-color:#333 !important;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:auto;right:-20px}.joyride-tip-guide .joyride-nub.left{border-color:#333 !important;border-top-color:transparent !important;border-left-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:-20px;right:auto}}.label{font-weight:normal;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;text-align:center;text-decoration:none;line-height:1;white-space:nowrap;display:inline-block;position:relative;margin-bottom:auto;padding:0.25rem 0.5rem 0.25rem;font-size:0.6875rem;background-color:#008CBA;color:#fff}.label.radius{border-radius:3px}.label.round{border-radius:1000px}.label.alert{background-color:#f04124;color:#fff}.label.warning{background-color:#f08a24;color:#fff}.label.success{background-color:#43AC6A;color:#fff}.label.secondary{background-color:#e7e7e7;color:#333}.label.info{background-color:#a0d3e8;color:#333}.off-canvas-wrap{-webkit-backface-visibility:hidden;position:relative;width:100%;overflow:hidden}.off-canvas-wrap.move-right,.off-canvas-wrap.move-left{min-height:100%;-webkit-overflow-scrolling:touch}.inner-wrap{position:relative;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.inner-wrap:before,.inner-wrap:after{content:" ";display:table}.inner-wrap:after{clear:both}.tab-bar{-webkit-backface-visibility:hidden;background:#333;color:#fff;height:2.8125rem;line-height:2.8125rem;position:relative}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4,.tab-bar h5,.tab-bar h6{color:#fff;font-weight:bold;line-height:2.8125rem;margin:0}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4{font-size:1.125rem}.left-small{width:2.8125rem;height:2.8125rem;position:absolute;top:0;border-right:solid 1px #1a1a1a;left:0}.right-small{width:2.8125rem;height:2.8125rem;position:absolute;top:0;border-left:solid 1px #1a1a1a;right:0}.tab-bar-section{padding:0 0.625rem;position:absolute;text-align:center;height:2.8125rem;top:0}@media only screen and (min-width: 40.063em){.tab-bar-section.left{text-align:left}.tab-bar-section.right{text-align:right}}.tab-bar-section.left{left:0;right:2.8125rem}.tab-bar-section.right{left:2.8125rem;right:0}.tab-bar-section.middle{left:2.8125rem;right:2.8125rem}.tab-bar .menu-icon{text-indent:2.1875rem;width:2.8125rem;height:2.8125rem;display:block;padding:0;color:#fff;position:relative;transform:translate3d(0, 0, 0)}.tab-bar .menu-icon span::after{content:"";position:absolute;display:block;height:0;top:50%;margin-top:-0.5rem;left:0.90625rem;box-shadow:0 0 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:1rem}.tab-bar .menu-icon span:hover:after{box-shadow:0 0 0 1px #b3b3b3,0 7px 0 1px #b3b3b3,0 14px 0 1px #b3b3b3}.left-off-canvas-menu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;overflow-x:hidden;overflow-y:auto;background:#333;z-index:1001;box-sizing:content-box;transition:transform 500ms ease 0s;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;-ms-transform:translate(-100%, 0);-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.left-off-canvas-menu *{-webkit-backface-visibility:hidden}.right-off-canvas-menu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;overflow-x:hidden;overflow-y:auto;background:#333;z-index:1001;box-sizing:content-box;transition:transform 500ms ease 0s;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;-ms-transform:translate(100%, 0);-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0}.right-off-canvas-menu *{-webkit-backface-visibility:hidden}ul.off-canvas-list{list-style-type:none;padding:0;margin:0}ul.off-canvas-list li label{display:block;padding:0.3rem 0.9375rem;color:#999;text-transform:uppercase;font-size:0.75rem;font-weight:bold;background:#444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0}ul.off-canvas-list li a{display:block;padding:0.66667rem;color:rgba(255,255,255,0.7);border-bottom:1px solid #262626;transition:background 300ms ease}ul.off-canvas-list li a:hover{background:#242424}.move-right>.inner-wrap{-ms-transform:translate(15.625rem, 0);-webkit-transform:translate3d(15.625rem, 0, 0);-moz-transform:translate3d(15.625rem, 0, 0);-ms-transform:translate3d(15.625rem, 0, 0);-o-transform:translate3d(15.625rem, 0, 0);transform:translate3d(15.625rem, 0, 0)}.move-right .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:transparent}@media only screen and (min-width: 40.063em){.move-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.move-left>.inner-wrap{-ms-transform:translate(-15.625rem, 0);-webkit-transform:translate3d(-15.625rem, 0, 0);-moz-transform:translate3d(-15.625rem, 0, 0);-ms-transform:translate3d(-15.625rem, 0, 0);-o-transform:translate3d(-15.625rem, 0, 0);transform:translate3d(-15.625rem, 0, 0)}.move-left .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:transparent}@media only screen and (min-width: 40.063em){.move-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap .left-off-canvas-menu,.offcanvas-overlap .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:transparent}@media only screen and (min-width: 40.063em){.offcanvas-overlap .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-left .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-left .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:transparent}@media only screen and (min-width: 40.063em){.offcanvas-overlap-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-right .left-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-right .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:transparent}@media only screen and (min-width: 40.063em){.offcanvas-overlap-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.no-csstransforms .left-off-canvas-menu{left:-15.625rem}.no-csstransforms .right-off-canvas-menu{right:-15.625rem}.no-csstransforms .move-left>.inner-wrap{right:15.625rem}.no-csstransforms .move-right>.inner-wrap{left:15.625rem}.left-submenu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;margin:0;overflow-x:hidden;overflow-y:auto;background:#333;z-index:1002;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-transform:translate(-100%, 0);-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.left-submenu *{-webkit-backface-visibility:hidden}.left-submenu .back>a{padding:0.3rem 0.9375rem;color:#999;text-transform:uppercase;font-weight:bold;background:#444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0}.left-submenu .back>a:hover{background:#303030;border-top:1px solid #5e5e5e;border-bottom:none}.left-submenu .back>a:before{content:"\AB";margin-right:0.5rem;display:inline}.left-submenu.move-right,.left-submenu.offcanvas-overlap-right,.left-submenu.offcanvas-overlap{-ms-transform:translate(0%, 0);-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.right-submenu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;margin:0;overflow-x:hidden;overflow-y:auto;background:#333;z-index:1002;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-transform:translate(100%, 0);-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.right-submenu *{-webkit-backface-visibility:hidden}.right-submenu .back>a{padding:0.3rem 0.9375rem;color:#999;text-transform:uppercase;font-weight:bold;background:#444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0}.right-submenu .back>a:hover{background:#303030;border-top:1px solid #5e5e5e;border-bottom:none}.right-submenu .back>a:after{content:"\BB";margin-left:0.5rem;display:inline}.right-submenu.move-left,.right-submenu.offcanvas-overlap-left,.right-submenu.offcanvas-overlap{-ms-transform:translate(0%, 0);-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.left-off-canvas-menu ul.off-canvas-list li.has-submenu>a:after{content:"\BB";margin-left:0.5rem;display:inline}.right-off-canvas-menu ul.off-canvas-list li.has-submenu>a:before{content:"\AB";margin-right:0.5rem;display:inline}.f-dropdown{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:89;margin-top:2px;max-width:200px}.f-dropdown>*:first-child{margin-top:0}.f-dropdown>*:last-child{margin-bottom:0}.f-dropdown:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent #fff transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:89}.f-dropdown:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent #ccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:88}.f-dropdown.right:before{left:auto;right:10px}.f-dropdown.right:after{left:auto;right:9px}.f-dropdown.drop-right{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:89;margin-top:0;margin-left:2px;max-width:200px}.f-dropdown.drop-right>*:first-child{margin-top:0}.f-dropdown.drop-right>*:last-child{margin-bottom:0}.f-dropdown.drop-right:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent #fff transparent transparent;border-right-style:solid;position:absolute;top:10px;left:-12px;z-index:89}.f-dropdown.drop-right:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent #ccc transparent transparent;border-right-style:solid;position:absolute;top:9px;left:-14px;z-index:88}.f-dropdown.drop-left{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:89;margin-top:0;margin-left:-2px;max-width:200px}.f-dropdown.drop-left>*:first-child{margin-top:0}.f-dropdown.drop-left>*:last-child{margin-bottom:0}.f-dropdown.drop-left:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent transparent #fff;border-left-style:solid;position:absolute;top:10px;right:-12px;left:auto;z-index:89}.f-dropdown.drop-left:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent transparent #ccc;border-left-style:solid;position:absolute;top:9px;right:-14px;left:auto;z-index:88}.f-dropdown.drop-top{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:89;margin-top:-2px;margin-left:0;max-width:200px}.f-dropdown.drop-top>*:first-child{margin-top:0}.f-dropdown.drop-top>*:last-child{margin-bottom:0}.f-dropdown.drop-top:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:#fff transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-12px;left:10px;right:auto;z-index:89}.f-dropdown.drop-top:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:#ccc transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-14px;left:9px;right:auto;z-index:88}.f-dropdown li{font-size:0.875rem;cursor:pointer;line-height:1.125rem;margin:0}.f-dropdown li:hover,.f-dropdown li:focus{background:#eee}.f-dropdown li.radius{border-radius:3px}.f-dropdown li a{display:block;padding:0.5rem;color:#555}.f-dropdown.content{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;padding:1.25rem;width:100%;height:auto;max-height:none;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:89;max-width:200px}.f-dropdown.content>*:first-child{margin-top:0}.f-dropdown.content>*:last-child{margin-bottom:0}.f-dropdown.tiny{max-width:200px}.f-dropdown.small{max-width:300px}.f-dropdown.medium{max-width:500px}.f-dropdown.large{max-width:800px}.f-dropdown.mega{width:100% !important;max-width:100% !important}.f-dropdown.mega.open{left:0 !important}table{background:#fff;margin-bottom:1.25rem;border:solid 1px #ddd;table-layout:auto}table caption{background:transparent;color:#222;font-size:1rem;font-weight:bold}table thead{background:#F5F5F5}table thead tr th,table thead tr td{padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222}table tfoot{background:#F5F5F5}table tfoot tr th,table tfoot tr td{padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222}table tr th,table tr td{padding:0.5625rem 0.625rem;font-size:0.875rem;color:#222;text-align:left}table tr.even,table tr.alt,table tr:nth-of-type(even){background:#F9F9F9}table thead tr th,table tfoot tr th,table tfoot tr td,table tbody tr th,table tbody tr td,table tr td{display:table-cell;line-height:1.125rem}.range-slider{position:relative;border:1px solid #ddd;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;display:block;width:100%;height:1rem;background:#FAFAFA}.range-slider.vertical-range{position:relative;border:1px solid #ddd;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;display:inline-block;width:1rem;height:12.5rem}.range-slider.vertical-range .range-slider-handle{margin-top:0;margin-left:-0.5rem;position:absolute;bottom:-10.5rem}.range-slider.vertical-range .range-slider-active-segment{width:0.875rem;height:auto;bottom:0}.range-slider.radius{background:#FAFAFA;border-radius:3px}.range-slider.radius .range-slider-handle{background:#008CBA;border-radius:3px}.range-slider.radius .range-slider-handle:hover{background:#007ba4}.range-slider.round{background:#FAFAFA;border-radius:1000px}.range-slider.round .range-slider-handle{background:#008CBA;border-radius:1000px}.range-slider.round .range-slider-handle:hover{background:#007ba4}.range-slider.disabled,.range-slider[disabled]{background:#FAFAFA;cursor:not-allowed;opacity:0.7}.range-slider.disabled .range-slider-handle,.range-slider[disabled] .range-slider-handle{background:#008CBA;cursor:default;opacity:0.7}.range-slider.disabled .range-slider-handle:hover,.range-slider[disabled] .range-slider-handle:hover{background:#007ba4}.range-slider-active-segment{display:inline-block;position:absolute;height:0.875rem;background:#e5e5e5}.range-slider-handle{display:inline-block;position:absolute;z-index:1;top:-0.3125rem;width:2rem;height:1.375rem;border:1px solid none;cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation;background:#008CBA}.range-slider-handle:hover{background:#007ba4}[class*="block-grid-"]{display:block;padding:0;margin:0 -0.625rem}[class*="block-grid-"]:before,[class*="block-grid-"]:after{content:" ";display:table}[class*="block-grid-"]:after{clear:both}[class*="block-grid-"]>li{display:block;height:auto;float:left;padding:0 0.625rem 1.25rem}@media only screen{.small-block-grid-1>li{width:100%;list-style:none}.small-block-grid-1>li:nth-of-type(1n){clear:none}.small-block-grid-1>li:nth-of-type(1n+1){clear:both}.small-block-grid-2>li{width:50%;list-style:none}.small-block-grid-2>li:nth-of-type(1n){clear:none}.small-block-grid-2>li:nth-of-type(2n+1){clear:both}.small-block-grid-3>li{width:33.33333%;list-style:none}.small-block-grid-3>li:nth-of-type(1n){clear:none}.small-block-grid-3>li:nth-of-type(3n+1){clear:both}.small-block-grid-4>li{width:25%;list-style:none}.small-block-grid-4>li:nth-of-type(1n){clear:none}.small-block-grid-4>li:nth-of-type(4n+1){clear:both}.small-block-grid-5>li{width:20%;list-style:none}.small-block-grid-5>li:nth-of-type(1n){clear:none}.small-block-grid-5>li:nth-of-type(5n+1){clear:both}.small-block-grid-6>li{width:16.66667%;list-style:none}.small-block-grid-6>li:nth-of-type(1n){clear:none}.small-block-grid-6>li:nth-of-type(6n+1){clear:both}.small-block-grid-7>li{width:14.28571%;list-style:none}.small-block-grid-7>li:nth-of-type(1n){clear:none}.small-block-grid-7>li:nth-of-type(7n+1){clear:both}.small-block-grid-8>li{width:12.5%;list-style:none}.small-block-grid-8>li:nth-of-type(1n){clear:none}.small-block-grid-8>li:nth-of-type(8n+1){clear:both}.small-block-grid-9>li{width:11.11111%;list-style:none}.small-block-grid-9>li:nth-of-type(1n){clear:none}.small-block-grid-9>li:nth-of-type(9n+1){clear:both}.small-block-grid-10>li{width:10%;list-style:none}.small-block-grid-10>li:nth-of-type(1n){clear:none}.small-block-grid-10>li:nth-of-type(10n+1){clear:both}.small-block-grid-11>li{width:9.09091%;list-style:none}.small-block-grid-11>li:nth-of-type(1n){clear:none}.small-block-grid-11>li:nth-of-type(11n+1){clear:both}.small-block-grid-12>li{width:8.33333%;list-style:none}.small-block-grid-12>li:nth-of-type(1n){clear:none}.small-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 40.063em){.medium-block-grid-1>li{width:100%;list-style:none}.medium-block-grid-1>li:nth-of-type(1n){clear:none}.medium-block-grid-1>li:nth-of-type(1n+1){clear:both}.medium-block-grid-2>li{width:50%;list-style:none}.medium-block-grid-2>li:nth-of-type(1n){clear:none}.medium-block-grid-2>li:nth-of-type(2n+1){clear:both}.medium-block-grid-3>li{width:33.33333%;list-style:none}.medium-block-grid-3>li:nth-of-type(1n){clear:none}.medium-block-grid-3>li:nth-of-type(3n+1){clear:both}.medium-block-grid-4>li{width:25%;list-style:none}.medium-block-grid-4>li:nth-of-type(1n){clear:none}.medium-block-grid-4>li:nth-of-type(4n+1){clear:both}.medium-block-grid-5>li{width:20%;list-style:none}.medium-block-grid-5>li:nth-of-type(1n){clear:none}.medium-block-grid-5>li:nth-of-type(5n+1){clear:both}.medium-block-grid-6>li{width:16.66667%;list-style:none}.medium-block-grid-6>li:nth-of-type(1n){clear:none}.medium-block-grid-6>li:nth-of-type(6n+1){clear:both}.medium-block-grid-7>li{width:14.28571%;list-style:none}.medium-block-grid-7>li:nth-of-type(1n){clear:none}.medium-block-grid-7>li:nth-of-type(7n+1){clear:both}.medium-block-grid-8>li{width:12.5%;list-style:none}.medium-block-grid-8>li:nth-of-type(1n){clear:none}.medium-block-grid-8>li:nth-of-type(8n+1){clear:both}.medium-block-grid-9>li{width:11.11111%;list-style:none}.medium-block-grid-9>li:nth-of-type(1n){clear:none}.medium-block-grid-9>li:nth-of-type(9n+1){clear:both}.medium-block-grid-10>li{width:10%;list-style:none}.medium-block-grid-10>li:nth-of-type(1n){clear:none}.medium-block-grid-10>li:nth-of-type(10n+1){clear:both}.medium-block-grid-11>li{width:9.09091%;list-style:none}.medium-block-grid-11>li:nth-of-type(1n){clear:none}.medium-block-grid-11>li:nth-of-type(11n+1){clear:both}.medium-block-grid-12>li{width:8.33333%;list-style:none}.medium-block-grid-12>li:nth-of-type(1n){clear:none}.medium-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 64.063em){.large-block-grid-1>li{width:100%;list-style:none}.large-block-grid-1>li:nth-of-type(1n){clear:none}.large-block-grid-1>li:nth-of-type(1n+1){clear:both}.large-block-grid-2>li{width:50%;list-style:none}.large-block-grid-2>li:nth-of-type(1n){clear:none}.large-block-grid-2>li:nth-of-type(2n+1){clear:both}.large-block-grid-3>li{width:33.33333%;list-style:none}.large-block-grid-3>li:nth-of-type(1n){clear:none}.large-block-grid-3>li:nth-of-type(3n+1){clear:both}.large-block-grid-4>li{width:25%;list-style:none}.large-block-grid-4>li:nth-of-type(1n){clear:none}.large-block-grid-4>li:nth-of-type(4n+1){clear:both}.large-block-grid-5>li{width:20%;list-style:none}.large-block-grid-5>li:nth-of-type(1n){clear:none}.large-block-grid-5>li:nth-of-type(5n+1){clear:both}.large-block-grid-6>li{width:16.66667%;list-style:none}.large-block-grid-6>li:nth-of-type(1n){clear:none}.large-block-grid-6>li:nth-of-type(6n+1){clear:both}.large-block-grid-7>li{width:14.28571%;list-style:none}.large-block-grid-7>li:nth-of-type(1n){clear:none}.large-block-grid-7>li:nth-of-type(7n+1){clear:both}.large-block-grid-8>li{width:12.5%;list-style:none}.large-block-grid-8>li:nth-of-type(1n){clear:none}.large-block-grid-8>li:nth-of-type(8n+1){clear:both}.large-block-grid-9>li{width:11.11111%;list-style:none}.large-block-grid-9>li:nth-of-type(1n){clear:none}.large-block-grid-9>li:nth-of-type(9n+1){clear:both}.large-block-grid-10>li{width:10%;list-style:none}.large-block-grid-10>li:nth-of-type(1n){clear:none}.large-block-grid-10>li:nth-of-type(10n+1){clear:both}.large-block-grid-11>li{width:9.09091%;list-style:none}.large-block-grid-11>li:nth-of-type(1n){clear:none}.large-block-grid-11>li:nth-of-type(11n+1){clear:both}.large-block-grid-12>li{width:8.33333%;list-style:none}.large-block-grid-12>li:nth-of-type(1n){clear:none}.large-block-grid-12>li:nth-of-type(12n+1){clear:both}}.flex-video{position:relative;padding-top:1.5625rem;padding-bottom:67.5%;height:0;margin-bottom:1rem;overflow:hidden}.flex-video.widescreen{padding-bottom:56.34%}.flex-video.vimeo{padding-top:0}.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.keystroke,kbd{background-color:#ededed;border-color:#ddd;color:#222;border-style:solid;border-width:1px;margin:0;font-family:"Consolas","Menlo","Courier",monospace;font-size:inherit;padding:0.125rem 0.25rem 0;border-radius:3px}.switch{padding:0;border:none;position:relative;outline:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.switch label{display:block;margin-bottom:1rem;position:relative;color:transparent;background:#ddd;text-indent:100%;width:4rem;height:2rem;cursor:pointer;transition:left 0.15s ease-out}.switch input{opacity:0;position:absolute;top:9px;left:10px;padding:0}.switch input+label{margin-left:0;margin-right:0}.switch label:after{content:"";display:block;background:#fff;position:absolute;top:.25rem;left:.25rem;width:1.5rem;height:1.5rem;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;-o-transition:translate3d(0, 0, 0);transition:left 0.15s ease-out;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.switch input:checked+label{background:#008CBA}.switch input:checked+label:after{left:2.25rem}.switch label{width:4rem;height:2rem}.switch label:after{width:1.5rem;height:1.5rem}.switch input:checked+label:after{left:2.25rem}.switch label{color:transparent;background:#ddd}.switch label:after{background:#fff}.switch input:checked+label{background:#008CBA}.switch.large label{width:5rem;height:2.5rem}.switch.large label:after{width:2rem;height:2rem}.switch.large input:checked+label:after{left:2.75rem}.switch.small label{width:3.5rem;height:1.75rem}.switch.small label:after{width:1.25rem;height:1.25rem}.switch.small input:checked+label:after{left:2rem}.switch.tiny label{width:3rem;height:1.5rem}.switch.tiny label:after{width:1rem;height:1rem}.switch.tiny input:checked+label:after{left:1.75rem}.switch.radius label{border-radius:4px}.switch.radius label:after{border-radius:3px}.switch.round{border-radius:1000px}.switch.round label{border-radius:2rem}.switch.round label:after{border-radius:2rem}@media only screen{.show-for-small-only,.show-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.hide-for-small-only,.hide-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.visible-for-small-only,.visible-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.hidden-for-small-only,.hidden-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.show-for-small-only,table.show-for-small-up,table.show-for-small,table.show-for-small-down,table.hide-for-medium-only,table.hide-for-medium-up,table.hide-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.show-for-small-only,thead.show-for-small-up,thead.show-for-small,thead.show-for-small-down,thead.hide-for-medium-only,thead.hide-for-medium-up,thead.hide-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.show-for-small-only,tbody.show-for-small-up,tbody.show-for-small,tbody.show-for-small-down,tbody.hide-for-medium-only,tbody.hide-for-medium-up,tbody.hide-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.show-for-small-only,tr.show-for-small-up,tr.show-for-small,tr.show-for-small-down,tr.hide-for-medium-only,tr.hide-for-medium-up,tr.hide-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.show-for-small-only,td.show-for-small-only,th.show-for-small-up,td.show-for-small-up,th.show-for-small,td.show-for-small,th.show-for-small-down,td.show-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.hide-for-medium-up,td.hide-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 40.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.show-for-medium-only,table.show-for-medium-up,table.show-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.show-for-medium-only,thead.show-for-medium-up,thead.show-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.show-for-medium-only,tbody.show-for-medium-up,tbody.show-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.show-for-medium-only,tr.show-for-medium-up,tr.show-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.show-for-medium-only,td.show-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.show-for-medium,td.show-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 64.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.show-for-large-only,table.show-for-large-up,table.show-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.show-for-large-only,thead.show-for-large-up,thead.show-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.show-for-large-only,tbody.show-for-large-up,tbody.show-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.show-for-large-only,tr.show-for-large-up,tr.show-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.show-for-large-only,td.show-for-large-only,th.show-for-large-up,td.show-for-large-up,th.show-for-large,td.show-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 90.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.show-for-xlarge-only,table.show-for-xlarge-up,table.show-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.show-for-xlarge-only,thead.show-for-xlarge-up,thead.show-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.show-for-xlarge-only,tbody.show-for-xlarge-up,tbody.show-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.show-for-xlarge-only,tr.show-for-xlarge-up,tr.show-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.show-for-xlarge-only,td.show-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.show-for-xlarge,td.show-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 120.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.hide-for-xlarge-only,.show-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.show-for-xlarge-only,.hide-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.hidden-for-xlarge-only,.visible-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.visible-for-xlarge-only,.hidden-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.hidden-for-xxlarge-down{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.hide-for-xlarge-only,table.show-for-xlarge-up,table.hide-for-xlarge,table.hide-for-xlarge-down,table.show-for-xxlarge-only,table.show-for-xxlarge-up,table.show-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.hide-for-xlarge-only,thead.show-for-xlarge-up,thead.hide-for-xlarge,thead.hide-for-xlarge-down,thead.show-for-xxlarge-only,thead.show-for-xxlarge-up,thead.show-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.hide-for-xlarge-only,tbody.show-for-xlarge-up,tbody.hide-for-xlarge,tbody.hide-for-xlarge-down,tbody.show-for-xxlarge-only,tbody.show-for-xxlarge-up,tbody.show-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.hide-for-xlarge-only,tr.show-for-xlarge-up,tr.hide-for-xlarge,tr.hide-for-xlarge-down,tr.show-for-xxlarge-only,tr.show-for-xxlarge-up,tr.show-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.hide-for-xlarge-down,td.hide-for-xlarge-down,th.show-for-xxlarge-only,td.show-for-xxlarge-only,th.show-for-xxlarge-up,td.show-for-xxlarge-up,th.show-for-xxlarge,td.show-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.hide-for-landscape,table.show-for-portrait{display:table !important}thead.hide-for-landscape,thead.show-for-portrait{display:table-header-group !important}tbody.hide-for-landscape,tbody.show-for-portrait{display:table-row-group !important}tr.hide-for-landscape,tr.show-for-portrait{display:table-row !important}td.hide-for-landscape,td.show-for-portrait,th.hide-for-landscape,th.show-for-portrait{display:table-cell !important}@media only screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.show-for-landscape,table.hide-for-portrait{display:table !important}thead.show-for-landscape,thead.hide-for-portrait{display:table-header-group !important}tbody.show-for-landscape,tbody.hide-for-portrait{display:table-row-group !important}tr.show-for-landscape,tr.hide-for-portrait{display:table-row !important}td.show-for-landscape,td.hide-for-portrait,th.show-for-landscape,th.hide-for-portrait{display:table-cell !important}}@media only screen and (orientation: portrait){.show-for-portrait,.hide-for-landscape{display:inherit !important}.hide-for-portrait,.show-for-landscape{display:none !important}table.show-for-portrait,table.hide-for-landscape{display:table !important}thead.show-for-portrait,thead.hide-for-landscape{display:table-header-group !important}tbody.show-for-portrait,tbody.hide-for-landscape{display:table-row-group !important}tr.show-for-portrait,tr.hide-for-landscape{display:table-row !important}td.show-for-portrait,td.hide-for-landscape,th.show-for-portrait,th.hide-for-landscape{display:table-cell !important}}.show-for-touch{display:none !important}.hide-for-touch{display:inherit !important}.touch .show-for-touch{display:inherit !important}.touch .hide-for-touch{display:none !important}table.hide-for-touch{display:table !important}.touch table.show-for-touch{display:table !important}thead.hide-for-touch{display:table-header-group !important}.touch thead.show-for-touch{display:table-header-group !important}tbody.hide-for-touch{display:table-row-group !important}.touch tbody.show-for-touch{display:table-row-group !important}tr.hide-for-touch{display:table-row !important}.touch tr.show-for-touch{display:table-row !important}td.hide-for-touch{display:table-cell !important}.touch td.show-for-touch{display:table-cell !important}th.hide-for-touch{display:table-cell !important}.touch th.show-for-touch{display:table-cell !important}.print-only{display:none !important}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}.show-for-print{display:block}.hide-for-print{display:none}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.hide-on-print{display:none !important}.print-only{display:block !important}.hide-for-print{display:none !important}.show-for-print{display:inherit !important}}@media print{.show-for-print{display:block}.hide-for-print{display:none}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation.min.js b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation.min.js new file mode 100644 index 0000000000..4a23ccc65d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundation.min.js @@ -0,0 +1,6081 @@ +/* + * Foundation Responsive Library + * http://foundation.zurb.com + * Copyright 2014, ZURB + * Free to use under the MIT license. + * http://www.opensource.org/licenses/mit-license.php +*/ + +(function ($, window, document, undefined) { + 'use strict'; + + var header_helpers = function (class_array) { + var i = class_array.length; + var head = $('head'); + + while (i--) { + if (head.has('.' + class_array[i]).length === 0) { + head.append(''); + } + } + }; + + header_helpers([ + 'foundation-mq-small', + 'foundation-mq-small-only', + 'foundation-mq-medium', + 'foundation-mq-medium-only', + 'foundation-mq-large', + 'foundation-mq-large-only', + 'foundation-mq-xlarge', + 'foundation-mq-xlarge-only', + 'foundation-mq-xxlarge', + 'foundation-data-attribute-namespace']); + + // Enable FastClick if present + + $(function () { + if (typeof FastClick !== 'undefined') { + // Don't attach to body if undefined + if (typeof document.body !== 'undefined') { + FastClick.attach(document.body); + } + } + }); + + // private Fast Selector wrapper, + // returns jQuery object. Only use where + // getElementById is not available. + var S = function (selector, context) { + if (typeof selector === 'string') { + if (context) { + var cont; + if (context.jquery) { + cont = context[0]; + if (!cont) { + return context; + } + } else { + cont = context; + } + return $(cont.querySelectorAll(selector)); + } + + return $(document.querySelectorAll(selector)); + } + + return $(selector, context); + }; + + // Namespace functions. + + var attr_name = function (init) { + var arr = []; + if (!init) { + arr.push('data'); + } + if (this.namespace.length > 0) { + arr.push(this.namespace); + } + arr.push(this.name); + + return arr.join('-'); + }; + + var add_namespace = function (str) { + var parts = str.split('-'), + i = parts.length, + arr = []; + + while (i--) { + if (i !== 0) { + arr.push(parts[i]); + } else { + if (this.namespace.length > 0) { + arr.push(this.namespace, parts[i]); + } else { + arr.push(parts[i]); + } + } + } + + return arr.reverse().join('-'); + }; + + // Event binding and data-options updating. + + var bindings = function (method, options) { + var self = this, + bind = function(){ + var $this = S(this), + should_bind_events = !$this.data(self.attr_name(true) + '-init'); + $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this))); + + if (should_bind_events) { + self.events(this); + } + }; + + if (S(this.scope).is('[' + this.attr_name() +']')) { + bind.call(this.scope); + } else { + S('[' + this.attr_name() +']', this.scope).each(bind); + } + // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating. + if (typeof method === 'string') { + return this[method].call(this, options); + } + + }; + + var single_image_loaded = function (image, callback) { + function loaded () { + callback(image[0]); + } + + function bindLoad () { + this.one('load', loaded); + + if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { + var src = this.attr( 'src' ), + param = src.match( /\?/ ) ? '&' : '?'; + + param += 'random=' + (new Date()).getTime(); + this.attr('src', src + param); + } + } + + if (!image.attr('src')) { + loaded(); + return; + } + + if (image[0].complete || image[0].readyState === 4) { + loaded(); + } else { + bindLoad.call(image); + } + }; + + /* + https://github.com/paulirish/matchMedia.js + */ + + window.matchMedia = window.matchMedia || (function ( doc ) { + + 'use strict'; + + var bool, + docElem = doc.documentElement, + refNode = docElem.firstElementChild || docElem.firstChild, + // fakeBody required for + fakeBody = doc.createElement( 'body' ), + div = doc.createElement( 'div' ); + + div.id = 'mq-test-1'; + div.style.cssText = 'position:absolute;top:-100em'; + fakeBody.style.background = 'none'; + fakeBody.appendChild(div); + + return function (q) { + + div.innerHTML = '­'; + + docElem.insertBefore( fakeBody, refNode ); + bool = div.offsetWidth === 42; + docElem.removeChild( fakeBody ); + + return { + matches : bool, + media : q + }; + + }; + + }( document )); + + /* + * jquery.requestAnimationFrame + * https://github.com/gnarf37/jquery-requestAnimationFrame + * Requires jQuery 1.8+ + * + * Copyright (c) 2012 Corey Frang + * Licensed under the MIT license. + */ + + (function(jQuery) { + + + // requestAnimationFrame polyfill adapted from Erik Möller + // fixes from Paul Irish and Tino Zijdel + // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating + + var animating, + lastTime = 0, + vendors = ['webkit', 'moz'], + requestAnimationFrame = window.requestAnimationFrame, + cancelAnimationFrame = window.cancelAnimationFrame, + jqueryFxAvailable = 'undefined' !== typeof jQuery.fx; + + for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) { + requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ]; + cancelAnimationFrame = cancelAnimationFrame || + window[ vendors[lastTime] + 'CancelAnimationFrame' ] || + window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ]; + } + + function raf() { + if (animating) { + requestAnimationFrame(raf); + + if (jqueryFxAvailable) { + jQuery.fx.tick(); + } + } + } + + if (requestAnimationFrame) { + // use rAF + window.requestAnimationFrame = requestAnimationFrame; + window.cancelAnimationFrame = cancelAnimationFrame; + + if (jqueryFxAvailable) { + jQuery.fx.timer = function (timer) { + if (timer() && jQuery.timers.push(timer) && !animating) { + animating = true; + raf(); + } + }; + + jQuery.fx.stop = function () { + animating = false; + }; + } + } else { + // polyfill + window.requestAnimationFrame = function (callback) { + var currTime = new Date().getTime(), + timeToCall = Math.max(0, 16 - (currTime - lastTime)), + id = window.setTimeout(function () { + callback(currTime + timeToCall); + }, timeToCall); + lastTime = currTime + timeToCall; + return id; + }; + + window.cancelAnimationFrame = function (id) { + clearTimeout(id); + }; + + } + + }( $ )); + + function removeQuotes (string) { + if (typeof string === 'string' || string instanceof String) { + string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, ''); + } + + return string; + } + + window.Foundation = { + name : 'Foundation', + + version : '5.5.1', + + media_queries : { + 'small' : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'small-only' : S('.foundation-mq-small-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'medium' : S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'medium-only' : S('.foundation-mq-medium-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'large' : S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'large-only' : S('.foundation-mq-large-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'xlarge' : S('.foundation-mq-xlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'xlarge-only' : S('.foundation-mq-xlarge-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'xxlarge' : S('.foundation-mq-xxlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '') + }, + + stylesheet : $('').appendTo('head')[0].sheet, + + global : { + namespace : undefined + }, + + init : function (scope, libraries, method, options, response) { + var args = [scope, method, options, response], + responses = []; + + // check RTL + this.rtl = /rtl/i.test(S('html').attr('dir')); + + // set foundation global scope + this.scope = scope || this.scope; + + this.set_namespace(); + + if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) { + if (this.libs.hasOwnProperty(libraries)) { + responses.push(this.init_lib(libraries, args)); + } + } else { + for (var lib in this.libs) { + responses.push(this.init_lib(lib, libraries)); + } + } + + S(window).load(function () { + S(window) + .trigger('resize.fndtn.clearing') + .trigger('resize.fndtn.dropdown') + .trigger('resize.fndtn.equalizer') + .trigger('resize.fndtn.interchange') + .trigger('resize.fndtn.joyride') + .trigger('resize.fndtn.magellan') + .trigger('resize.fndtn.topbar') + .trigger('resize.fndtn.slider'); + }); + + return scope; + }, + + init_lib : function (lib, args) { + if (this.libs.hasOwnProperty(lib)) { + this.patch(this.libs[lib]); + + if (args && args.hasOwnProperty(lib)) { + if (typeof this.libs[lib].settings !== 'undefined') { + $.extend(true, this.libs[lib].settings, args[lib]); + } else if (typeof this.libs[lib].defaults !== 'undefined') { + $.extend(true, this.libs[lib].defaults, args[lib]); + } + return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]); + } + + args = args instanceof Array ? args : new Array(args); + return this.libs[lib].init.apply(this.libs[lib], args); + } + + return function () {}; + }, + + patch : function (lib) { + lib.scope = this.scope; + lib.namespace = this.global.namespace; + lib.rtl = this.rtl; + lib['data_options'] = this.utils.data_options; + lib['attr_name'] = attr_name; + lib['add_namespace'] = add_namespace; + lib['bindings'] = bindings; + lib['S'] = this.utils.S; + }, + + inherit : function (scope, methods) { + var methods_arr = methods.split(' '), + i = methods_arr.length; + + while (i--) { + if (this.utils.hasOwnProperty(methods_arr[i])) { + scope[methods_arr[i]] = this.utils[methods_arr[i]]; + } + } + }, + + set_namespace : function () { + + // Description: + // Don't bother reading the namespace out of the meta tag + // if the namespace has been set globally in javascript + // + // Example: + // Foundation.global.namespace = 'my-namespace'; + // or make it an empty string: + // Foundation.global.namespace = ''; + // + // + + // If the namespace has not been set (is undefined), try to read it out of the meta element. + // Otherwise use the globally defined namespace, even if it's empty ('') + var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace; + + // Finally, if the namsepace is either undefined or false, set it to an empty string. + // Otherwise use the namespace value. + this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace; + }, + + libs : {}, + + // methods that can be inherited in libraries + utils : { + + // Description: + // Fast Selector wrapper returns jQuery object. Only use where getElementById + // is not available. + // + // Arguments: + // Selector (String): CSS selector describing the element(s) to be + // returned as a jQuery object. + // + // Scope (String): CSS selector describing the area to be searched. Default + // is document. + // + // Returns: + // Element (jQuery Object): jQuery object containing elements matching the + // selector within the scope. + S : S, + + // Description: + // Executes a function a max of once every n milliseconds + // + // Arguments: + // Func (Function): Function to be throttled. + // + // Delay (Integer): Function execution threshold in milliseconds. + // + // Returns: + // Lazy_function (Function): Function with throttling applied. + throttle : function (func, delay) { + var timer = null; + + return function () { + var context = this, args = arguments; + + if (timer == null) { + timer = setTimeout(function () { + func.apply(context, args); + timer = null; + }, delay); + } + }; + }, + + // Description: + // Executes a function when it stops being invoked for n seconds + // Modified version of _.debounce() http://underscorejs.org + // + // Arguments: + // Func (Function): Function to be debounced. + // + // Delay (Integer): Function execution threshold in milliseconds. + // + // Immediate (Bool): Whether the function should be called at the beginning + // of the delay instead of the end. Default is false. + // + // Returns: + // Lazy_function (Function): Function with debouncing applied. + debounce : function (func, delay, immediate) { + var timeout, result; + return function () { + var context = this, args = arguments; + var later = function () { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, delay); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + + // Description: + // Parses data-options attribute + // + // Arguments: + // El (jQuery Object): Element to be parsed. + // + // Returns: + // Options (Javascript Object): Contents of the element's data-options + // attribute. + data_options : function (el, data_attr_name) { + data_attr_name = data_attr_name || 'options'; + var opts = {}, ii, p, opts_arr, + data_options = function (el) { + var namespace = Foundation.global.namespace; + + if (namespace.length > 0) { + return el.data(namespace + '-' + data_attr_name); + } + + return el.data(data_attr_name); + }; + + var cached_options = data_options(el); + + if (typeof cached_options === 'object') { + return cached_options; + } + + opts_arr = (cached_options || ':').split(';'); + ii = opts_arr.length; + + function isNumber (o) { + return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true; + } + + function trim (str) { + if (typeof str === 'string') { + return $.trim(str); + } + return str; + } + + while (ii--) { + p = opts_arr[ii].split(':'); + p = [p[0], p.slice(1).join(':')]; + + if (/true/i.test(p[1])) { + p[1] = true; + } + if (/false/i.test(p[1])) { + p[1] = false; + } + if (isNumber(p[1])) { + if (p[1].indexOf('.') === -1) { + p[1] = parseInt(p[1], 10); + } else { + p[1] = parseFloat(p[1]); + } + } + + if (p.length === 2 && p[0].length > 0) { + opts[trim(p[0])] = trim(p[1]); + } + } + + return opts; + }, + + // Description: + // Adds JS-recognizable media queries + // + // Arguments: + // Media (String): Key string for the media query to be stored as in + // Foundation.media_queries + // + // Class (String): Class name for the generated tag + register_media : function (media, media_class) { + if (Foundation.media_queries[media] === undefined) { + $('head').append(''); + Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family')); + } + }, + + // Description: + // Add custom CSS within a JS-defined media query + // + // Arguments: + // Rule (String): CSS rule to be appended to the document. + // + // Media (String): Optional media query string for the CSS rule to be + // nested under. + add_custom_rule : function (rule, media) { + if (media === undefined && Foundation.stylesheet) { + Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length); + } else { + var query = Foundation.media_queries[media]; + + if (query !== undefined) { + Foundation.stylesheet.insertRule('@media ' + + Foundation.media_queries[media] + '{ ' + rule + ' }'); + } + } + }, + + // Description: + // Performs a callback function when an image is fully loaded + // + // Arguments: + // Image (jQuery Object): Image(s) to check if loaded. + // + // Callback (Function): Function to execute when image is fully loaded. + image_loaded : function (images, callback) { + var self = this, + unloaded = images.length; + + if (unloaded === 0) { + callback(images); + } + + images.each(function () { + single_image_loaded(self.S(this), function () { + unloaded -= 1; + if (unloaded === 0) { + callback(images); + } + }); + }); + }, + + // Description: + // Returns a random, alphanumeric string + // + // Arguments: + // Length (Integer): Length of string to be generated. Defaults to random + // integer. + // + // Returns: + // Rand (String): Pseudo-random, alphanumeric string. + random_str : function () { + if (!this.fidx) { + this.fidx = 0; + } + this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-'); + + return this.prefix + (this.fidx++).toString(36); + }, + + // Description: + // Helper for window.matchMedia + // + // Arguments: + // mq (String): Media query + // + // Returns: + // (Boolean): Whether the media query passes or not + match : function (mq) { + return window.matchMedia(mq).matches; + }, + + // Description: + // Helpers for checking Foundation default media queries with JS + // + // Returns: + // (Boolean): Whether the media query passes or not + + is_small_up : function () { + return this.match(Foundation.media_queries.small); + }, + + is_medium_up : function () { + return this.match(Foundation.media_queries.medium); + }, + + is_large_up : function () { + return this.match(Foundation.media_queries.large); + }, + + is_xlarge_up : function () { + return this.match(Foundation.media_queries.xlarge); + }, + + is_xxlarge_up : function () { + return this.match(Foundation.media_queries.xxlarge); + }, + + is_small_only : function () { + return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_medium_only : function () { + return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_large_only : function () { + return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_xlarge_only : function () { + return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_xxlarge_only : function () { + return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up(); + } + } + }; + + $.fn.foundation = function () { + var args = Array.prototype.slice.call(arguments, 0); + + return this.each(function () { + Foundation.init.apply(Foundation, [this].concat(args)); + return this; + }); + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.slider = { + name : 'slider', + + version : '5.5.1', + + settings : { + start : 0, + end : 100, + step : 1, + precision : null, + initial : null, + display_selector : '', + vertical : false, + trigger_input_change : false, + on_change : function () {} + }, + + cache : {}, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle'); + this.bindings(method, options); + this.reflow(); + }, + + events : function () { + var self = this; + + $(this.scope) + .off('.slider') + .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider', + '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) { + if (!self.cache.active) { + e.preventDefault(); + self.set_active_slider($(e.target)); + } + }) + .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) { + if (!!self.cache.active) { + e.preventDefault(); + if ($.data(self.cache.active[0], 'settings').vertical) { + var scroll_offset = 0; + if (!e.pageY) { + scroll_offset = window.scrollY; + } + self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset); + } else { + self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x')); + } + } + }) + .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) { + self.remove_active_slider(); + }) + .on('change.fndtn.slider', function (e) { + self.settings.on_change(); + }); + + self.S(window) + .on('resize.fndtn.slider', self.throttle(function (e) { + self.reflow(); + }, 300)); + }, + + get_cursor_position : function (e, xy) { + var pageXY = 'page' + xy.toUpperCase(), + clientXY = 'client' + xy.toUpperCase(), + position; + + if (typeof e[pageXY] !== 'undefined') { + position = e[pageXY]; + } else if (typeof e.originalEvent[clientXY] !== 'undefined') { + position = e.originalEvent[clientXY]; + } else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') { + position = e.originalEvent.touches[0][clientXY]; + } else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') { + position = e.currentPoint[xy]; + } + + return position; + }, + + set_active_slider : function ($handle) { + this.cache.active = $handle; + }, + + remove_active_slider : function () { + this.cache.active = null; + }, + + calculate_position : function ($handle, cursor_x) { + var self = this, + settings = $.data($handle[0], 'settings'), + handle_l = $.data($handle[0], 'handle_l'), + handle_o = $.data($handle[0], 'handle_o'), + bar_l = $.data($handle[0], 'bar_l'), + bar_o = $.data($handle[0], 'bar_o'); + + requestAnimationFrame(function () { + var pct; + + if (Foundation.rtl && !settings.vertical) { + pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1); + } else { + pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1); + } + + pct = settings.vertical ? 1 - pct : pct; + + var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision); + + self.set_ui($handle, norm); + }); + }, + + set_ui : function ($handle, value) { + var settings = $.data($handle[0], 'settings'), + handle_l = $.data($handle[0], 'handle_l'), + bar_l = $.data($handle[0], 'bar_l'), + norm_pct = this.normalized_percentage(value, settings.start, settings.end), + handle_offset = norm_pct * (bar_l - handle_l) - 1, + progress_bar_length = norm_pct * 100, + $handle_parent = $handle.parent(), + $hidden_inputs = $handle.parent().children('input[type=hidden]'); + + if (Foundation.rtl && !settings.vertical) { + handle_offset = -handle_offset; + } + + handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset; + this.set_translate($handle, handle_offset, settings.vertical); + + if (settings.vertical) { + $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%'); + } else { + $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%'); + } + + $handle_parent.attr(this.attr_name(), value).trigger('change').trigger('change.fndtn.slider'); + + $hidden_inputs.val(value); + if (settings.trigger_input_change) { + $hidden_inputs.trigger('change'); + } + + if (!$handle[0].hasAttribute('aria-valuemin')) { + $handle.attr({ + 'aria-valuemin' : settings.start, + 'aria-valuemax' : settings.end + }); + } + $handle.attr('aria-valuenow', value); + + if (settings.display_selector != '') { + $(settings.display_selector).each(function () { + if (this.hasOwnProperty('value')) { + $(this).val(value); + } else { + $(this).text(value); + } + }); + } + + }, + + normalized_percentage : function (val, start, end) { + return Math.min(1, (val - start) / (end - start)); + }, + + normalized_value : function (val, start, end, step, precision) { + var range = end - start, + point = val * range, + mod = (point - (point % step)) / step, + rem = point % step, + round = ( rem >= step * 0.5 ? step : 0); + return ((mod * step + round) + start).toFixed(precision); + }, + + set_translate : function (ele, offset, vertical) { + if (vertical) { + $(ele) + .css('-webkit-transform', 'translateY(' + offset + 'px)') + .css('-moz-transform', 'translateY(' + offset + 'px)') + .css('-ms-transform', 'translateY(' + offset + 'px)') + .css('-o-transform', 'translateY(' + offset + 'px)') + .css('transform', 'translateY(' + offset + 'px)'); + } else { + $(ele) + .css('-webkit-transform', 'translateX(' + offset + 'px)') + .css('-moz-transform', 'translateX(' + offset + 'px)') + .css('-ms-transform', 'translateX(' + offset + 'px)') + .css('-o-transform', 'translateX(' + offset + 'px)') + .css('transform', 'translateX(' + offset + 'px)'); + } + }, + + limit_to : function (val, min, max) { + return Math.min(Math.max(val, min), max); + }, + + initialize_settings : function (handle) { + var settings = $.extend({}, this.settings, this.data_options($(handle).parent())), + decimal_places_match_result; + + if (settings.precision === null) { + decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/); + settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0; + } + + if (settings.vertical) { + $.data(handle, 'bar_o', $(handle).parent().offset().top); + $.data(handle, 'bar_l', $(handle).parent().outerHeight()); + $.data(handle, 'handle_o', $(handle).offset().top); + $.data(handle, 'handle_l', $(handle).outerHeight()); + } else { + $.data(handle, 'bar_o', $(handle).parent().offset().left); + $.data(handle, 'bar_l', $(handle).parent().outerWidth()); + $.data(handle, 'handle_o', $(handle).offset().left); + $.data(handle, 'handle_l', $(handle).outerWidth()); + } + + $.data(handle, 'bar', $(handle).parent()); + $.data(handle, 'settings', settings); + }, + + set_initial_position : function ($ele) { + var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'), + initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start), + $handle = $ele.children('.range-slider-handle'); + this.set_ui($handle, initial); + }, + + set_value : function (value) { + var self = this; + $('[' + self.attr_name() + ']', this.scope).each(function () { + $(this).attr(self.attr_name(), value); + }); + if (!!$(this.scope).attr(self.attr_name())) { + $(this.scope).attr(self.attr_name(), value); + } + self.reflow(); + }, + + reflow : function () { + var self = this; + self.S('[' + this.attr_name() + ']').each(function () { + var handle = $(this).children('.range-slider-handle')[0], + val = $(this).attr(self.attr_name()); + self.initialize_settings(handle); + + if (val) { + self.set_ui($(handle), parseFloat(val)); + } else { + self.set_initial_position($(this)); + } + }); + } + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + var Modernizr = Modernizr || false; + + Foundation.libs.joyride = { + name : 'joyride', + + version : '5.5.1', + + defaults : { + expose : false, // turn on or off the expose feature + modal : true, // Whether to cover page with modal during the tour + keyboard : true, // enable left, right and esc keystrokes + tip_location : 'bottom', // 'top' or 'bottom' in relation to parent + nub_position : 'auto', // override on a per tooltip bases + scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation + scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI. + timer : 0, // 0 = no timer , all other numbers = timer in milliseconds + start_timer_on_click : true, // true or false - true requires clicking the first button start the timer + start_offset : 0, // the index of the tooltip you want to start on (index of the li) + next_button : true, // true or false to control whether a next button is used + prev_button : true, // true or false to control whether a prev button is used + tip_animation : 'fade', // 'pop' or 'fade' in each tip + pause_after : [], // array of indexes where to pause the tour after + exposed : [], // array of expose elements + tip_animation_fade_speed : 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition + cookie_monster : false, // true or false to control whether cookies are used + cookie_name : 'joyride', // Name the cookie you'll use + cookie_domain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com' + cookie_expires : 365, // set when you would like the cookie to expire. + tip_container : 'body', // Where will the tip be attached + abort_on_close : true, // When true, the close event will not fire any callback + tip_location_patterns : { + top : ['bottom'], + bottom : [], // bottom should not need to be repositioned + left : ['right', 'top', 'bottom'], + right : ['left', 'top', 'bottom'] + }, + post_ride_callback : function () {}, // A method to call once the tour closes (canceled or complete) + post_step_callback : function () {}, // A method to call after each step + pre_step_callback : function () {}, // A method to call before each step + pre_ride_callback : function () {}, // A method to call before the tour starts (passed index, tip, and cloned exposed element) + post_expose_callback : function () {}, // A method to call after an element has been exposed + template : { // HTML segments for tip layout + link : '×', + timer : '
', + tip : '
', + wrapper : '
', + button : '', + prev_button : '', + modal : '
', + expose : '
', + expose_cover : '
' + }, + expose_add_class : '' // One or more space-separated class names to be added to exposed element + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle random_str'); + + this.settings = this.settings || $.extend({}, this.defaults, (options || method)); + + this.bindings(method, options) + }, + + go_next : function () { + if (this.settings.$li.next().length < 1) { + this.end(); + } else if (this.settings.timer > 0) { + clearTimeout(this.settings.automate); + this.hide(); + this.show(); + this.startTimer(); + } else { + this.hide(); + this.show(); + } + }, + + go_prev : function () { + if (this.settings.$li.prev().length < 1) { + // Do nothing if there are no prev element + } else if (this.settings.timer > 0) { + clearTimeout(this.settings.automate); + this.hide(); + this.show(null, true); + this.startTimer(); + } else { + this.hide(); + this.show(null, true); + } + }, + + events : function () { + var self = this; + + $(this.scope) + .off('.joyride') + .on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) { + e.preventDefault(); + this.go_next() + }.bind(this)) + .on('click.fndtn.joyride', '.joyride-prev-tip', function (e) { + e.preventDefault(); + this.go_prev(); + }.bind(this)) + + .on('click.fndtn.joyride', '.joyride-close-tip', function (e) { + e.preventDefault(); + this.end(this.settings.abort_on_close); + }.bind(this)) + + .on('keyup.fndtn.joyride', function (e) { + // Don't do anything if keystrokes are disabled + // or if the joyride is not being shown + if (!this.settings.keyboard || !this.settings.riding) { + return; + } + + switch (e.which) { + case 39: // right arrow + e.preventDefault(); + this.go_next(); + break; + case 37: // left arrow + e.preventDefault(); + this.go_prev(); + break; + case 27: // escape + e.preventDefault(); + this.end(this.settings.abort_on_close); + } + }.bind(this)); + + $(window) + .off('.joyride') + .on('resize.fndtn.joyride', self.throttle(function () { + if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) { + if (self.settings.exposed.length > 0) { + var $els = $(self.settings.exposed); + + $els.each(function () { + var $this = $(this); + self.un_expose($this); + self.expose($this); + }); + } + + if (self.is_phone()) { + self.pos_phone(); + } else { + self.pos_default(false); + } + } + }, 100)); + }, + + start : function () { + var self = this, + $this = $('[' + this.attr_name() + ']', this.scope), + integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'], + int_settings_count = integer_settings.length; + + if (!$this.length > 0) { + return; + } + + if (!this.settings.init) { + this.events(); + } + + this.settings = $this.data(this.attr_name(true) + '-init'); + + // non configureable settings + this.settings.$content_el = $this; + this.settings.$body = $(this.settings.tip_container); + this.settings.body_offset = $(this.settings.tip_container).position(); + this.settings.$tip_content = this.settings.$content_el.find('> li'); + this.settings.paused = false; + this.settings.attempts = 0; + this.settings.riding = true; + + // can we create cookies? + if (typeof $.cookie !== 'function') { + this.settings.cookie_monster = false; + } + + // generate the tips and insert into dom. + if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) { + this.settings.$tip_content.each(function (index) { + var $this = $(this); + this.settings = $.extend({}, self.defaults, self.data_options($this)); + + // Make sure that settings parsed from data_options are integers where necessary + var i = int_settings_count; + while (i--) { + self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10); + } + self.create({$li : $this, index : index}); + }); + + // show first tip + if (!this.settings.start_timer_on_click && this.settings.timer > 0) { + this.show('init'); + this.startTimer(); + } else { + this.show('init'); + } + + } + }, + + resume : function () { + this.set_li(); + this.show(); + }, + + tip_template : function (opts) { + var $blank, content; + + opts.tip_class = opts.tip_class || ''; + + $blank = $(this.settings.template.tip).addClass(opts.tip_class); + content = $.trim($(opts.li).html()) + + this.prev_button_text(opts.prev_button_text, opts.index) + + this.button_text(opts.button_text) + + this.settings.template.link + + this.timer_instance(opts.index); + + $blank.append($(this.settings.template.wrapper)); + $blank.first().attr(this.add_namespace('data-index'), opts.index); + $('.joyride-content-wrapper', $blank).append(content); + + return $blank[0]; + }, + + timer_instance : function (index) { + var txt; + + if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) { + txt = ''; + } else { + txt = $(this.settings.template.timer)[0].outerHTML; + } + return txt; + }, + + button_text : function (txt) { + if (this.settings.tip_settings.next_button) { + txt = $.trim(txt) || 'Next'; + txt = $(this.settings.template.button).append(txt)[0].outerHTML; + } else { + txt = ''; + } + return txt; + }, + + prev_button_text : function (txt, idx) { + if (this.settings.tip_settings.prev_button) { + txt = $.trim(txt) || 'Previous'; + + // Add the disabled class to the button if it's the first element + if (idx == 0) { + txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML; + } else { + txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML; + } + } else { + txt = ''; + } + return txt; + }, + + create : function (opts) { + this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li)); + var buttonText = opts.$li.attr(this.add_namespace('data-button')) || opts.$li.attr(this.add_namespace('data-text')), + prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev')) || opts.$li.attr(this.add_namespace('data-prev-text')), + tipClass = opts.$li.attr('class'), + $tip_content = $(this.tip_template({ + tip_class : tipClass, + index : opts.index, + button_text : buttonText, + prev_button_text : prevButtonText, + li : opts.$li + })); + + $(this.settings.tip_container).append($tip_content); + }, + + show : function (init, is_prev) { + var $timer = null; + + // are we paused? + if (this.settings.$li === undefined || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) { + + // don't go to the next li if the tour was paused + if (this.settings.paused) { + this.settings.paused = false; + } else { + this.set_li(init, is_prev); + } + + this.settings.attempts = 0; + + if (this.settings.$li.length && this.settings.$target.length > 0) { + if (init) { //run when we first start + this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip); + if (this.settings.modal) { + this.show_modal(); + } + } + + this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip); + + if (this.settings.modal && this.settings.expose) { + this.expose(); + } + + this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li)); + + this.settings.timer = parseInt(this.settings.timer, 10); + + this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location]; + + // scroll and hide bg if not modal + if (!/body/i.test(this.settings.$target.selector)) { + var joyridemodalbg = $('.joyride-modal-bg'); + if (/pop/i.test(this.settings.tipAnimation)) { + joyridemodalbg.hide(); + } else { + joyridemodalbg.fadeOut(this.settings.tipAnimationFadeSpeed); + } + this.scroll_to(); + } + + if (this.is_phone()) { + this.pos_phone(true); + } else { + this.pos_default(true); + } + + $timer = this.settings.$next_tip.find('.joyride-timer-indicator'); + + if (/pop/i.test(this.settings.tip_animation)) { + + $timer.width(0); + + if (this.settings.timer > 0) { + + this.settings.$next_tip.show(); + + setTimeout(function () { + $timer.animate({ + width : $timer.parent().width() + }, this.settings.timer, 'linear'); + }.bind(this), this.settings.tip_animation_fade_speed); + + } else { + this.settings.$next_tip.show(); + + } + + } else if (/fade/i.test(this.settings.tip_animation)) { + + $timer.width(0); + + if (this.settings.timer > 0) { + + this.settings.$next_tip + .fadeIn(this.settings.tip_animation_fade_speed) + .show(); + + setTimeout(function () { + $timer.animate({ + width : $timer.parent().width() + }, this.settings.timer, 'linear'); + }.bind(this), this.settings.tip_animation_fade_speed); + + } else { + this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed); + } + } + + this.settings.$current_tip = this.settings.$next_tip; + + // skip non-existant targets + } else if (this.settings.$li && this.settings.$target.length < 1) { + + this.show(init, is_prev); + + } else { + + this.end(); + + } + } else { + + this.settings.paused = true; + + } + + }, + + is_phone : function () { + return matchMedia(Foundation.media_queries.small).matches && + !matchMedia(Foundation.media_queries.medium).matches; + }, + + hide : function () { + if (this.settings.modal && this.settings.expose) { + this.un_expose(); + } + + if (!this.settings.modal) { + $('.joyride-modal-bg').hide(); + } + + // Prevent scroll bouncing...wait to remove from layout + this.settings.$current_tip.css('visibility', 'hidden'); + setTimeout($.proxy(function () { + this.hide(); + this.css('visibility', 'visible'); + }, this.settings.$current_tip), 0); + this.settings.post_step_callback(this.settings.$li.index(), + this.settings.$current_tip); + }, + + set_li : function (init, is_prev) { + if (init) { + this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset); + this.set_next_tip(); + this.settings.$current_tip = this.settings.$next_tip; + } else { + if (is_prev) { + this.settings.$li = this.settings.$li.prev(); + } else { + this.settings.$li = this.settings.$li.next(); + } + this.set_next_tip(); + } + + this.set_target(); + }, + + set_next_tip : function () { + this.settings.$next_tip = $('.joyride-tip-guide').eq(this.settings.$li.index()); + this.settings.$next_tip.data('closed', ''); + }, + + set_target : function () { + var cl = this.settings.$li.attr(this.add_namespace('data-class')), + id = this.settings.$li.attr(this.add_namespace('data-id')), + $sel = function () { + if (id) { + return $(document.getElementById(id)); + } else if (cl) { + return $('.' + cl).first(); + } else { + return $('body'); + } + }; + + this.settings.$target = $sel(); + }, + + scroll_to : function () { + var window_half, tipOffset; + + window_half = $(window).height() / 2; + tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()); + + if (tipOffset != 0) { + $('html, body').stop().animate({ + scrollTop : tipOffset + }, this.settings.scroll_speed, 'swing'); + } + }, + + paused : function () { + return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1); + }, + + restart : function () { + this.hide(); + this.settings.$li = undefined; + this.show('init'); + }, + + pos_default : function (init) { + var $nub = this.settings.$next_tip.find('.joyride-nub'), + nub_width = Math.ceil($nub.outerWidth() / 2), + nub_height = Math.ceil($nub.outerHeight() / 2), + toggle = init || false; + + // tip must not be "display: none" to calculate position + if (toggle) { + this.settings.$next_tip.css('visibility', 'hidden'); + this.settings.$next_tip.show(); + } + + if (!/body/i.test(this.settings.$target.selector)) { + var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0, + leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0; + + if (this.bottom()) { + if (this.rtl) { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment), + left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment}); + } else { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment), + left : this.settings.$target.offset().left + leftAdjustment}); + } + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'top'); + + } else if (this.top()) { + if (this.rtl) { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment), + left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()}); + } else { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment), + left : this.settings.$target.offset().left + leftAdjustment}); + } + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom'); + + } else if (this.right()) { + + this.settings.$next_tip.css({ + top : this.settings.$target.offset().top + topAdjustment, + left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)}); + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'left'); + + } else if (this.left()) { + + this.settings.$next_tip.css({ + top : this.settings.$target.offset().top + topAdjustment, + left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)}); + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'right'); + + } + + if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) { + + $nub.removeClass('bottom') + .removeClass('top') + .removeClass('right') + .removeClass('left'); + + this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts]; + + this.settings.attempts++; + + this.pos_default(); + + } + + } else if (this.settings.$li.length) { + + this.pos_modal($nub); + + } + + if (toggle) { + this.settings.$next_tip.hide(); + this.settings.$next_tip.css('visibility', 'visible'); + } + + }, + + pos_phone : function (init) { + var tip_height = this.settings.$next_tip.outerHeight(), + tip_offset = this.settings.$next_tip.offset(), + target_height = this.settings.$target.outerHeight(), + $nub = $('.joyride-nub', this.settings.$next_tip), + nub_height = Math.ceil($nub.outerHeight() / 2), + toggle = init || false; + + $nub.removeClass('bottom') + .removeClass('top') + .removeClass('right') + .removeClass('left'); + + if (toggle) { + this.settings.$next_tip.css('visibility', 'hidden'); + this.settings.$next_tip.show(); + } + + if (!/body/i.test(this.settings.$target.selector)) { + + if (this.top()) { + + this.settings.$next_tip.offset({top : this.settings.$target.offset().top - tip_height - nub_height}); + $nub.addClass('bottom'); + + } else { + + this.settings.$next_tip.offset({top : this.settings.$target.offset().top + target_height + nub_height}); + $nub.addClass('top'); + + } + + } else if (this.settings.$li.length) { + this.pos_modal($nub); + } + + if (toggle) { + this.settings.$next_tip.hide(); + this.settings.$next_tip.css('visibility', 'visible'); + } + }, + + pos_modal : function ($nub) { + this.center(); + $nub.hide(); + + this.show_modal(); + }, + + show_modal : function () { + if (!this.settings.$next_tip.data('closed')) { + var joyridemodalbg = $('.joyride-modal-bg'); + if (joyridemodalbg.length < 1) { + var joyridemodalbg = $(this.settings.template.modal); + joyridemodalbg.appendTo('body'); + } + + if (/pop/i.test(this.settings.tip_animation)) { + joyridemodalbg.show(); + } else { + joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed); + } + } + }, + + expose : function () { + var expose, + exposeCover, + el, + origCSS, + origClasses, + randId = 'expose-' + this.random_str(6); + + if (arguments.length > 0 && arguments[0] instanceof $) { + el = arguments[0]; + } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) { + el = this.settings.$target; + } else { + return false; + } + + if (el.length < 1) { + if (window.console) { + console.error('element not valid', el); + } + return false; + } + + expose = $(this.settings.template.expose); + this.settings.$body.append(expose); + expose.css({ + top : el.offset().top, + left : el.offset().left, + width : el.outerWidth(true), + height : el.outerHeight(true) + }); + + exposeCover = $(this.settings.template.expose_cover); + + origCSS = { + zIndex : el.css('z-index'), + position : el.css('position') + }; + + origClasses = el.attr('class') == null ? '' : el.attr('class'); + + el.css('z-index', parseInt(expose.css('z-index')) + 1); + + if (origCSS.position == 'static') { + el.css('position', 'relative'); + } + + el.data('expose-css', origCSS); + el.data('orig-class', origClasses); + el.attr('class', origClasses + ' ' + this.settings.expose_add_class); + + exposeCover.css({ + top : el.offset().top, + left : el.offset().left, + width : el.outerWidth(true), + height : el.outerHeight(true) + }); + + if (this.settings.modal) { + this.show_modal(); + } + + this.settings.$body.append(exposeCover); + expose.addClass(randId); + exposeCover.addClass(randId); + el.data('expose', randId); + this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el); + this.add_exposed(el); + }, + + un_expose : function () { + var exposeId, + el, + expose, + origCSS, + origClasses, + clearAll = false; + + if (arguments.length > 0 && arguments[0] instanceof $) { + el = arguments[0]; + } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) { + el = this.settings.$target; + } else { + return false; + } + + if (el.length < 1) { + if (window.console) { + console.error('element not valid', el); + } + return false; + } + + exposeId = el.data('expose'); + expose = $('.' + exposeId); + + if (arguments.length > 1) { + clearAll = arguments[1]; + } + + if (clearAll === true) { + $('.joyride-expose-wrapper,.joyride-expose-cover').remove(); + } else { + expose.remove(); + } + + origCSS = el.data('expose-css'); + + if (origCSS.zIndex == 'auto') { + el.css('z-index', ''); + } else { + el.css('z-index', origCSS.zIndex); + } + + if (origCSS.position != el.css('position')) { + if (origCSS.position == 'static') {// this is default, no need to set it. + el.css('position', ''); + } else { + el.css('position', origCSS.position); + } + } + + origClasses = el.data('orig-class'); + el.attr('class', origClasses); + el.removeData('orig-classes'); + + el.removeData('expose'); + el.removeData('expose-z-index'); + this.remove_exposed(el); + }, + + add_exposed : function (el) { + this.settings.exposed = this.settings.exposed || []; + if (el instanceof $ || typeof el === 'object') { + this.settings.exposed.push(el[0]); + } else if (typeof el == 'string') { + this.settings.exposed.push(el); + } + }, + + remove_exposed : function (el) { + var search, i; + if (el instanceof $) { + search = el[0] + } else if (typeof el == 'string') { + search = el; + } + + this.settings.exposed = this.settings.exposed || []; + i = this.settings.exposed.length; + + while (i--) { + if (this.settings.exposed[i] == search) { + this.settings.exposed.splice(i, 1); + return; + } + } + }, + + center : function () { + var $w = $(window); + + this.settings.$next_tip.css({ + top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()), + left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft()) + }); + + return true; + }, + + bottom : function () { + return /bottom/i.test(this.settings.tip_settings.tip_location); + }, + + top : function () { + return /top/i.test(this.settings.tip_settings.tip_location); + }, + + right : function () { + return /right/i.test(this.settings.tip_settings.tip_location); + }, + + left : function () { + return /left/i.test(this.settings.tip_settings.tip_location); + }, + + corners : function (el) { + var w = $(window), + window_half = w.height() / 2, + //using this to calculate since scroll may not have finished yet. + tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()), + right = w.width() + w.scrollLeft(), + offsetBottom = w.height() + tipOffset, + bottom = w.height() + w.scrollTop(), + top = w.scrollTop(); + + if (tipOffset < top) { + if (tipOffset < 0) { + top = 0; + } else { + top = tipOffset; + } + } + + if (offsetBottom > bottom) { + bottom = offsetBottom; + } + + return [ + el.offset().top < top, + right < el.offset().left + el.outerWidth(), + bottom < el.offset().top + el.outerHeight(), + w.scrollLeft() > el.offset().left + ]; + }, + + visible : function (hidden_corners) { + var i = hidden_corners.length; + + while (i--) { + if (hidden_corners[i]) { + return false; + } + } + + return true; + }, + + nub_position : function (nub, pos, def) { + if (pos === 'auto') { + nub.addClass(def); + } else { + nub.addClass(pos); + } + }, + + startTimer : function () { + if (this.settings.$li.length) { + this.settings.automate = setTimeout(function () { + this.hide(); + this.show(); + this.startTimer(); + }.bind(this), this.settings.timer); + } else { + clearTimeout(this.settings.automate); + } + }, + + end : function (abort) { + if (this.settings.cookie_monster) { + $.cookie(this.settings.cookie_name, 'ridden', {expires : this.settings.cookie_expires, domain : this.settings.cookie_domain}); + } + + if (this.settings.timer > 0) { + clearTimeout(this.settings.automate); + } + + if (this.settings.modal && this.settings.expose) { + this.un_expose(); + } + + // Unplug keystrokes listener + $(this.scope).off('keyup.joyride') + + this.settings.$next_tip.data('closed', true); + this.settings.riding = false; + + $('.joyride-modal-bg').hide(); + this.settings.$current_tip.hide(); + + if (typeof abort === 'undefined' || abort === false) { + this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip); + this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip); + } + + $('.joyride-tip-guide').remove(); + }, + + off : function () { + $(this.scope).off('.joyride'); + $(window).off('.joyride'); + $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride'); + $('.joyride-tip-guide, .joyride-modal-bg').remove(); + clearTimeout(this.settings.automate); + this.settings = {}; + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.equalizer = { + name : 'equalizer', + + version : '5.5.1', + + settings : { + use_tallest : true, + before_height_change : $.noop, + after_height_change : $.noop, + equalize_on_stack : false + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'image_loaded'); + this.bindings(method, options); + this.reflow(); + }, + + events : function () { + this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) { + this.reflow(); + }.bind(this)); + }, + + equalize : function (equalizer) { + var isStacked = false, + vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'), + settings = equalizer.data(this.attr_name(true) + '-init'); + + if (vals.length === 0) { + return; + } + var firstTopOffset = vals.first().offset().top; + settings.before_height_change(); + equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer'); + vals.height('inherit'); + vals.each(function () { + var el = $(this); + if (el.offset().top !== firstTopOffset) { + isStacked = true; + } + }); + + if (settings.equalize_on_stack === false) { + if (isStacked) { + return; + } + }; + + var heights = vals.map(function () { return $(this).outerHeight(false) }).get(); + + if (settings.use_tallest) { + var max = Math.max.apply(null, heights); + vals.css('height', max); + } else { + var min = Math.min.apply(null, heights); + vals.css('height', min); + } + settings.after_height_change(); + equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer'); + }, + + reflow : function () { + var self = this; + + this.S('[' + this.attr_name() + ']', this.scope).each(function () { + var $eq_target = $(this); + self.image_loaded(self.S('img', this), function () { + self.equalize($eq_target) + }); + }); + } + }; +})(jQuery, window, window.document); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.dropdown = { + name : 'dropdown', + + version : '5.5.1', + + settings : { + active_class : 'open', + disabled_class : 'disabled', + mega_class : 'mega', + align : 'bottom', + is_hover : false, + hover_timeout : 150, + opened : function () {}, + closed : function () {} + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle'); + + $.extend(true, this.settings, method, options); + this.bindings(method, options); + }, + + events : function (scope) { + var self = this, + S = self.S; + + S(this.scope) + .off('.dropdown') + .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) { + var settings = S(this).data(self.attr_name(true) + '-init') || self.settings; + if (!settings.is_hover || Modernizr.touch) { + e.preventDefault(); + if (S(this).parent('[data-reveal-id]')) { + e.stopPropagation(); + } + self.toggle($(this)); + } + }) + .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) { + var $this = S(this), + dropdown, + target; + + clearTimeout(self.timeout); + + if ($this.data(self.data_attr())) { + dropdown = S('#' + $this.data(self.data_attr())); + target = $this; + } else { + dropdown = $this; + target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]'); + } + + var settings = target.data(self.attr_name(true) + '-init') || self.settings; + + if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) { + self.closeall.call(self); + } + + if (settings.is_hover) { + self.open.apply(self, [dropdown, target]); + } + }) + .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) { + var $this = S(this); + var settings; + + if ($this.data(self.data_attr())) { + settings = $this.data(self.data_attr(true) + '-init') || self.settings; + } else { + var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'), + settings = target.data(self.attr_name(true) + '-init') || self.settings; + } + + self.timeout = setTimeout(function () { + if ($this.data(self.data_attr())) { + if (settings.is_hover) { + self.close.call(self, S('#' + $this.data(self.data_attr()))); + } + } else { + if (settings.is_hover) { + self.close.call(self, $this); + } + } + }.bind(this), settings.hover_timeout); + }) + .on('click.fndtn.dropdown', function (e) { + var parent = S(e.target).closest('[' + self.attr_name() + '-content]'); + var links = parent.find('a'); + + if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') { + self.close.call(self, S('[' + self.attr_name() + '-content]')); + } + + if (e.target !== document && !$.contains(document.documentElement, e.target)) { + return; + } + + if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) { + return; + } + + if (!(S(e.target).data('revealId')) && + (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') || + $.contains(parent.first()[0], e.target)))) { + e.stopPropagation(); + return; + } + + self.close.call(self, S('[' + self.attr_name() + '-content]')); + }) + .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () { + self.settings.opened.call(this); + }) + .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () { + self.settings.closed.call(this); + }); + + S(window) + .off('.dropdown') + .on('resize.fndtn.dropdown', self.throttle(function () { + self.resize.call(self); + }, 50)); + + this.resize(); + }, + + close : function (dropdown) { + var self = this; + dropdown.each(function () { + var original_target = $('[' + self.attr_name() + '=' + dropdown[0].id + ']') || $('aria-controls=' + dropdown[0].id + ']'); + original_target.attr('aria-expanded', 'false'); + if (self.S(this).hasClass(self.settings.active_class)) { + self.S(this) + .css(Foundation.rtl ? 'right' : 'left', '-99999px') + .attr('aria-hidden', 'true') + .removeClass(self.settings.active_class) + .prev('[' + self.attr_name() + ']') + .removeClass(self.settings.active_class) + .removeData('target'); + + self.S(this).trigger('closed').trigger('closed.fndtn.dropdown', [dropdown]); + } + }); + dropdown.removeClass('f-open-' + this.attr_name(true)); + }, + + closeall : function () { + var self = this; + $.each(self.S('.f-open-' + this.attr_name(true)), function () { + self.close.call(self, self.S(this)); + }); + }, + + open : function (dropdown, target) { + this + .css(dropdown + .addClass(this.settings.active_class), target); + dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class); + dropdown.data('target', target.get(0)).trigger('opened').trigger('opened.fndtn.dropdown', [dropdown, target]); + dropdown.attr('aria-hidden', 'false'); + target.attr('aria-expanded', 'true'); + dropdown.focus(); + dropdown.addClass('f-open-' + this.attr_name(true)); + }, + + data_attr : function () { + if (this.namespace.length > 0) { + return this.namespace + '-' + this.name; + } + + return this.name; + }, + + toggle : function (target) { + if (target.hasClass(this.settings.disabled_class)) { + return; + } + var dropdown = this.S('#' + target.data(this.data_attr())); + if (dropdown.length === 0) { + // No dropdown found, not continuing + return; + } + + this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown)); + + if (dropdown.hasClass(this.settings.active_class)) { + this.close.call(this, dropdown); + if (dropdown.data('target') !== target.get(0)) { + this.open.call(this, dropdown, target); + } + } else { + this.open.call(this, dropdown, target); + } + }, + + resize : function () { + var dropdown = this.S('[' + this.attr_name() + '-content].open'); + var target = $(dropdown.data("target")); + + if (dropdown.length && target.length) { + this.css(dropdown, target); + } + }, + + css : function (dropdown, target) { + var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8), + settings = target.data(this.attr_name(true) + '-init') || this.settings; + + this.clear_idx(); + + if (this.small()) { + var p = this.dirs.bottom.call(dropdown, target, settings); + + dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({ + position : 'absolute', + width : '95%', + 'max-width' : 'none', + top : p.top + }); + + dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset); + } else { + + this.style(dropdown, target, settings); + } + + return dropdown; + }, + + style : function (dropdown, target, settings) { + var css = $.extend({position : 'absolute'}, + this.dirs[settings.align].call(dropdown, target, settings)); + + dropdown.attr('style', '').css(css); + }, + + // return CSS property object + // `this` is the dropdown + dirs : { + // Calculate target offset + _base : function (t) { + var o_p = this.offsetParent(), + o = o_p.offset(), + p = t.offset(); + + p.top -= o.top; + p.left -= o.left; + + //set some flags on the p object to pass along + p.missRight = false; + p.missTop = false; + p.missLeft = false; + p.leftRightFlag = false; + + //lets see if the panel will be off the screen + //get the actual width of the page and store it + var actualBodyWidth; + if (document.getElementsByClassName('row')[0]) { + actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth; + } else { + actualBodyWidth = window.outerWidth; + } + + var actualMarginWidth = (window.outerWidth - actualBodyWidth) / 2; + var actualBoundary = actualBodyWidth; + + if (!this.hasClass('mega')) { + //miss top + if (t.offset().top <= this.outerHeight()) { + p.missTop = true; + actualBoundary = window.outerWidth - actualMarginWidth; + p.leftRightFlag = true; + } + + //miss right + if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) { + p.missRight = true; + p.missLeft = false; + } + + //miss left + if (t.offset().left - this.outerWidth() <= 0) { + p.missLeft = true; + p.missRight = false; + } + } + + return p; + }, + + top : function (t, s) { + var self = Foundation.libs.dropdown, + p = self.dirs._base.call(this, t); + + this.addClass('drop-top'); + + if (p.missTop == true) { + p.top = p.top + t.outerHeight() + this.outerHeight(); + this.removeClass('drop-top'); + } + + if (p.missRight == true) { + p.left = p.left - this.outerWidth() + t.outerWidth(); + } + + if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { + self.adjust_pip(this, t, s, p); + } + + if (Foundation.rtl) { + return {left : p.left - this.outerWidth() + t.outerWidth(), + top : p.top - this.outerHeight()}; + } + + return {left : p.left, top : p.top - this.outerHeight()}; + }, + + bottom : function (t, s) { + var self = Foundation.libs.dropdown, + p = self.dirs._base.call(this, t); + + if (p.missRight == true) { + p.left = p.left - this.outerWidth() + t.outerWidth(); + } + + if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { + self.adjust_pip(this, t, s, p); + } + + if (self.rtl) { + return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()}; + } + + return {left : p.left, top : p.top + t.outerHeight()}; + }, + + left : function (t, s) { + var p = Foundation.libs.dropdown.dirs._base.call(this, t); + + this.addClass('drop-left'); + + if (p.missLeft == true) { + p.left = p.left + this.outerWidth(); + p.top = p.top + t.outerHeight(); + this.removeClass('drop-left'); + } + + return {left : p.left - this.outerWidth(), top : p.top}; + }, + + right : function (t, s) { + var p = Foundation.libs.dropdown.dirs._base.call(this, t); + + this.addClass('drop-right'); + + if (p.missRight == true) { + p.left = p.left - this.outerWidth(); + p.top = p.top + t.outerHeight(); + this.removeClass('drop-right'); + } else { + p.triggeredRight = true; + } + + var self = Foundation.libs.dropdown; + + if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { + self.adjust_pip(this, t, s, p); + } + + return {left : p.left + t.outerWidth(), top : p.top}; + } + }, + + // Insert rule to style psuedo elements + adjust_pip : function (dropdown, target, settings, position) { + var sheet = Foundation.stylesheet, + pip_offset_base = 8; + + if (dropdown.hasClass(settings.mega_class)) { + pip_offset_base = position.left + (target.outerWidth() / 2) - 8; + } else if (this.small()) { + pip_offset_base += position.left - 8; + } + + this.rule_idx = sheet.cssRules.length; + + //default + var sel_before = '.f-dropdown.open:before', + sel_after = '.f-dropdown.open:after', + css_before = 'left: ' + pip_offset_base + 'px;', + css_after = 'left: ' + (pip_offset_base - 1) + 'px;'; + + if (position.missRight == true) { + pip_offset_base = dropdown.outerWidth() - 23; + sel_before = '.f-dropdown.open:before', + sel_after = '.f-dropdown.open:after', + css_before = 'left: ' + pip_offset_base + 'px;', + css_after = 'left: ' + (pip_offset_base - 1) + 'px;'; + } + + //just a case where right is fired, but its not missing right + if (position.triggeredRight == true) { + sel_before = '.f-dropdown.open:before', + sel_after = '.f-dropdown.open:after', + css_before = 'left:-12px;', + css_after = 'left:-14px;'; + } + + if (sheet.insertRule) { + sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx); + sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1); + } else { + sheet.addRule(sel_before, css_before, this.rule_idx); + sheet.addRule(sel_after, css_after, this.rule_idx + 1); + } + }, + + // Remove old dropdown rule index + clear_idx : function () { + var sheet = Foundation.stylesheet; + + if (typeof this.rule_idx !== 'undefined') { + sheet.deleteRule(this.rule_idx); + sheet.deleteRule(this.rule_idx); + delete this.rule_idx; + } + }, + + small : function () { + return matchMedia(Foundation.media_queries.small).matches && + !matchMedia(Foundation.media_queries.medium).matches; + }, + + off : function () { + this.S(this.scope).off('.fndtn.dropdown'); + this.S('html, body').off('.fndtn.dropdown'); + this.S(window).off('.fndtn.dropdown'); + this.S('[data-dropdown-content]').off('.fndtn.dropdown'); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.clearing = { + name : 'clearing', + + version : '5.5.1', + + settings : { + templates : { + viewing : '×' + + '' + }, + + // comma delimited list of selectors that, on click, will close clearing, + // add 'div.clearing-blackout, div.visible-img' to close on background click + close_selectors : '.clearing-close, div.clearing-blackout', + + // Default to the entire li element. + open_selectors : '', + + // Image will be skipped in carousel. + skip_selector : '', + + touch_label : '', + + // event initializers and locks + init : false, + locked : false + }, + + init : function (scope, method, options) { + var self = this; + Foundation.inherit(this, 'throttle image_loaded'); + + this.bindings(method, options); + + if (self.S(this.scope).is('[' + this.attr_name() + ']')) { + this.assemble(self.S('li', this.scope)); + } else { + self.S('[' + this.attr_name() + ']', this.scope).each(function () { + self.assemble(self.S('li', this)); + }); + } + }, + + events : function (scope) { + var self = this, + S = self.S, + $scroll_container = $('.scroll-container'); + + if ($scroll_container.length > 0) { + this.scope = $scroll_container; + } + + S(this.scope) + .off('.clearing') + .on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors, + function (e, current, target) { + var current = current || S(this), + target = target || current, + next = current.next('li'), + settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'), + image = S(e.target); + + e.preventDefault(); + + if (!settings) { + self.init(); + settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'); + } + + // if clearing is open and the current image is + // clicked, go to the next image in sequence + if (target.hasClass('visible') && + current[0] === target[0] && + next.length > 0 && self.is_open(current)) { + target = next; + image = S('img', target); + } + + // set current and target to the clicked li if not otherwise defined. + self.open(image, current, target); + self.update_paddles(target); + }) + + .on('click.fndtn.clearing', '.clearing-main-next', + function (e) { self.nav(e, 'next') }) + .on('click.fndtn.clearing', '.clearing-main-prev', + function (e) { self.nav(e, 'prev') }) + .on('click.fndtn.clearing', this.settings.close_selectors, + function (e) { Foundation.libs.clearing.close(e, this) }); + + $(document).on('keydown.fndtn.clearing', + function (e) { self.keydown(e) }); + + S(window).off('.clearing').on('resize.fndtn.clearing', + function () { self.resize() }); + + this.swipe_events(scope); + }, + + swipe_events : function (scope) { + var self = this, + S = self.S; + + S(this.scope) + .on('touchstart.fndtn.clearing', '.visible-img', function (e) { + if (!e.touches) { e = e.originalEvent; } + var data = { + start_page_x : e.touches[0].pageX, + start_page_y : e.touches[0].pageY, + start_time : (new Date()).getTime(), + delta_x : 0, + is_scrolling : undefined + }; + + S(this).data('swipe-transition', data); + e.stopPropagation(); + }) + .on('touchmove.fndtn.clearing', '.visible-img', function (e) { + if (!e.touches) { + e = e.originalEvent; + } + // Ignore pinch/zoom events + if (e.touches.length > 1 || e.scale && e.scale !== 1) { + return; + } + + var data = S(this).data('swipe-transition'); + + if (typeof data === 'undefined') { + data = {}; + } + + data.delta_x = e.touches[0].pageX - data.start_page_x; + + if (Foundation.rtl) { + data.delta_x = -data.delta_x; + } + + if (typeof data.is_scrolling === 'undefined') { + data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) ); + } + + if (!data.is_scrolling && !data.active) { + e.preventDefault(); + var direction = (data.delta_x < 0) ? 'next' : 'prev'; + data.active = true; + self.nav(e, direction); + } + }) + .on('touchend.fndtn.clearing', '.visible-img', function (e) { + S(this).data('swipe-transition', {}); + e.stopPropagation(); + }); + }, + + assemble : function ($li) { + var $el = $li.parent(); + + if ($el.parent().hasClass('carousel')) { + return; + } + + $el.after('
'); + + var grid = $el.detach(), + grid_outerHTML = ''; + + if (grid[0] == null) { + return; + } else { + grid_outerHTML = grid[0].outerHTML; + } + + var holder = this.S('#foundationClearingHolder'), + settings = $el.data(this.attr_name(true) + '-init'), + data = { + grid : '', + viewing : settings.templates.viewing + }, + wrapper = '
' + data.viewing + + data.grid + '
', + touch_label = this.settings.touch_label; + + if (Modernizr.touch) { + wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end(); + } + + holder.after(wrapper).remove(); + }, + + open : function ($image, current, target) { + var self = this, + body = $(document.body), + root = target.closest('.clearing-assembled'), + container = self.S('div', root).first(), + visible_image = self.S('.visible-img', container), + image = self.S('img', visible_image).not($image), + label = self.S('.clearing-touch-label', container), + error = false; + + // Event to disable scrolling on touch devices when Clearing is activated + $('body').on('touchmove', function (e) { + e.preventDefault(); + }); + + image.error(function () { + error = true; + }); + + function startLoad() { + setTimeout(function () { + this.image_loaded(image, function () { + if (image.outerWidth() === 1 && !error) { + startLoad.call(this); + } else { + cb.call(this, image); + } + }.bind(this)); + }.bind(this), 100); + } + + function cb (image) { + var $image = $(image); + $image.css('visibility', 'visible'); + // toggle the gallery + body.css('overflow', 'hidden'); + root.addClass('clearing-blackout'); + container.addClass('clearing-container'); + visible_image.show(); + this.fix_height(target) + .caption(self.S('.clearing-caption', visible_image), self.S('img', target)) + .center_and_label(image, label) + .shift(current, target, function () { + target.closest('li').siblings().removeClass('visible'); + target.closest('li').addClass('visible'); + }); + visible_image.trigger('opened.fndtn.clearing') + } + + if (!this.locked()) { + visible_image.trigger('open.fndtn.clearing'); + // set the image to the selected thumbnail + image + .attr('src', this.load($image)) + .css('visibility', 'hidden'); + + startLoad.call(this); + } + }, + + close : function (e, el) { + e.preventDefault(); + + var root = (function (target) { + if (/blackout/.test(target.selector)) { + return target; + } else { + return target.closest('.clearing-blackout'); + } + }($(el))), + body = $(document.body), container, visible_image; + + if (el === e.target && root) { + body.css('overflow', ''); + container = $('div', root).first(); + visible_image = $('.visible-img', container); + visible_image.trigger('close.fndtn.clearing'); + this.settings.prev_index = 0; + $('ul[' + this.attr_name() + ']', root) + .attr('style', '').closest('.clearing-blackout') + .removeClass('clearing-blackout'); + container.removeClass('clearing-container'); + visible_image.hide(); + visible_image.trigger('closed.fndtn.clearing'); + } + + // Event to re-enable scrolling on touch devices + $('body').off('touchmove'); + + return false; + }, + + is_open : function (current) { + return current.parent().prop('style').length > 0; + }, + + keydown : function (e) { + var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'), + NEXT_KEY = this.rtl ? 37 : 39, + PREV_KEY = this.rtl ? 39 : 37, + ESC_KEY = 27; + + if (e.which === NEXT_KEY) { + this.go(clearing, 'next'); + } + if (e.which === PREV_KEY) { + this.go(clearing, 'prev'); + } + if (e.which === ESC_KEY) { + this.S('a.clearing-close').trigger('click').trigger('click.fndtn.clearing'); + } + }, + + nav : function (e, direction) { + var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout'); + + e.preventDefault(); + this.go(clearing, direction); + }, + + resize : function () { + var image = $('img', '.clearing-blackout .visible-img'), + label = $('.clearing-touch-label', '.clearing-blackout'); + + if (image.length) { + this.center_and_label(image, label); + image.trigger('resized.fndtn.clearing') + } + }, + + // visual adjustments + fix_height : function (target) { + var lis = target.parent().children(), + self = this; + + lis.each(function () { + var li = self.S(this), + image = li.find('img'); + + if (li.height() > image.outerHeight()) { + li.addClass('fix-height'); + } + }) + .closest('ul') + .width(lis.length * 100 + '%'); + + return this; + }, + + update_paddles : function (target) { + target = target.closest('li'); + var visible_image = target + .closest('.carousel') + .siblings('.visible-img'); + + if (target.next().length > 0) { + this.S('.clearing-main-next', visible_image).removeClass('disabled'); + } else { + this.S('.clearing-main-next', visible_image).addClass('disabled'); + } + + if (target.prev().length > 0) { + this.S('.clearing-main-prev', visible_image).removeClass('disabled'); + } else { + this.S('.clearing-main-prev', visible_image).addClass('disabled'); + } + }, + + center_and_label : function (target, label) { + if (!this.rtl && label.length > 0) { + label.css({ + marginLeft : -(label.outerWidth() / 2), + marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10 + }); + } else { + label.css({ + marginRight : -(label.outerWidth() / 2), + marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10, + left: 'auto', + right: '50%' + }); + } + return this; + }, + + // image loading and preloading + + load : function ($image) { + var href; + + if ($image[0].nodeName === 'A') { + href = $image.attr('href'); + } else { + href = $image.closest('a').attr('href'); + } + + this.preload($image); + + if (href) { + return href; + } + return $image.attr('src'); + }, + + preload : function ($image) { + this + .img($image.closest('li').next()) + .img($image.closest('li').prev()); + }, + + img : function (img) { + if (img.length) { + var new_img = new Image(), + new_a = this.S('a', img); + + if (new_a.length) { + new_img.src = new_a.attr('href'); + } else { + new_img.src = this.S('img', img).attr('src'); + } + } + return this; + }, + + // image caption + + caption : function (container, $image) { + var caption = $image.attr('data-caption'); + + if (caption) { + container + .html(caption) + .show(); + } else { + container + .text('') + .hide(); + } + return this; + }, + + // directional methods + + go : function ($ul, direction) { + var current = this.S('.visible', $ul), + target = current[direction](); + + // Check for skip selector. + if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) { + target = target[direction](); + } + + if (target.length) { + this.S('img', target) + .trigger('click', [current, target]).trigger('click.fndtn.clearing', [current, target]) + .trigger('change.fndtn.clearing'); + } + }, + + shift : function (current, target, callback) { + var clearing = target.parent(), + old_index = this.settings.prev_index || target.index(), + direction = this.direction(clearing, current, target), + dir = this.rtl ? 'right' : 'left', + left = parseInt(clearing.css('left'), 10), + width = target.outerWidth(), + skip_shift; + + var dir_obj = {}; + + // we use jQuery animate instead of CSS transitions because we + // need a callback to unlock the next animation + // needs support for RTL ** + if (target.index() !== old_index && !/skip/.test(direction)) { + if (/left/.test(direction)) { + this.lock(); + dir_obj[dir] = left + width; + clearing.animate(dir_obj, 300, this.unlock()); + } else if (/right/.test(direction)) { + this.lock(); + dir_obj[dir] = left - width; + clearing.animate(dir_obj, 300, this.unlock()); + } + } else if (/skip/.test(direction)) { + // the target image is not adjacent to the current image, so + // do we scroll right or not + skip_shift = target.index() - this.settings.up_count; + this.lock(); + + if (skip_shift > 0) { + dir_obj[dir] = -(skip_shift * width); + clearing.animate(dir_obj, 300, this.unlock()); + } else { + dir_obj[dir] = 0; + clearing.animate(dir_obj, 300, this.unlock()); + } + } + + callback(); + }, + + direction : function ($el, current, target) { + var lis = this.S('li', $el), + li_width = lis.outerWidth() + (lis.outerWidth() / 4), + up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1, + target_index = lis.index(target), + response; + + this.settings.up_count = up_count; + + if (this.adjacent(this.settings.prev_index, target_index)) { + if ((target_index > up_count) && target_index > this.settings.prev_index) { + response = 'right'; + } else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) { + response = 'left'; + } else { + response = false; + } + } else { + response = 'skip'; + } + + this.settings.prev_index = target_index; + + return response; + }, + + adjacent : function (current_index, target_index) { + for (var i = target_index + 1; i >= target_index - 1; i--) { + if (i === current_index) { + return true; + } + } + return false; + }, + + // lock management + + lock : function () { + this.settings.locked = true; + }, + + unlock : function () { + this.settings.locked = false; + }, + + locked : function () { + return this.settings.locked; + }, + + off : function () { + this.S(this.scope).off('.fndtn.clearing'); + this.S(window).off('.fndtn.clearing'); + }, + + reflow : function () { + this.init(); + } + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + var noop = function () {}; + + var Orbit = function (el, settings) { + // Don't reinitialize plugin + if (el.hasClass(settings.slides_container_class)) { + return this; + } + + var self = this, + container, + slides_container = el, + number_container, + bullets_container, + timer_container, + idx = 0, + animate, + timer, + locked = false, + adjust_height_after = false; + + self.slides = function () { + return slides_container.children(settings.slide_selector); + }; + + self.slides().first().addClass(settings.active_slide_class); + + self.update_slide_number = function (index) { + if (settings.slide_number) { + number_container.find('span:first').text(parseInt(index) + 1); + number_container.find('span:last').text(self.slides().length); + } + if (settings.bullets) { + bullets_container.children().removeClass(settings.bullets_active_class); + $(bullets_container.children().get(index)).addClass(settings.bullets_active_class); + } + }; + + self.update_active_link = function (index) { + var link = $('[data-orbit-link="' + self.slides().eq(index).attr('data-orbit-slide') + '"]'); + link.siblings().removeClass(settings.bullets_active_class); + link.addClass(settings.bullets_active_class); + }; + + self.build_markup = function () { + slides_container.wrap('
'); + container = slides_container.parent(); + slides_container.addClass(settings.slides_container_class); + + if (settings.stack_on_small) { + container.addClass(settings.stack_on_small_class); + } + + if (settings.navigation_arrows) { + container.append($('').addClass(settings.prev_class)); + container.append($('').addClass(settings.next_class)); + } + + if (settings.timer) { + timer_container = $('
').addClass(settings.timer_container_class); + timer_container.append(''); + timer_container.append($('
').addClass(settings.timer_progress_class)); + timer_container.addClass(settings.timer_paused_class); + container.append(timer_container); + } + + if (settings.slide_number) { + number_container = $('
').addClass(settings.slide_number_class); + number_container.append(' ' + settings.slide_number_text + ' '); + container.append(number_container); + } + + if (settings.bullets) { + bullets_container = $('
    ').addClass(settings.bullets_container_class); + container.append(bullets_container); + bullets_container.wrap('
    '); + self.slides().each(function (idx, el) { + var bullet = $('
  1. ').attr('data-orbit-slide', idx).on('click', self.link_bullet);; + bullets_container.append(bullet); + }); + } + + }; + + self._goto = function (next_idx, start_timer) { + // if (locked) {return false;} + if (next_idx === idx) {return false;} + if (typeof timer === 'object') {timer.restart();} + var slides = self.slides(); + + var dir = 'next'; + locked = true; + if (next_idx < idx) {dir = 'prev';} + if (next_idx >= slides.length) { + if (!settings.circular) { + return false; + } + next_idx = 0; + } else if (next_idx < 0) { + if (!settings.circular) { + return false; + } + next_idx = slides.length - 1; + } + + var current = $(slides.get(idx)); + var next = $(slides.get(next_idx)); + + current.css('zIndex', 2); + current.removeClass(settings.active_slide_class); + next.css('zIndex', 4).addClass(settings.active_slide_class); + + slides_container.trigger('before-slide-change.fndtn.orbit'); + settings.before_slide_change(); + self.update_active_link(next_idx); + + var callback = function () { + var unlock = function () { + idx = next_idx; + locked = false; + if (start_timer === true) {timer = self.create_timer(); timer.start();} + self.update_slide_number(idx); + slides_container.trigger('after-slide-change.fndtn.orbit', [{slide_number : idx, total_slides : slides.length}]); + settings.after_slide_change(idx, slides.length); + }; + if (slides_container.outerHeight() != next.outerHeight() && settings.variable_height) { + slides_container.animate({'height': next.outerHeight()}, 250, 'linear', unlock); + } else { + unlock(); + } + }; + + if (slides.length === 1) {callback(); return false;} + + var start_animation = function () { + if (dir === 'next') {animate.next(current, next, callback);} + if (dir === 'prev') {animate.prev(current, next, callback);} + }; + + if (next.outerHeight() > slides_container.outerHeight() && settings.variable_height) { + slides_container.animate({'height': next.outerHeight()}, 250, 'linear', start_animation); + } else { + start_animation(); + } + }; + + self.next = function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + self._goto(idx + 1); + }; + + self.prev = function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + self._goto(idx - 1); + }; + + self.link_custom = function (e) { + e.preventDefault(); + var link = $(this).attr('data-orbit-link'); + if ((typeof link === 'string') && (link = $.trim(link)) != '') { + var slide = container.find('[data-orbit-slide=' + link + ']'); + if (slide.index() != -1) {self._goto(slide.index());} + } + }; + + self.link_bullet = function (e) { + var index = $(this).attr('data-orbit-slide'); + if ((typeof index === 'string') && (index = $.trim(index)) != '') { + if (isNaN(parseInt(index))) { + var slide = container.find('[data-orbit-slide=' + index + ']'); + if (slide.index() != -1) {self._goto(slide.index() + 1);} + } else { + self._goto(parseInt(index)); + } + } + + } + + self.timer_callback = function () { + self._goto(idx + 1, true); + } + + self.compute_dimensions = function () { + var current = $(self.slides().get(idx)); + var h = current.outerHeight(); + if (!settings.variable_height) { + self.slides().each(function(){ + if ($(this).outerHeight() > h) { h = $(this).outerHeight(); } + }); + } + slides_container.height(h); + }; + + self.create_timer = function () { + var t = new Timer( + container.find('.' + settings.timer_container_class), + settings, + self.timer_callback + ); + return t; + }; + + self.stop_timer = function () { + if (typeof timer === 'object') { + timer.stop(); + } + }; + + self.toggle_timer = function () { + var t = container.find('.' + settings.timer_container_class); + if (t.hasClass(settings.timer_paused_class)) { + if (typeof timer === 'undefined') {timer = self.create_timer();} + timer.start(); + } else { + if (typeof timer === 'object') {timer.stop();} + } + }; + + self.init = function () { + self.build_markup(); + if (settings.timer) { + timer = self.create_timer(); + Foundation.utils.image_loaded(this.slides().children('img'), timer.start); + } + animate = new FadeAnimation(settings, slides_container); + if (settings.animation === 'slide') { + animate = new SlideAnimation(settings, slides_container); + } + + container.on('click', '.' + settings.next_class, self.next); + container.on('click', '.' + settings.prev_class, self.prev); + + if (settings.next_on_click) { + container.on('click', '.' + settings.slides_container_class + ' [data-orbit-slide]', self.link_bullet); + } + + container.on('click', self.toggle_timer); + if (settings.swipe) { + container.on('touchstart.fndtn.orbit', function (e) { + if (!e.touches) {e = e.originalEvent;} + var data = { + start_page_x : e.touches[0].pageX, + start_page_y : e.touches[0].pageY, + start_time : (new Date()).getTime(), + delta_x : 0, + is_scrolling : undefined + }; + container.data('swipe-transition', data); + e.stopPropagation(); + }) + .on('touchmove.fndtn.orbit', function (e) { + if (!e.touches) { + e = e.originalEvent; + } + // Ignore pinch/zoom events + if (e.touches.length > 1 || e.scale && e.scale !== 1) { + return; + } + + var data = container.data('swipe-transition'); + if (typeof data === 'undefined') {data = {};} + + data.delta_x = e.touches[0].pageX - data.start_page_x; + + if ( typeof data.is_scrolling === 'undefined') { + data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) ); + } + + if (!data.is_scrolling && !data.active) { + e.preventDefault(); + var direction = (data.delta_x < 0) ? (idx + 1) : (idx - 1); + data.active = true; + self._goto(direction); + } + }) + .on('touchend.fndtn.orbit', function (e) { + container.data('swipe-transition', {}); + e.stopPropagation(); + }) + } + container.on('mouseenter.fndtn.orbit', function (e) { + if (settings.timer && settings.pause_on_hover) { + self.stop_timer(); + } + }) + .on('mouseleave.fndtn.orbit', function (e) { + if (settings.timer && settings.resume_on_mouseout) { + timer.start(); + } + }); + + $(document).on('click', '[data-orbit-link]', self.link_custom); + $(window).on('load resize', self.compute_dimensions); + Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions); + Foundation.utils.image_loaded(this.slides().children('img'), function () { + container.prev('.' + settings.preloader_class).css('display', 'none'); + self.update_slide_number(0); + self.update_active_link(0); + slides_container.trigger('ready.fndtn.orbit'); + }); + }; + + self.init(); + }; + + var Timer = function (el, settings, callback) { + var self = this, + duration = settings.timer_speed, + progress = el.find('.' + settings.timer_progress_class), + start, + timeout, + left = -1; + + this.update_progress = function (w) { + var new_progress = progress.clone(); + new_progress.attr('style', ''); + new_progress.css('width', w + '%'); + progress.replaceWith(new_progress); + progress = new_progress; + }; + + this.restart = function () { + clearTimeout(timeout); + el.addClass(settings.timer_paused_class); + left = -1; + self.update_progress(0); + }; + + this.start = function () { + if (!el.hasClass(settings.timer_paused_class)) {return true;} + left = (left === -1) ? duration : left; + el.removeClass(settings.timer_paused_class); + start = new Date().getTime(); + progress.animate({'width' : '100%'}, left, 'linear'); + timeout = setTimeout(function () { + self.restart(); + callback(); + }, left); + el.trigger('timer-started.fndtn.orbit') + }; + + this.stop = function () { + if (el.hasClass(settings.timer_paused_class)) {return true;} + clearTimeout(timeout); + el.addClass(settings.timer_paused_class); + var end = new Date().getTime(); + left = left - (end - start); + var w = 100 - ((left / duration) * 100); + self.update_progress(w); + el.trigger('timer-stopped.fndtn.orbit'); + }; + }; + + var SlideAnimation = function (settings, container) { + var duration = settings.animation_speed; + var is_rtl = ($('html[dir=rtl]').length === 1); + var margin = is_rtl ? 'marginRight' : 'marginLeft'; + var animMargin = {}; + animMargin[margin] = '0%'; + + this.next = function (current, next, callback) { + current.animate({marginLeft : '-100%'}, duration); + next.animate(animMargin, duration, function () { + current.css(margin, '100%'); + callback(); + }); + }; + + this.prev = function (current, prev, callback) { + current.animate({marginLeft : '100%'}, duration); + prev.css(margin, '-100%'); + prev.animate(animMargin, duration, function () { + current.css(margin, '100%'); + callback(); + }); + }; + }; + + var FadeAnimation = function (settings, container) { + var duration = settings.animation_speed; + var is_rtl = ($('html[dir=rtl]').length === 1); + var margin = is_rtl ? 'marginRight' : 'marginLeft'; + + this.next = function (current, next, callback) { + next.css({'margin' : '0%', 'opacity' : '0.01'}); + next.animate({'opacity' :'1'}, duration, 'linear', function () { + current.css('margin', '100%'); + callback(); + }); + }; + + this.prev = function (current, prev, callback) { + prev.css({'margin' : '0%', 'opacity' : '0.01'}); + prev.animate({'opacity' : '1'}, duration, 'linear', function () { + current.css('margin', '100%'); + callback(); + }); + }; + }; + + Foundation.libs = Foundation.libs || {}; + + Foundation.libs.orbit = { + name : 'orbit', + + version : '5.5.1', + + settings : { + animation : 'slide', + timer_speed : 10000, + pause_on_hover : true, + resume_on_mouseout : false, + next_on_click : true, + animation_speed : 500, + stack_on_small : false, + navigation_arrows : true, + slide_number : true, + slide_number_text : 'of', + container_class : 'orbit-container', + stack_on_small_class : 'orbit-stack-on-small', + next_class : 'orbit-next', + prev_class : 'orbit-prev', + timer_container_class : 'orbit-timer', + timer_paused_class : 'paused', + timer_progress_class : 'orbit-progress', + slides_container_class : 'orbit-slides-container', + preloader_class : 'preloader', + slide_selector : '*', + bullets_container_class : 'orbit-bullets', + bullets_active_class : 'active', + slide_number_class : 'orbit-slide-number', + caption_class : 'orbit-caption', + active_slide_class : 'active', + orbit_transition_class : 'orbit-transitioning', + bullets : true, + circular : true, + timer : true, + variable_height : false, + swipe : true, + before_slide_change : noop, + after_slide_change : noop + }, + + init : function (scope, method, options) { + var self = this; + this.bindings(method, options); + }, + + events : function (instance) { + var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init')); + this.S(instance).data(this.name + '-instance', orbit_instance); + }, + + reflow : function () { + var self = this; + + if (self.S(self.scope).is('[data-orbit]')) { + var $el = self.S(self.scope); + var instance = $el.data(self.name + '-instance'); + instance.compute_dimensions(); + } else { + self.S('[data-orbit]', self.scope).each(function (idx, el) { + var $el = self.S(el); + var opts = self.data_options($el); + var instance = $el.data(self.name + '-instance'); + instance.compute_dimensions(); + }); + } + } + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.offcanvas = { + name : 'offcanvas', + + version : '5.5.1', + + settings : { + open_method : 'move', + close_on_click : false + }, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function () { + var self = this, + S = self.S, + move_class = '', + right_postfix = '', + left_postfix = ''; + + if (this.settings.open_method === 'move') { + move_class = 'move-'; + right_postfix = 'right'; + left_postfix = 'left'; + } else if (this.settings.open_method === 'overlap_single') { + move_class = 'offcanvas-overlap-'; + right_postfix = 'right'; + left_postfix = 'left'; + } else if (this.settings.open_method === 'overlap') { + move_class = 'offcanvas-overlap'; + } + + S(this.scope).off('.offcanvas') + .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) { + self.click_toggle_class(e, move_class + right_postfix); + if (self.settings.open_method !== 'overlap') { + S('.left-submenu').removeClass(move_class + right_postfix); + } + $('.left-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) { + var settings = self.get_settings(e); + var parent = S(this).parent(); + + if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { + self.hide.call(self, move_class + right_postfix, self.get_wrapper(e)); + parent.parent().removeClass(move_class + right_postfix); + } else if (S(this).parent().hasClass('has-submenu')) { + e.preventDefault(); + S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix); + } else if (parent.hasClass('back')) { + e.preventDefault(); + parent.parent().removeClass(move_class + right_postfix); + } + $('.left-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) { + self.click_toggle_class(e, move_class + left_postfix); + if (self.settings.open_method !== 'overlap') { + S('.right-submenu').removeClass(move_class + left_postfix); + } + $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) { + var settings = self.get_settings(e); + var parent = S(this).parent(); + + if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { + self.hide.call(self, move_class + left_postfix, self.get_wrapper(e)); + parent.parent().removeClass(move_class + left_postfix); + } else if (S(this).parent().hasClass('has-submenu')) { + e.preventDefault(); + S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix); + } else if (parent.hasClass('back')) { + e.preventDefault(); + parent.parent().removeClass(move_class + left_postfix); + } + $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { + self.click_remove_class(e, move_class + left_postfix); + S('.right-submenu').removeClass(move_class + left_postfix); + if (right_postfix) { + self.click_remove_class(e, move_class + right_postfix); + S('.left-submenu').removeClass(move_class + left_postfix); + } + $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { + self.click_remove_class(e, move_class + left_postfix); + $('.left-off-canvas-toggle').attr('aria-expanded', 'false'); + if (right_postfix) { + self.click_remove_class(e, move_class + right_postfix); + $('.right-off-canvas-toggle').attr('aria-expanded', 'false'); + } + }); + }, + + toggle : function (class_name, $off_canvas) { + $off_canvas = $off_canvas || this.get_wrapper(); + if ($off_canvas.is('.' + class_name)) { + this.hide(class_name, $off_canvas); + } else { + this.show(class_name, $off_canvas); + } + }, + + show : function (class_name, $off_canvas) { + $off_canvas = $off_canvas || this.get_wrapper(); + $off_canvas.trigger('open').trigger('open.fndtn.offcanvas'); + $off_canvas.addClass(class_name); + }, + + hide : function (class_name, $off_canvas) { + $off_canvas = $off_canvas || this.get_wrapper(); + $off_canvas.trigger('close').trigger('close.fndtn.offcanvas'); + $off_canvas.removeClass(class_name); + }, + + click_toggle_class : function (e, class_name) { + e.preventDefault(); + var $off_canvas = this.get_wrapper(e); + this.toggle(class_name, $off_canvas); + }, + + click_remove_class : function (e, class_name) { + e.preventDefault(); + var $off_canvas = this.get_wrapper(e); + this.hide(class_name, $off_canvas); + }, + + get_settings : function (e) { + var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']'); + return offcanvas.data(this.attr_name(true) + '-init') || this.settings; + }, + + get_wrapper : function (e) { + var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap'); + + if ($off_canvas.length === 0) { + $off_canvas = this.S('.off-canvas-wrap'); + } + return $off_canvas; + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.alert = { + name : 'alert', + + version : '5.5.1', + + settings : { + callback : function () {} + }, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function () { + var self = this, + S = this.S; + + $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) { + var alertBox = S(this).closest('[' + self.attr_name() + ']'), + settings = alertBox.data(self.attr_name(true) + '-init') || self.settings; + + e.preventDefault(); + if (Modernizr.csstransitions) { + alertBox.addClass('alert-close'); + alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) { + S(this).trigger('close').trigger('close.fndtn.alert').remove(); + settings.callback(); + }); + } else { + alertBox.fadeOut(300, function () { + S(this).trigger('close').trigger('close.fndtn.alert').remove(); + settings.callback(); + }); + } + }); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.reveal = { + name : 'reveal', + + version : '5.5.1', + + locked : false, + + settings : { + animation : 'fadeAndPop', + animation_speed : 250, + close_on_background_click : true, + close_on_esc : true, + dismiss_modal_class : 'close-reveal-modal', + multiple_opened : false, + bg_class : 'reveal-modal-bg', + root_element : 'body', + open : function(){}, + opened : function(){}, + close : function(){}, + closed : function(){}, + bg : $('.reveal-modal-bg'), + css : { + open : { + 'opacity' : 0, + 'visibility' : 'visible', + 'display' : 'block' + }, + close : { + 'opacity' : 1, + 'visibility' : 'hidden', + 'display' : 'none' + } + } + }, + + init : function (scope, method, options) { + $.extend(true, this.settings, method, options); + this.bindings(method, options); + }, + + events : function (scope) { + var self = this, + S = self.S; + + S(this.scope) + .off('.reveal') + .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) { + e.preventDefault(); + + if (!self.locked) { + var element = S(this), + ajax = element.data(self.data_attr('reveal-ajax')); + + self.locked = true; + + if (typeof ajax === 'undefined') { + self.open.call(self, element); + } else { + var url = ajax === true ? element.attr('href') : ajax; + + self.open.call(self, element, {url : url}); + } + } + }); + + S(document) + .on('click.fndtn.reveal', this.close_targets(), function (e) { + e.preventDefault(); + if (!self.locked) { + var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings, + bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0]; + + if (bg_clicked) { + if (settings.close_on_background_click) { + e.stopPropagation(); + } else { + return; + } + } + + self.locked = true; + self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open') : S(this).closest('[' + self.attr_name() + ']')); + } + }); + + if (S('[' + self.attr_name() + ']', this.scope).length > 0) { + S(this.scope) + // .off('.reveal') + .on('open.fndtn.reveal', this.settings.open) + .on('opened.fndtn.reveal', this.settings.opened) + .on('opened.fndtn.reveal', this.open_video) + .on('close.fndtn.reveal', this.settings.close) + .on('closed.fndtn.reveal', this.settings.closed) + .on('closed.fndtn.reveal', this.close_video); + } else { + S(this.scope) + // .off('.reveal') + .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open) + .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened) + .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video) + .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close) + .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed) + .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video); + } + + return true; + }, + + // PATCH #3: turning on key up capture only when a reveal window is open + key_up_on : function (scope) { + var self = this; + + // PATCH #1: fixing multiple keyup event trigger from single key press + self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) { + var open_modal = self.S('[' + self.attr_name() + '].open'), + settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ; + // PATCH #2: making sure that the close event can be called only while unlocked, + // so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window. + if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key + self.close.call(self, open_modal); + } + }); + + return true; + }, + + // PATCH #3: turning on key up capture only when a reveal window is open + key_up_off : function (scope) { + this.S('body').off('keyup.fndtn.reveal'); + return true; + }, + + open : function (target, ajax_settings) { + var self = this, + modal; + + if (target) { + if (typeof target.selector !== 'undefined') { + // Find the named node; only use the first one found, since the rest of the code assumes there's only one node + modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first(); + } else { + modal = self.S(this.scope); + + ajax_settings = target; + } + } else { + modal = self.S(this.scope); + } + + var settings = modal.data(self.attr_name(true) + '-init'); + settings = settings || this.settings; + + if (modal.hasClass('open') && target.attr('data-reveal-id') == modal.attr('id')) { + return self.close(modal); + } + + if (!modal.hasClass('open')) { + var open_modal = self.S('[' + self.attr_name() + '].open'); + + if (typeof modal.data('css-top') === 'undefined') { + modal.data('css-top', parseInt(modal.css('top'), 10)) + .data('offset', this.cache_offset(modal)); + } + + this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open + + modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal'); + + if (open_modal.length < 1) { + this.toggle_bg(modal, true); + } + + if (typeof ajax_settings === 'string') { + ajax_settings = { + url : ajax_settings + }; + } + + if (typeof ajax_settings === 'undefined' || !ajax_settings.url) { + if (open_modal.length > 0) { + if (settings.multiple_opened) { + this.to_back(open_modal); + } else { + this.hide(open_modal, settings.css.close); + } + } + + this.show(modal, settings.css.open); + } else { + var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null; + + $.extend(ajax_settings, { + success : function (data, textStatus, jqXHR) { + if ( $.isFunction(old_success) ) { + var result = old_success(data, textStatus, jqXHR); + if (typeof result == 'string') { + data = result; + } + } + + modal.html(data); + self.S(modal).foundation('section', 'reflow'); + self.S(modal).children().foundation(); + + if (open_modal.length > 0) { + if (settings.multiple_opened) { + this.to_back(open_modal); + } else { + this.hide(open_modal, settings.css.close); + } + } + self.show(modal, settings.css.open); + } + }); + + $.ajax(ajax_settings); + } + } + self.S(window).trigger('resize'); + }, + + close : function (modal) { + var modal = modal && modal.length ? modal : this.S(this.scope), + open_modals = this.S('[' + this.attr_name() + '].open'), + settings = modal.data(this.attr_name(true) + '-init') || this.settings; + + if (open_modals.length > 0) { + this.locked = true; + this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open + modal.trigger('close').trigger('close.fndtn.reveal'); + + if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) { + this.toggle_bg(modal, false); + this.to_front(modal); + } + + if (settings.multiple_opened) { + this.hide(modal, settings.css.close, settings); + this.to_front($($.makeArray(open_modals).reverse()[1])); + } else { + this.hide(open_modals, settings.css.close, settings); + } + } + }, + + close_targets : function () { + var base = '.' + this.settings.dismiss_modal_class; + + if (this.settings.close_on_background_click) { + return base + ', .' + this.settings.bg_class; + } + + return base; + }, + + toggle_bg : function (modal, state) { + if (this.S('.' + this.settings.bg_class).length === 0) { + this.settings.bg = $('
    ', {'class': this.settings.bg_class}) + .appendTo('body').hide(); + } + + var visible = this.settings.bg.filter(':visible').length > 0; + if ( state != visible ) { + if ( state == undefined ? visible : !state ) { + this.hide(this.settings.bg); + } else { + this.show(this.settings.bg); + } + } + }, + + show : function (el, css) { + // is modal + if (css) { + var settings = el.data(this.attr_name(true) + '-init') || this.settings, + root_element = settings.root_element; + + if (el.parent(root_element).length === 0) { + var placeholder = el.wrap('
    ').parent(); + + el.on('closed.fndtn.reveal.wrapped', function () { + el.detach().appendTo(placeholder); + el.unwrap().unbind('closed.fndtn.reveal.wrapped'); + }); + + el.detach().appendTo(root_element); + } + + var animData = getAnimationData(settings.animation); + if (!animData.animate) { + this.locked = false; + } + if (animData.pop) { + css.top = $(window).scrollTop() - el.data('offset') + 'px'; + var end_css = { + top: $(window).scrollTop() + el.data('css-top') + 'px', + opacity: 1 + }; + + return setTimeout(function () { + return el + .css(css) + .animate(end_css, settings.animation_speed, 'linear', function () { + this.locked = false; + el.trigger('opened').trigger('opened.fndtn.reveal'); + }.bind(this)) + .addClass('open'); + }.bind(this), settings.animation_speed / 2); + } + + if (animData.fade) { + css.top = $(window).scrollTop() + el.data('css-top') + 'px'; + var end_css = {opacity: 1}; + + return setTimeout(function () { + return el + .css(css) + .animate(end_css, settings.animation_speed, 'linear', function () { + this.locked = false; + el.trigger('opened').trigger('opened.fndtn.reveal'); + }.bind(this)) + .addClass('open'); + }.bind(this), settings.animation_speed / 2); + } + + return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened').trigger('opened.fndtn.reveal'); + } + + var settings = this.settings; + + // should we animate the background? + if (getAnimationData(settings.animation).fade) { + return el.fadeIn(settings.animation_speed / 2); + } + + this.locked = false; + + return el.show(); + }, + + to_back : function(el) { + el.addClass('toback'); + }, + + to_front : function(el) { + el.removeClass('toback'); + }, + + hide : function (el, css) { + // is modal + if (css) { + var settings = el.data(this.attr_name(true) + '-init'); + settings = settings || this.settings; + + var animData = getAnimationData(settings.animation); + if (!animData.animate) { + this.locked = false; + } + if (animData.pop) { + var end_css = { + top: - $(window).scrollTop() - el.data('offset') + 'px', + opacity: 0 + }; + + return setTimeout(function () { + return el + .animate(end_css, settings.animation_speed, 'linear', function () { + this.locked = false; + el.css(css).trigger('closed').trigger('closed.fndtn.reveal'); + }.bind(this)) + .removeClass('open'); + }.bind(this), settings.animation_speed / 2); + } + + if (animData.fade) { + var end_css = {opacity : 0}; + + return setTimeout(function () { + return el + .animate(end_css, settings.animation_speed, 'linear', function () { + this.locked = false; + el.css(css).trigger('closed').trigger('closed.fndtn.reveal'); + }.bind(this)) + .removeClass('open'); + }.bind(this), settings.animation_speed / 2); + } + + return el.hide().css(css).removeClass('open').trigger('closed').trigger('closed.fndtn.reveal'); + } + + var settings = this.settings; + + // should we animate the background? + if (getAnimationData(settings.animation).fade) { + return el.fadeOut(settings.animation_speed / 2); + } + + return el.hide(); + }, + + close_video : function (e) { + var video = $('.flex-video', e.target), + iframe = $('iframe', video); + + if (iframe.length > 0) { + iframe.attr('data-src', iframe[0].src); + iframe.attr('src', iframe.attr('src')); + video.hide(); + } + }, + + open_video : function (e) { + var video = $('.flex-video', e.target), + iframe = video.find('iframe'); + + if (iframe.length > 0) { + var data_src = iframe.attr('data-src'); + if (typeof data_src === 'string') { + iframe[0].src = iframe.attr('data-src'); + } else { + var src = iframe[0].src; + iframe[0].src = undefined; + iframe[0].src = src; + } + video.show(); + } + }, + + data_attr : function (str) { + if (this.namespace.length > 0) { + return this.namespace + '-' + str; + } + + return str; + }, + + cache_offset : function (modal) { + var offset = modal.show().height() + parseInt(modal.css('top'), 10); + + modal.hide(); + + return offset; + }, + + off : function () { + $(this.scope).off('.fndtn.reveal'); + }, + + reflow : function () {} + }; + + /* + * getAnimationData('popAndFade') // {animate: true, pop: true, fade: true} + * getAnimationData('fade') // {animate: true, pop: false, fade: true} + * getAnimationData('pop') // {animate: true, pop: true, fade: false} + * getAnimationData('foo') // {animate: false, pop: false, fade: false} + * getAnimationData(null) // {animate: false, pop: false, fade: false} + */ + function getAnimationData(str) { + var fade = /fade/i.test(str); + var pop = /pop/i.test(str); + return { + animate : fade || pop, + pop : pop, + fade : fade + }; + } +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.interchange = { + name : 'interchange', + + version : '5.5.1', + + cache : {}, + + images_loaded : false, + nodes_loaded : false, + + settings : { + load_attr : 'interchange', + + named_queries : { + 'default' : 'only screen', + 'small' : Foundation.media_queries['small'], + 'small-only' : Foundation.media_queries['small-only'], + 'medium' : Foundation.media_queries['medium'], + 'medium-only' : Foundation.media_queries['medium-only'], + 'large' : Foundation.media_queries['large'], + 'large-only' : Foundation.media_queries['large-only'], + 'xlarge' : Foundation.media_queries['xlarge'], + 'xlarge-only' : Foundation.media_queries['xlarge-only'], + 'xxlarge' : Foundation.media_queries['xxlarge'], + 'landscape' : 'only screen and (orientation: landscape)', + 'portrait' : 'only screen and (orientation: portrait)', + 'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' + + 'only screen and (min--moz-device-pixel-ratio: 2),' + + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + + 'only screen and (min-device-pixel-ratio: 2),' + + 'only screen and (min-resolution: 192dpi),' + + 'only screen and (min-resolution: 2dppx)' + }, + + directives : { + replace : function (el, path, trigger) { + // The trigger argument, if called within the directive, fires + // an event named after the directive on the element, passing + // any parameters along to the event that you pass to trigger. + // + // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c) + // + // This allows you to bind a callback like so: + // $('#interchangeContainer').on('replace', function (e, a, b, c) { + // console.log($(this).html(), a, b, c); + // }); + + if (/IMG/.test(el[0].nodeName)) { + var orig_path = el[0].src; + + if (new RegExp(path, 'i').test(orig_path)) { + return; + } + + el[0].src = path; + + return trigger(el[0].src); + } + var last_path = el.data(this.data_attr + '-last-path'), + self = this; + + if (last_path == path) { + return; + } + + if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) { + $(el).css('background-image', 'url(' + path + ')'); + el.data('interchange-last-path', path); + return trigger(path); + } + + return $.get(path, function (response) { + el.html(response); + el.data(self.data_attr + '-last-path', path); + trigger(); + }); + + } + } + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle random_str'); + + this.data_attr = this.set_data_attr(); + $.extend(true, this.settings, method, options); + this.bindings(method, options); + this.load('images'); + this.load('nodes'); + }, + + get_media_hash : function () { + var mediaHash = ''; + for (var queryName in this.settings.named_queries ) { + mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString(); + } + return mediaHash; + }, + + events : function () { + var self = this, prevMediaHash; + + $(window) + .off('.interchange') + .on('resize.fndtn.interchange', self.throttle(function () { + var currMediaHash = self.get_media_hash(); + if (currMediaHash !== prevMediaHash) { + self.resize(); + } + prevMediaHash = currMediaHash; + }, 50)); + + return this; + }, + + resize : function () { + var cache = this.cache; + + if (!this.images_loaded || !this.nodes_loaded) { + setTimeout($.proxy(this.resize, this), 50); + return; + } + + for (var uuid in cache) { + if (cache.hasOwnProperty(uuid)) { + var passed = this.results(uuid, cache[uuid]); + + if (passed) { + this.settings.directives[passed + .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) { + if (arguments[0] instanceof Array) { + var args = arguments[0]; + } else { + var args = Array.prototype.slice.call(arguments, 0); + } + + return function() { + passed.el.trigger(passed.scenario[1], args); + } + }(passed))); + } + } + } + + }, + + results : function (uuid, scenarios) { + var count = scenarios.length; + + if (count > 0) { + var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]'); + + while (count--) { + var mq, rule = scenarios[count][2]; + if (this.settings.named_queries.hasOwnProperty(rule)) { + mq = matchMedia(this.settings.named_queries[rule]); + } else { + mq = matchMedia(rule); + } + if (mq.matches) { + return {el : el, scenario : scenarios[count]}; + } + } + } + + return false; + }, + + load : function (type, force_update) { + if (typeof this['cached_' + type] === 'undefined' || force_update) { + this['update_' + type](); + } + + return this['cached_' + type]; + }, + + update_images : function () { + var images = this.S('img[' + this.data_attr + ']'), + count = images.length, + i = count, + loaded_count = 0, + data_attr = this.data_attr; + + this.cache = {}; + this.cached_images = []; + this.images_loaded = (count === 0); + + while (i--) { + loaded_count++; + if (images[i]) { + var str = images[i].getAttribute(data_attr) || ''; + + if (str.length > 0) { + this.cached_images.push(images[i]); + } + } + + if (loaded_count === count) { + this.images_loaded = true; + this.enhance('images'); + } + } + + return this; + }, + + update_nodes : function () { + var nodes = this.S('[' + this.data_attr + ']').not('img'), + count = nodes.length, + i = count, + loaded_count = 0, + data_attr = this.data_attr; + + this.cached_nodes = []; + this.nodes_loaded = (count === 0); + + while (i--) { + loaded_count++; + var str = nodes[i].getAttribute(data_attr) || ''; + + if (str.length > 0) { + this.cached_nodes.push(nodes[i]); + } + + if (loaded_count === count) { + this.nodes_loaded = true; + this.enhance('nodes'); + } + } + + return this; + }, + + enhance : function (type) { + var i = this['cached_' + type].length; + + while (i--) { + this.object($(this['cached_' + type][i])); + } + + return $(window).trigger('resize').trigger('resize.fndtn.interchange'); + }, + + convert_directive : function (directive) { + + var trimmed = this.trim(directive); + + if (trimmed.length > 0) { + return trimmed; + } + + return 'replace'; + }, + + parse_scenario : function (scenario) { + // This logic had to be made more complex since some users were using commas in the url path + // So we cannot simply just split on a comma + var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/), + media_query = scenario[1]; + + if (directive_match) { + var path = directive_match[1], + directive = directive_match[2]; + } else { + var cached_split = scenario[0].split(/,\s*$/), + path = cached_split[0], + directive = ''; + } + + return [this.trim(path), this.convert_directive(directive), this.trim(media_query)]; + }, + + object : function (el) { + var raw_arr = this.parse_data_attr(el), + scenarios = [], + i = raw_arr.length; + + if (i > 0) { + while (i--) { + var split = raw_arr[i].split(/\(([^\)]*?)(\))$/); + + if (split.length > 1) { + var params = this.parse_scenario(split); + scenarios.push(params); + } + } + } + + return this.store(el, scenarios); + }, + + store : function (el, scenarios) { + var uuid = this.random_str(), + current_uuid = el.data(this.add_namespace('uuid', true)); + + if (this.cache[current_uuid]) { + return this.cache[current_uuid]; + } + + el.attr(this.add_namespace('data-uuid'), uuid); + + return this.cache[uuid] = scenarios; + }, + + trim : function (str) { + + if (typeof str === 'string') { + return $.trim(str); + } + + return str; + }, + + set_data_attr : function (init) { + if (init) { + if (this.namespace.length > 0) { + return this.namespace + '-' + this.settings.load_attr; + } + + return this.settings.load_attr; + } + + if (this.namespace.length > 0) { + return 'data-' + this.namespace + '-' + this.settings.load_attr; + } + + return 'data-' + this.settings.load_attr; + }, + + parse_data_attr : function (el) { + var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/), + i = raw.length, + output = []; + + while (i--) { + if (raw[i].replace(/[\W\d]+/, '').length > 4) { + output.push(raw[i]); + } + } + + return output; + }, + + reflow : function () { + this.load('images', true); + this.load('nodes', true); + } + + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs['magellan-expedition'] = { + name : 'magellan-expedition', + + version : '5.5.1', + + settings : { + active_class : 'active', + threshold : 0, // pixels from the top of the expedition for it to become fixes + destination_threshold : 20, // pixels from the top of destination for it to be considered active + throttle_delay : 30, // calculation throttling to increase framerate + fixed_top : 0, // top distance in pixels assigend to the fixed element on scroll + offset_by_height : true, // whether to offset the destination by the expedition height. Usually you want this to be true, unless your expedition is on the side. + duration : 700, // animation duration time + easing : 'swing' // animation easing + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle'); + this.bindings(method, options); + }, + + events : function () { + var self = this, + S = self.S, + settings = self.settings; + + // initialize expedition offset + self.set_expedition_position(); + + S(self.scope) + .off('.magellan') + .on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href^="#"]', function (e) { + e.preventDefault(); + var expedition = $(this).closest('[' + self.attr_name() + ']'), + settings = expedition.data('magellan-expedition-init'), + hash = this.hash.split('#').join(''), + target = $('a[name="' + hash + '"]'); + + if (target.length === 0) { + target = $('#' + hash); + + } + + // Account for expedition height if fixed position + var scroll_top = target.offset().top - settings.destination_threshold + 1; + if (settings.offset_by_height) { + scroll_top = scroll_top - expedition.outerHeight(); + } + + $('html, body').stop().animate({ + 'scrollTop' : scroll_top + }, settings.duration, settings.easing, function () { + if (history.pushState) { + history.pushState(null, null, '#' + hash); + } else { + location.hash = '#' + hash; + } + }); + }) + .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay)); + + $(window) + .on('resize.fndtn.magellan', self.throttle(this.set_expedition_position.bind(this), settings.throttle_delay)); + }, + + check_for_arrivals : function () { + var self = this; + self.update_arrivals(); + self.update_expedition_positions(); + }, + + set_expedition_position : function () { + var self = this; + $('[' + this.attr_name() + '=fixed]', self.scope).each(function (idx, el) { + var expedition = $(this), + settings = expedition.data('magellan-expedition-init'), + styles = expedition.attr('styles'), // save styles + top_offset, fixed_top; + + expedition.attr('style', ''); + top_offset = expedition.offset().top + settings.threshold; + + //set fixed-top by attribute + fixed_top = parseInt(expedition.data('magellan-fixed-top')); + if (!isNaN(fixed_top)) { + self.settings.fixed_top = fixed_top; + } + + expedition.data(self.data_attr('magellan-top-offset'), top_offset); + expedition.attr('style', styles); + }); + }, + + update_expedition_positions : function () { + var self = this, + window_top_offset = $(window).scrollTop(); + + $('[' + this.attr_name() + '=fixed]', self.scope).each(function () { + var expedition = $(this), + settings = expedition.data('magellan-expedition-init'), + styles = expedition.attr('style'), // save styles + top_offset = expedition.data('magellan-top-offset'); + + //scroll to the top distance + if (window_top_offset + self.settings.fixed_top >= top_offset) { + // Placeholder allows height calculations to be consistent even when + // appearing to switch between fixed/non-fixed placement + var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']'); + if (placeholder.length === 0) { + placeholder = expedition.clone(); + placeholder.removeAttr(self.attr_name()); + placeholder.attr(self.add_namespace('data-magellan-expedition-clone'), ''); + expedition.before(placeholder); + } + expedition.css({position :'fixed', top : settings.fixed_top}).addClass('fixed'); + } else { + expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove(); + expedition.attr('style', styles).css('position', '').css('top', '').removeClass('fixed'); + } + }); + }, + + update_arrivals : function () { + var self = this, + window_top_offset = $(window).scrollTop(); + + $('[' + this.attr_name() + ']', self.scope).each(function () { + var expedition = $(this), + settings = expedition.data(self.attr_name(true) + '-init'), + offsets = self.offsets(expedition, window_top_offset), + arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'), + active_item = false; + offsets.each(function (idx, item) { + if (item.viewport_offset >= item.top_offset) { + var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'); + arrivals.not(item.arrival).removeClass(settings.active_class); + item.arrival.addClass(settings.active_class); + active_item = true; + return true; + } + }); + + if (!active_item) { + arrivals.removeClass(settings.active_class); + } + }); + }, + + offsets : function (expedition, window_offset) { + var self = this, + settings = expedition.data(self.attr_name(true) + '-init'), + viewport_offset = window_offset; + + return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function (idx, el) { + var name = $(this).data(self.data_attr('magellan-arrival')), + dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']'); + if (dest.length > 0) { + var top_offset = dest.offset().top - settings.destination_threshold; + if (settings.offset_by_height) { + top_offset = top_offset - expedition.outerHeight(); + } + top_offset = Math.floor(top_offset); + return { + destination : dest, + arrival : $(this), + top_offset : top_offset, + viewport_offset : viewport_offset + } + } + }).sort(function (a, b) { + if (a.top_offset < b.top_offset) { + return -1; + } + if (a.top_offset > b.top_offset) { + return 1; + } + return 0; + }); + }, + + data_attr : function (str) { + if (this.namespace.length > 0) { + return this.namespace + '-' + str; + } + + return str; + }, + + off : function () { + this.S(this.scope).off('.magellan'); + this.S(window).off('.magellan'); + }, + + reflow : function () { + var self = this; + // remove placeholder expeditions used for height calculation purposes + $('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove(); + } + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.accordion = { + name : 'accordion', + + version : '5.5.1', + + settings : { + content_class : 'content', + active_class : 'active', + multi_expand : false, + toggleable : true, + callback : function () {} + }, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function () { + var self = this; + var S = this.S; + S(this.scope) + .off('.fndtn.accordion') + .on('click.fndtn.accordion', '[' + this.attr_name() + '] > .accordion-navigation > a', function (e) { + var accordion = S(this).closest('[' + self.attr_name() + ']'), + groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()), + settings = accordion.data(self.attr_name(true) + '-init') || self.settings, + target = S('#' + this.href.split('#')[1]), + aunts = $('> .accordion-navigation', accordion), + siblings = aunts.children('.' + settings.content_class), + active_content = siblings.filter('.' + settings.active_class); + + e.preventDefault(); + + if (accordion.attr(self.attr_name())) { + siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class); + aunts = aunts.add('[' + groupSelector + '] .accordion-navigation'); + } + + if (settings.toggleable && target.is(active_content)) { + target.parent('.accordion-navigation').toggleClass(settings.active_class, false); + target.toggleClass(settings.active_class, false); + settings.callback(target); + target.triggerHandler('toggled', [accordion]); + accordion.triggerHandler('toggled', [target]); + return; + } + + if (!settings.multi_expand) { + siblings.removeClass(settings.active_class); + aunts.removeClass(settings.active_class); + } + + target.addClass(settings.active_class).parent().addClass(settings.active_class); + settings.callback(target); + target.triggerHandler('toggled', [accordion]); + accordion.triggerHandler('toggled', [target]); + }); + }, + + off : function () {}, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.topbar = { + name : 'topbar', + + version : '5.5.1', + + settings : { + index : 0, + sticky_class : 'sticky', + custom_back_text : true, + back_text : 'Back', + mobile_show_parent_link : true, + is_hover : true, + scrolltop : true, // jump to top when sticky nav menu toggle is clicked + sticky_on : 'all' + }, + + init : function (section, method, options) { + Foundation.inherit(this, 'add_custom_rule register_media throttle'); + var self = this; + + self.register_media('topbar', 'foundation-mq-topbar'); + + this.bindings(method, options); + + self.S('[' + this.attr_name() + ']', this.scope).each(function () { + var topbar = $(this), + settings = topbar.data(self.attr_name(true) + '-init'), + section = self.S('section, .top-bar-section', this); + topbar.data('index', 0); + var topbarContainer = topbar.parent(); + if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) { + self.settings.sticky_class = settings.sticky_class; + self.settings.sticky_topbar = topbar; + topbar.data('height', topbarContainer.outerHeight()); + topbar.data('stickyoffset', topbarContainer.offset().top); + } else { + topbar.data('height', topbar.outerHeight()); + } + + if (!settings.assembled) { + self.assemble(topbar); + } + + if (settings.is_hover) { + self.S('.has-dropdown', topbar).addClass('not-click'); + } else { + self.S('.has-dropdown', topbar).removeClass('not-click'); + } + + // Pad body when sticky (scrolled) or fixed. + self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }'); + + if (topbarContainer.hasClass('fixed')) { + self.S('body').addClass('f-topbar-fixed'); + } + }); + + }, + + is_sticky : function (topbar, topbarContainer, settings) { + var sticky = topbarContainer.hasClass(settings.sticky_class); + var smallMatch = matchMedia(Foundation.media_queries.small).matches; + var medMatch = matchMedia(Foundation.media_queries.medium).matches; + var lrgMatch = matchMedia(Foundation.media_queries.large).matches; + + if (sticky && settings.sticky_on === 'all') { + return true; + } + if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) { + if (smallMatch && !medMatch && !lrgMatch) { return true; } + } + if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) { + if (smallMatch && medMatch && !lrgMatch) { return true; } + } + if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) { + if (smallMatch && medMatch && lrgMatch) { return true; } + } + + // fix for iOS browsers + if (sticky && navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) { + return true; + } + return false; + }, + + toggle : function (toggleEl) { + var self = this, + topbar; + + if (toggleEl) { + topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']'); + } else { + topbar = self.S('[' + this.attr_name() + ']'); + } + + var settings = topbar.data(this.attr_name(true) + '-init'); + + var section = self.S('section, .top-bar-section', topbar); + + if (self.breakpoint()) { + if (!self.rtl) { + section.css({left : '0%'}); + $('>.name', section).css({left : '100%'}); + } else { + section.css({right : '0%'}); + $('>.name', section).css({right : '100%'}); + } + + self.S('li.moved', section).removeClass('moved'); + topbar.data('index', 0); + + topbar + .toggleClass('expanded') + .css('height', ''); + } + + if (settings.scrolltop) { + if (!topbar.hasClass('expanded')) { + if (topbar.hasClass('fixed')) { + topbar.parent().addClass('fixed'); + topbar.removeClass('fixed'); + self.S('body').addClass('f-topbar-fixed'); + } + } else if (topbar.parent().hasClass('fixed')) { + if (settings.scrolltop) { + topbar.parent().removeClass('fixed'); + topbar.addClass('fixed'); + self.S('body').removeClass('f-topbar-fixed'); + + window.scrollTo(0, 0); + } else { + topbar.parent().removeClass('expanded'); + } + } + } else { + if (self.is_sticky(topbar, topbar.parent(), settings)) { + topbar.parent().addClass('fixed'); + } + + if (topbar.parent().hasClass('fixed')) { + if (!topbar.hasClass('expanded')) { + topbar.removeClass('fixed'); + topbar.parent().removeClass('expanded'); + self.update_sticky_positioning(); + } else { + topbar.addClass('fixed'); + topbar.parent().addClass('expanded'); + self.S('body').addClass('f-topbar-fixed'); + } + } + } + }, + + timer : null, + + events : function (bar) { + var self = this, + S = this.S; + + S(this.scope) + .off('.topbar') + .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) { + e.preventDefault(); + self.toggle(this); + }) + .on('click.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) { + var li = $(this).closest('li'); + if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) { + self.toggle(); + } + }) + .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) { + var li = S(this), + target = S(e.target), + topbar = li.closest('[' + self.attr_name() + ']'), + settings = topbar.data(self.attr_name(true) + '-init'); + + if (target.data('revealId')) { + self.toggle(); + return; + } + + if (self.breakpoint()) { + return; + } + + if (settings.is_hover && !Modernizr.touch) { + return; + } + + e.stopImmediatePropagation(); + + if (li.hasClass('hover')) { + li + .removeClass('hover') + .find('li') + .removeClass('hover'); + + li.parents('li.hover') + .removeClass('hover'); + } else { + li.addClass('hover'); + + $(li).siblings().removeClass('hover'); + + if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) { + e.preventDefault(); + } + } + }) + .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) { + if (self.breakpoint()) { + + e.preventDefault(); + + var $this = S(this), + topbar = $this.closest('[' + self.attr_name() + ']'), + section = topbar.find('section, .top-bar-section'), + dropdownHeight = $this.next('.dropdown').outerHeight(), + $selectedLi = $this.closest('li'); + + topbar.data('index', topbar.data('index') + 1); + $selectedLi.addClass('moved'); + + if (!self.rtl) { + section.css({left : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({left : 100 * topbar.data('index') + '%'}); + } else { + section.css({right : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({right : 100 * topbar.data('index') + '%'}); + } + + topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height')); + } + }); + + S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () { + self.resize.call(self); + }, 50)).trigger('resize').trigger('resize.fndtn.topbar').load(function () { + // Ensure that the offset is calculated after all of the pages resources have loaded + S(this).trigger('resize.fndtn.topbar'); + }); + + S('body').off('.topbar').on('click.fndtn.topbar', function (e) { + var parent = S(e.target).closest('li').closest('li.hover'); + + if (parent.length > 0) { + return; + } + + S('[' + self.attr_name() + '] li.hover').removeClass('hover'); + }); + + // Go up a level on Click + S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) { + e.preventDefault(); + + var $this = S(this), + topbar = $this.closest('[' + self.attr_name() + ']'), + section = topbar.find('section, .top-bar-section'), + settings = topbar.data(self.attr_name(true) + '-init'), + $movedLi = $this.closest('li.moved'), + $previousLevelUl = $movedLi.parent(); + + topbar.data('index', topbar.data('index') - 1); + + if (!self.rtl) { + section.css({left : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({left : 100 * topbar.data('index') + '%'}); + } else { + section.css({right : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({right : 100 * topbar.data('index') + '%'}); + } + + if (topbar.data('index') === 0) { + topbar.css('height', ''); + } else { + topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height')); + } + + setTimeout(function () { + $movedLi.removeClass('moved'); + }, 300); + }); + + // Show dropdown menus when their items are focused + S(this.scope).find('.dropdown a') + .focus(function () { + $(this).parents('.has-dropdown').addClass('hover'); + }) + .blur(function () { + $(this).parents('.has-dropdown').removeClass('hover'); + }); + }, + + resize : function () { + var self = this; + self.S('[' + this.attr_name() + ']').each(function () { + var topbar = self.S(this), + settings = topbar.data(self.attr_name(true) + '-init'); + + var stickyContainer = topbar.parent('.' + self.settings.sticky_class); + var stickyOffset; + + if (!self.breakpoint()) { + var doToggle = topbar.hasClass('expanded'); + topbar + .css('height', '') + .removeClass('expanded') + .find('li') + .removeClass('hover'); + + if (doToggle) { + self.toggle(topbar); + } + } + + if (self.is_sticky(topbar, stickyContainer, settings)) { + if (stickyContainer.hasClass('fixed')) { + // Remove the fixed to allow for correct calculation of the offset. + stickyContainer.removeClass('fixed'); + + stickyOffset = stickyContainer.offset().top; + if (self.S(document.body).hasClass('f-topbar-fixed')) { + stickyOffset -= topbar.data('height'); + } + + topbar.data('stickyoffset', stickyOffset); + stickyContainer.addClass('fixed'); + } else { + stickyOffset = stickyContainer.offset().top; + topbar.data('stickyoffset', stickyOffset); + } + } + + }); + }, + + breakpoint : function () { + return !matchMedia(Foundation.media_queries['topbar']).matches; + }, + + small : function () { + return matchMedia(Foundation.media_queries['small']).matches; + }, + + medium : function () { + return matchMedia(Foundation.media_queries['medium']).matches; + }, + + large : function () { + return matchMedia(Foundation.media_queries['large']).matches; + }, + + assemble : function (topbar) { + var self = this, + settings = topbar.data(this.attr_name(true) + '-init'), + section = self.S('section, .top-bar-section', topbar); + + // Pull element out of the DOM for manipulation + section.detach(); + + self.S('.has-dropdown>a', section).each(function () { + var $link = self.S(this), + $dropdown = $link.siblings('.dropdown'), + url = $link.attr('href'), + $titleLi; + + if (!$dropdown.find('.title.back').length) { + + if (settings.mobile_show_parent_link == true && url) { + $titleLi = $('
  2. '); + } else { + $titleLi = $('
  3. '); + } + + // Copy link to subnav + if (settings.custom_back_text == true) { + $('h5>a', $titleLi).html(settings.back_text); + } else { + $('h5>a', $titleLi).html('« ' + $link.html()); + } + $dropdown.prepend($titleLi); + } + }); + + // Put element back in the DOM + section.appendTo(topbar); + + // check for sticky + this.sticky(); + + this.assembled(topbar); + }, + + assembled : function (topbar) { + topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true})); + }, + + height : function (ul) { + var total = 0, + self = this; + + $('> li', ul).each(function () { + total += self.S(this).outerHeight(true); + }); + + return total; + }, + + sticky : function () { + var self = this; + + this.S(window).on('scroll', function () { + self.update_sticky_positioning(); + }); + }, + + update_sticky_positioning : function () { + var klass = '.' + this.settings.sticky_class, + $window = this.S(window), + self = this; + + if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar, this.settings.sticky_topbar.parent(), this.settings)) { + var distance = this.settings.sticky_topbar.data('stickyoffset'); + if (!self.S(klass).hasClass('expanded')) { + if ($window.scrollTop() > (distance)) { + if (!self.S(klass).hasClass('fixed')) { + self.S(klass).addClass('fixed'); + self.S('body').addClass('f-topbar-fixed'); + } + } else if ($window.scrollTop() <= distance) { + if (self.S(klass).hasClass('fixed')) { + self.S(klass).removeClass('fixed'); + self.S('body').removeClass('f-topbar-fixed'); + } + } + } + } + }, + + off : function () { + this.S(this.scope).off('.fndtn.topbar'); + this.S(window).off('.fndtn.topbar'); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.tab = { + name : 'tab', + + version : '5.5.1', + + settings : { + active_class : 'active', + callback : function () {}, + deep_linking : false, + scroll_to_content : true, + is_hover : false + }, + + default_tab_hashes : [], + + init : function (scope, method, options) { + var self = this, + S = this.S; + + this.bindings(method, options); + + // store the initial href, which is used to allow correct behaviour of the + // browser back button when deep linking is turned on. + self.entry_location = window.location.href; + + this.handle_location_hash_change(); + + // Store the default active tabs which will be referenced when the + // location hash is absent, as in the case of navigating the tabs and + // returning to the first viewing via the browser Back button. + S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () { + self.default_tab_hashes.push(this.hash); + }); + }, + + events : function () { + var self = this, + S = this.S; + + var usual_tab_behavior = function (e) { + var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'); + if (!settings.is_hover || Modernizr.touch) { + e.preventDefault(); + e.stopPropagation(); + self.toggle_active_tab(S(this).parent()); + } + }; + + S(this.scope) + .off('.tab') + // Click event: tab title + .on('focus.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior ) + .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior ) + // Hover event: tab title + .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) { + var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'); + if (settings.is_hover) { + self.toggle_active_tab(S(this).parent()); + } + }); + + // Location hash change event + S(window).on('hashchange.fndtn.tab', function (e) { + e.preventDefault(); + self.handle_location_hash_change(); + }); + }, + + handle_location_hash_change : function () { + + var self = this, + S = this.S; + + S('[' + this.attr_name() + ']', this.scope).each(function () { + var settings = S(this).data(self.attr_name(true) + '-init'); + if (settings.deep_linking) { + // Match the location hash to a label + var hash; + if (settings.scroll_to_content) { + hash = self.scope.location.hash; + } else { + // prefix the hash to prevent anchor scrolling + hash = self.scope.location.hash.replace('fndtn-', ''); + } + if (hash != '') { + // Check whether the location hash references a tab content div or + // another element on the page (inside or outside the tab content div) + var hash_element = S(hash); + if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) { + // Tab content div + self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent()); + } else { + // Not the tab content div. If inside the tab content, find the + // containing tab and toggle it as active. + var hash_tab_container_id = hash_element.closest('.content').attr('id'); + if (hash_tab_container_id != undefined) { + self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash); + } + } + } else { + // Reference the default tab hashes which were initialized in the init function + for (var ind = 0; ind < self.default_tab_hashes.length; ind++) { + self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent()); + } + } + } + }); + }, + + toggle_active_tab : function (tab, location_hash) { + var self = this, + S = self.S, + tabs = tab.closest('[' + this.attr_name() + ']'), + tab_link = tab.find('a'), + anchor = tab.children('a').first(), + target_hash = '#' + anchor.attr('href').split('#')[1], + target = S(target_hash), + siblings = tab.siblings(), + settings = tabs.data(this.attr_name(true) + '-init'), + interpret_keyup_action = function (e) { + // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js + + // define current, previous and next (possible) tabs + + var $original = $(this); + var $prev = $(this).parents('li').prev().children('[role="tab"]'); + var $next = $(this).parents('li').next().children('[role="tab"]'); + var $target; + + // find the direction (prev or next) + + switch (e.keyCode) { + case 37: + $target = $prev; + break; + case 39: + $target = $next; + break; + default: + $target = false + break; + } + + if ($target.length) { + $original.attr({ + 'tabindex' : '-1', + 'aria-selected' : null + }); + $target.attr({ + 'tabindex' : '0', + 'aria-selected' : true + }).focus(); + } + + // Hide panels + + $('[role="tabpanel"]') + .attr('aria-hidden', 'true'); + + // Show panel which corresponds to target + + $('#' + $(document.activeElement).attr('href').substring(1)) + .attr('aria-hidden', null); + + }, + go_to_hash = function(hash) { + // This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it + // the user would get continually redirected to the default hash. + var is_entry_location = window.location.href === self.entry_location, + default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : is_entry_location ? window.location.hash :'fndtn-' + self.default_tab_hashes[0].replace('#', '') + + if (!(is_entry_location && hash === default_hash)) { + window.location.hash = hash; + } + }; + + // allow usage of data-tab-content attribute instead of href + if (S(this).data(this.data_attr('tab-content'))) { + target_hash = '#' + S(this).data(this.data_attr('tab-content')).split('#')[1]; + target = S(target_hash); + } + + if (settings.deep_linking) { + + if (settings.scroll_to_content) { + + // retain current hash to scroll to content + go_to_hash(location_hash || target_hash); + + if (location_hash == undefined || location_hash == target_hash) { + tab.parent()[0].scrollIntoView(); + } else { + S(target_hash)[0].scrollIntoView(); + } + } else { + // prefix the hashes so that the browser doesn't scroll down + if (location_hash != undefined) { + go_to_hash('fndtn-' + location_hash.replace('#', '')); + } else { + go_to_hash('fndtn-' + target_hash.replace('#', '')); + } + } + } + + // WARNING: The activation and deactivation of the tab content must + // occur after the deep linking in order to properly refresh the browser + // window (notably in Chrome). + // Clean up multiple attr instances to done once + tab.addClass(settings.active_class).triggerHandler('opened'); + tab_link.attr({'aria-selected' : 'true', tabindex : 0}); + siblings.removeClass(settings.active_class) + siblings.find('a').attr({'aria-selected' : 'false', tabindex : -1}); + target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true', tabindex : -1}); + target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex'); + settings.callback(tab); + target.triggerHandler('toggled', [tab]); + tabs.triggerHandler('toggled', [target]); + + tab_link.off('keydown').on('keydown', interpret_keyup_action ); + }, + + data_attr : function (str) { + if (this.namespace.length > 0) { + return this.namespace + '-' + str; + } + + return str; + }, + + off : function () {}, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.abide = { + name : 'abide', + + version : '5.5.1', + + settings : { + live_validate : true, + validate_on_blur : true, + focus_on_invalid : true, + error_labels : true, // labels with a for="inputId" will recieve an `error` class + error_class : 'error', + timeout : 1000, + patterns : { + alpha : /^[a-zA-Z]+$/, + alpha_numeric : /^[a-zA-Z0-9]+$/, + integer : /^[-+]?\d+$/, + number : /^[-+]?\d*(?:[\.\,]\d+)?$/, + + // amex, visa, diners + card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/, + cvv : /^([0-9]){3,4}$/, + + // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address + email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/, + + url : /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, + // abc.de + domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/, + + datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/, + // YYYY-MM-DD + date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/, + // HH:MM:SS + time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/, + dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/, + // MM/DD/YYYY + month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/, + // DD/MM/YYYY + day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/, + + // #FFF or #FFFFFF + color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ + }, + validators : { + equalTo : function (el, required, parent) { + var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value, + to = el.value, + valid = (from === to); + + return valid; + } + } + }, + + timer : null, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function (scope) { + var self = this, + form = self.S(scope).attr('novalidate', 'novalidate'), + settings = form.data(this.attr_name(true) + '-init') || {}; + + this.invalid_attr = this.add_namespace('data-invalid'); + + form + .off('.abide') + .on('submit.fndtn.abide validate.fndtn.abide', function (e) { + var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name())); + return self.validate(self.S(this).find('input, textarea, select').get(), e, is_ajax); + }) + .on('reset', function () { + return self.reset($(this)); + }) + .find('input, textarea, select') + .off('.abide') + .on('blur.fndtn.abide change.fndtn.abide', function (e) { + if (settings.validate_on_blur === true) { + self.validate([this], e); + } + }) + .on('keydown.fndtn.abide', function (e) { + if (settings.live_validate === true && e.which != 9) { + clearTimeout(self.timer); + self.timer = setTimeout(function () { + self.validate([this], e); + }.bind(this), settings.timeout); + } + }); + }, + + reset : function (form) { + form.removeAttr(this.invalid_attr); + $(this.invalid_attr, form).removeAttr(this.invalid_attr); + $('.' + this.settings.error_class, form).not('small').removeClass(this.settings.error_class); + }, + + validate : function (els, e, is_ajax) { + var validations = this.parse_patterns(els), + validation_count = validations.length, + form = this.S(els[0]).closest('form'), + submit_event = /submit/.test(e.type); + + // Has to count up to make sure the focus gets applied to the top error + for (var i = 0; i < validation_count; i++) { + if (!validations[i] && (submit_event || is_ajax)) { + if (this.settings.focus_on_invalid) { + els[i].focus(); + } + form.trigger('invalid').trigger('invalid.fndtn.abide'); + this.S(els[i]).closest('form').attr(this.invalid_attr, ''); + return false; + } + } + + if (submit_event || is_ajax) { + form.trigger('valid').trigger('valid.fndtn.abide'); + } + + form.removeAttr(this.invalid_attr); + + if (is_ajax) { + return false; + } + + return true; + }, + + parse_patterns : function (els) { + var i = els.length, + el_patterns = []; + + while (i--) { + el_patterns.push(this.pattern(els[i])); + } + + return this.check_validation_and_apply_styles(el_patterns); + }, + + pattern : function (el) { + var type = el.getAttribute('type'), + required = typeof el.getAttribute('required') === 'string'; + + var pattern = el.getAttribute('pattern') || ''; + + if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) { + return [el, this.settings.patterns[pattern], required]; + } else if (pattern.length > 0) { + return [el, new RegExp(pattern), required]; + } + + if (this.settings.patterns.hasOwnProperty(type)) { + return [el, this.settings.patterns[type], required]; + } + + pattern = /.*/; + + return [el, pattern, required]; + }, + + // TODO: Break this up into smaller methods, getting hard to read. + check_validation_and_apply_styles : function (el_patterns) { + var i = el_patterns.length, + validations = [], + form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'), + settings = form.data(this.attr_name(true) + '-init') || {}; + while (i--) { + var el = el_patterns[i][0], + required = el_patterns[i][2], + value = el.value.trim(), + direct_parent = this.S(el).parent(), + validator = el.getAttribute(this.add_namespace('data-abide-validator')), + is_radio = el.type === 'radio', + is_checkbox = el.type === 'checkbox', + label = this.S('label[for="' + el.getAttribute('id') + '"]'), + valid_length = (required) ? (el.value.length > 0) : true, + el_validations = []; + + var parent, valid; + + // support old way to do equalTo validations + if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' } + + if (!direct_parent.is('label')) { + parent = direct_parent; + } else { + parent = direct_parent.parent(); + } + + if (validator) { + valid = this.settings.validators[validator].apply(this, [el, required, parent]); + el_validations.push(valid); + } + + if (is_radio && required) { + el_validations.push(this.valid_radio(el, required)); + } else if (is_checkbox && required) { + el_validations.push(this.valid_checkbox(el, required)); + } else { + + if (el_patterns[i][1].test(value) && valid_length || + !required && el.value.length < 1 || $(el).attr('disabled')) { + el_validations.push(true); + } else { + el_validations.push(false); + } + + el_validations = [el_validations.every(function (valid) {return valid;})]; + + if (el_validations[0]) { + this.S(el).removeAttr(this.invalid_attr); + el.setAttribute('aria-invalid', 'false'); + el.removeAttribute('aria-describedby'); + parent.removeClass(this.settings.error_class); + if (label.length > 0 && this.settings.error_labels) { + label.removeClass(this.settings.error_class).removeAttr('role'); + } + $(el).triggerHandler('valid'); + } else { + this.S(el).attr(this.invalid_attr, ''); + el.setAttribute('aria-invalid', 'true'); + + // Try to find the error associated with the input + var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class); + var errorID = errorElem.length > 0 ? errorElem[0].id : ''; + if (errorID.length > 0) { + el.setAttribute('aria-describedby', errorID); + } + + // el.setAttribute('aria-describedby', $(el).find('.error')[0].id); + parent.addClass(this.settings.error_class); + if (label.length > 0 && this.settings.error_labels) { + label.addClass(this.settings.error_class).attr('role', 'alert'); + } + $(el).triggerHandler('invalid'); + } + } + validations.push(el_validations[0]); + } + validations = [validations.every(function (valid) {return valid;})]; + return validations; + }, + + valid_checkbox : function (el, required) { + var el = this.S(el), + valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled')); + + if (valid) { + el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class); + } else { + el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class); + } + + return valid; + }, + + valid_radio : function (el, required) { + var name = el.getAttribute('name'), + group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"), + count = group.length, + valid = false, + disabled = false; + + // Has to count up to make sure the focus gets applied to the top error + for (var i=0; i < count; i++) { + if( group[i].getAttribute('disabled') ){ + disabled=true; + valid=true; + } else { + if (group[i].checked){ + valid = true; + } else { + if( disabled ){ + valid = false; + } + } + } + } + + // Has to count up to make sure the focus gets applied to the top error + for (var i = 0; i < count; i++) { + if (valid) { + this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class); + } else { + this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class); + } + } + + return valid; + }, + + valid_equal : function (el, required, parent) { + var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value, + to = el.value, + valid = (from === to); + + if (valid) { + this.S(el).removeAttr(this.invalid_attr); + parent.removeClass(this.settings.error_class); + if (label.length > 0 && settings.error_labels) { + label.removeClass(this.settings.error_class); + } + } else { + this.S(el).attr(this.invalid_attr, ''); + parent.addClass(this.settings.error_class); + if (label.length > 0 && settings.error_labels) { + label.addClass(this.settings.error_class); + } + } + + return valid; + }, + + valid_oneof : function (el, required, parent, doNotValidateOthers) { + var el = this.S(el), + others = this.S('[' + this.add_namespace('data-oneof') + ']'), + valid = others.filter(':checked').length > 0; + + if (valid) { + el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class); + } else { + el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class); + } + + if (!doNotValidateOthers) { + var _this = this; + others.each(function () { + _this.valid_oneof.call(_this, this, null, null, true); + }); + } + + return valid; + } + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.tooltip = { + name : 'tooltip', + + version : '5.5.1', + + settings : { + additional_inheritable_classes : [], + tooltip_class : '.tooltip', + append_to : 'body', + touch_close_text : 'Tap To Close', + disable_for_touch : false, + hover_delay : 200, + show_on : 'all', + tip_template : function (selector, content) { + return '' + content + ''; + } + }, + + cache : {}, + + init : function (scope, method, options) { + Foundation.inherit(this, 'random_str'); + this.bindings(method, options); + }, + + should_show : function (target, tip) { + var settings = $.extend({}, this.settings, this.data_options(target)); + + if (settings.show_on === 'all') { + return true; + } else if (this.small() && settings.show_on === 'small') { + return true; + } else if (this.medium() && settings.show_on === 'medium') { + return true; + } else if (this.large() && settings.show_on === 'large') { + return true; + } + return false; + }, + + medium : function () { + return matchMedia(Foundation.media_queries['medium']).matches; + }, + + large : function () { + return matchMedia(Foundation.media_queries['large']).matches; + }, + + events : function (instance) { + var self = this, + S = self.S; + + self.create(this.S(instance)); + + $(this.scope) + .off('.tooltip') + .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', + '[' + this.attr_name() + ']', function (e) { + var $this = S(this), + settings = $.extend({}, self.settings, self.data_options($this)), + is_touch = false; + + if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) { + return false; + } + + if (/mouse/i.test(e.type) && self.ie_touch(e)) { + return false; + } + + if ($this.hasClass('open')) { + if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { + e.preventDefault(); + } + self.hide($this); + } else { + if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { + return; + } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { + e.preventDefault(); + S(settings.tooltip_class + '.open').hide(); + is_touch = true; + } + + if (/enter|over/i.test(e.type)) { + this.timer = setTimeout(function () { + var tip = self.showTip($this); + }.bind(this), self.settings.hover_delay); + } else if (e.type === 'mouseout' || e.type === 'mouseleave') { + clearTimeout(this.timer); + self.hide($this); + } else { + self.showTip($this); + } + } + }) + .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) { + if (/mouse/i.test(e.type) && self.ie_touch(e)) { + return false; + } + + if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') { + return; + } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) { + self.convert_to_touch($(this)); + } else { + self.hide($(this)); + } + }) + .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) { + self.hide(S(this)); + }); + }, + + ie_touch : function (e) { + // How do I distinguish between IE11 and Windows Phone 8????? + return false; + }, + + showTip : function ($target) { + var $tip = this.getTip($target); + if (this.should_show($target, $tip)) { + return this.show($target); + } + return; + }, + + getTip : function ($target) { + var selector = this.selector($target), + settings = $.extend({}, this.settings, this.data_options($target)), + tip = null; + + if (selector) { + tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class); + } + + return (typeof tip === 'object') ? tip : false; + }, + + selector : function ($target) { + var id = $target.attr('id'), + dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector'); + + if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') { + dataSelector = this.random_str(6); + $target + .attr('data-selector', dataSelector) + .attr('aria-describedby', dataSelector); + } + + return (id && id.length > 0) ? id : dataSelector; + }, + + create : function ($target) { + var self = this, + settings = $.extend({}, this.settings, this.data_options($target)), + tip_template = this.settings.tip_template; + + if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) { + tip_template = window[settings.tip_template]; + } + + var $tip = $(tip_template(this.selector($target), $('
    ').html($target.attr('title')).html())), + classes = this.inheritable_classes($target); + + $tip.addClass(classes).appendTo(settings.append_to); + + if (Modernizr.touch) { + $tip.append('' + settings.touch_close_text + ''); + $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) { + self.hide($target); + }); + } + + $target.removeAttr('title').attr('title', ''); + }, + + reposition : function (target, tip, classes) { + var width, nub, nubHeight, nubWidth, column, objPos; + + tip.css('visibility', 'hidden').show(); + + width = target.data('width'); + nub = tip.children('.nub'); + nubHeight = nub.outerHeight(); + nubWidth = nub.outerHeight(); + + if (this.small()) { + tip.css({'width' : '100%'}); + } else { + tip.css({'width' : (width) ? width : 'auto'}); + } + + objPos = function (obj, top, right, bottom, left, width) { + return obj.css({ + 'top' : (top) ? top : 'auto', + 'bottom' : (bottom) ? bottom : 'auto', + 'left' : (left) ? left : 'auto', + 'right' : (right) ? right : 'auto' + }).end(); + }; + + objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', target.offset().left); + + if (this.small()) { + objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', 12.5, $(this.scope).width()); + tip.addClass('tip-override'); + objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left); + } else { + var left = target.offset().left; + if (Foundation.rtl) { + nub.addClass('rtl'); + left = target.offset().left + target.outerWidth() - tip.outerWidth(); + } + objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', left); + tip.removeClass('tip-override'); + if (classes && classes.indexOf('tip-top') > -1) { + if (Foundation.rtl) { + nub.addClass('rtl'); + } + objPos(tip, (target.offset().top - tip.outerHeight()), 'auto', 'auto', left) + .removeClass('tip-override'); + } else if (classes && classes.indexOf('tip-left') > -1) { + objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left - tip.outerWidth() - nubHeight)) + .removeClass('tip-override'); + nub.removeClass('rtl'); + } else if (classes && classes.indexOf('tip-right') > -1) { + objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left + target.outerWidth() + nubHeight)) + .removeClass('tip-override'); + nub.removeClass('rtl'); + } + } + + tip.css('visibility', 'visible').hide(); + }, + + small : function () { + return matchMedia(Foundation.media_queries.small).matches && + !matchMedia(Foundation.media_queries.medium).matches; + }, + + inheritable_classes : function ($target) { + var settings = $.extend({}, this.settings, this.data_options($target)), + inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes), + classes = $target.attr('class'), + filtered = classes ? $.map(classes.split(' '), function (el, i) { + if ($.inArray(el, inheritables) !== -1) { + return el; + } + }).join(' ') : ''; + + return $.trim(filtered); + }, + + convert_to_touch : function ($target) { + var self = this, + $tip = self.getTip($target), + settings = $.extend({}, self.settings, self.data_options($target)); + + if ($tip.find('.tap-to-close').length === 0) { + $tip.append('' + settings.touch_close_text + ''); + $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) { + self.hide($target); + }); + } + + $target.data('tooltip-open-event-type', 'touch'); + }, + + show : function ($target) { + var $tip = this.getTip($target); + + if ($target.data('tooltip-open-event-type') == 'touch') { + this.convert_to_touch($target); + } + + this.reposition($target, $tip, $target.attr('class')); + $target.addClass('open'); + $tip.fadeIn(150); + }, + + hide : function ($target) { + var $tip = this.getTip($target); + + $tip.fadeOut(150, function () { + $tip.find('.tap-to-close').remove(); + $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose'); + $target.removeClass('open'); + }); + }, + + off : function () { + var self = this; + this.S(this.scope).off('.fndtn.tooltip'); + this.S(this.settings.tooltip_class).each(function (i) { + $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text()); + }).remove(); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanel.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanel.html new file mode 100644 index 0000000000..95bc9361ef --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanel.html @@ -0,0 +1,12 @@ + + + + +wicket-foundation + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanel.java new file mode 100644 index 0000000000..aa1c8f3d3a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanel.java @@ -0,0 +1,57 @@ +package org.wicketstuff.foundation.foundationpanel; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; + +/** + * A panel is a simple, helpful Foundation component that enables you to outline sections of your page easily. + * http://foundation.zurb.com/docs/components/panels.html + * @author ilkka + * + */ +public abstract class FoundationPanel extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + private IModel typeModel; + + /** + * Create FoundationPanel. + * @param id - Wicket id. + * @param typeModel - Model for the panel type. + */ + public FoundationPanel(String id, IModel typeModel) { + super(id); + this.typeModel = typeModel; + } + + /** + * Create FoundationPanel. + * @param id - Wicket id. + * @param model - Model for the panel. + * @param typeModel - Model for the panel type. + */ + public FoundationPanel(final String id, final IModel model, IModel typeModel) { + super(id, model); + this.typeModel = typeModel; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + PanelType type = typeModel.getObject(); + if (type.equals(PanelType.NORMAL)) { + Attribute.addClass(tag, "panel"); + } else if (type.equals(PanelType.CALLOUT)) { + Attribute.addClass(tag, "panel callout radius"); + } + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + this.typeModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanelBorder.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanelBorder.html new file mode 100644 index 0000000000..7011772ac9 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanelBorder.html @@ -0,0 +1,14 @@ + + + + +wicket-foundation + + + +
    + +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanelBorder.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanelBorder.java new file mode 100644 index 0000000000..2205e5436f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/FoundationPanelBorder.java @@ -0,0 +1,59 @@ +package org.wicketstuff.foundation.foundationpanel; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.border.FoundationBaseBorder; + +/** + * A panel is a simple, helpful Foundation component that enables you to outline sections of your page easily. + * http://foundation.zurb.com/docs/components/panels.html + * @author ilkka + * + */ +public class FoundationPanelBorder extends FoundationBaseBorder { + + private static final long serialVersionUID = 1L; + + private IModel typeModel; + + /** + * Create FoundationPanelBorder. + * @param id - Wicket id. + * @param typeModel - Model for the panel type. + */ + public FoundationPanelBorder(String id, IModel typeModel) { + super(id); + this.typeModel = typeModel; + initComponents(); + } + + /** + * Create FoundationPanel. + * @param id - Wicket id. + * @param model - Model for the panel. + * @param typeModel - Model for the panel type. + */ + public FoundationPanelBorder(String id, IModel model, IModel typeModel) { + super(id, model); + this.typeModel = typeModel; + initComponents(); + } + + private void initComponents() { + WebMarkupContainer wrapper = new WebMarkupContainer("wrapper"); + PanelType type = typeModel.getObject(); + if (type.equals(PanelType.NORMAL)) { + wrapper.add(new AttributeModifier("class", "panel")); + } else if (type.equals(PanelType.CALLOUT)) { + wrapper.add(new AttributeModifier("class", "panel callout radius")); + } + this.addToBorder(wrapper); + } + + @Override + protected void onDetach() { + this.typeModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/PanelType.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/PanelType.java new file mode 100644 index 0000000000..34e0d579e7 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/foundationpanel/PanelType.java @@ -0,0 +1,8 @@ +package org.wicketstuff.foundation.foundationpanel; + +public enum PanelType { + + NORMAL, + CALLOUT + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/icon/FoundationIcon.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/icon/FoundationIcon.java new file mode 100644 index 0000000000..eddcb31edc --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/icon/FoundationIcon.java @@ -0,0 +1,52 @@ +package org.wicketstuff.foundation.icon; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Single icon from Foundation Icon Fonts 3. + * http://zurb.com/playground/foundation-icon-fonts-3 + * @author ilkka + * + */ +public class FoundationIcon extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private IconType iconType; + + private IconSize iconSize; + + /** + * Create FoundationIcon. + * @param id - Wicket id. + * @param iconType - Type of the icon. + */ + public FoundationIcon(String id, IconType iconType) { + this(id, iconType, null); + } + + /** + * Create FoundationIcon. + * @param id - Wicket id. + * @param iconType - Type of the icon. + * @param iconSize - Size of the icon. + */ + public FoundationIcon(String id, IconType iconType, IconSize iconSize) { + super(id); + this.iconType = iconType; + this.iconSize = iconSize; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + final String prefix = "fi-"; + Attribute.addClass(tag, prefix + StringUtil.EnumNameToCssClassName(iconType.name())); + if (iconSize != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(iconSize.name())); + } + super.onComponentTag(tag); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/icon/IconSize.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/icon/IconSize.java new file mode 100644 index 0000000000..9951db404b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/icon/IconSize.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.icon; + +public enum IconSize { + SMALL, MEDIUM, LARGE; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/icon/IconType.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/icon/IconType.java new file mode 100644 index 0000000000..e0dc534c08 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/icon/IconType.java @@ -0,0 +1,297 @@ +package org.wicketstuff.foundation.icon; + +public enum IconType { + // General icons + HEART, + STAR, + PLUS, + MINUS, + X, + CHECK, + UPLOAD, + DOWNLOAD, + WIDGET, + MARKER, + REFRESH, + HOME, + TRASH, + PAPERCLIP, + LOCK, + UNLOCK, + CALENDAR, + CLOUD, + MAGNIFYING_GLASS, + ZOOM_OUT, + ZOOM_IN, + WRENCH, + RSS, + SHARE, + FLAG, + LIST_THUMBNAILS, + LIST, + THUMBNAILS, + ANNOTATE, + FOLDER, + FOLDER_LOCK, + FOLDER_ADD, + CLOCK, + PLAY_VIDEO, + CROP, + ARCHIVE, + PENCIL, + GRAPH_TREND, + GRAPH_BAR, + GRAPH_HORIZONTAL, + GRAPH_PIE, + CHECKBOX, + MINUS_CIRCLE, + X_CIRCLE, + EYE, + DATABASE, + RESULTS, + RESULTS_DEMOGRAPHICS, + LIKE, + DISLIKE, + UPLOAD_CLOUD, + CAMERA, + ALERT, + BOOKMARK, + CONTRAST, + MAIL, + VIDEO, + TELEPHONE, + COMMENT, + COMMENT_VIDEO, + COMMENT_QUOTES, + COMMENT_MINUS, + MICROPHONE, + MEGAPHONE, + SOUND, + ADDRESS_BOOK, + BLUETOOTH, + HTML5, + CSS3, + LAYOUT, + WEB, + FOUNDATION, + // Page icons + PAGE, + PAGE_CSV, + PAGE_DOC, + PAGE_PDF, + PAGE_EXPORT, + PAGE_EXPORT_CSV, + PAGE_EXPORT_DOC, + PAGE_EXPORT_PDF, + PAGE_ADD, + PAGE_REMOVE, + PAGE_DELETE, + PAGE_EDIT, + PAGE_SEARCH, + PAGE_COPY, + PAGE_FILLED, + PAGE_MULTIPLE, + // Arrow icons + ARROW_UP, + ARROW_RIGHT, + ARROW_DOWN, + ARROW_LEFT, + ARROWS_OUT, + ARROWS_IN, + ARROWS_EXPAND, + ARROWS_COMPRESS, + // People icons + TORSO, + TORSO_FEMALE, + TORSOS, + TORSOS_FEMALE_MALE, + TORSOS_MALE_FEMALE, + TORSOS_ALL, + TORSOS_ALL_FEMALE, + TORSO_BUSINESS, + // Device icons + MONITOR, + LAPTOP, + TABLET_PORTRAIT, + TABLET_LANDSCAPE, + MOBILE, + MOBILE_SIGNAL, + USB, + // Text editor icons + BOLD, + ITALIC, + UNDERLINE, + STRIKETHROUGH, + TEXT_COLOR, + BACKGROUND_COLOR, + SUPERSCRIPT, + SUBSCRIPT, + ALIGN_LEFT, + ALIGN_CENTER, + ALIGN_RIGHT, + ALIGN_JUSTIFY, + LIST_NUMBERED, + LIST_BULLET, + INDENT_MORE, + INDENT_LESS, + PRINT, + SAVE, + PHOTO, + FILTER, + PAINT_BUCKET, + LINK, + UNLINK, + QUOTE, + // Media control icons + PLAY, + STOP, + PAUSE, + PREVIOUS, + REWIND, + FAST_FORWARD, + NEXT, + RECORD, + PLAY_CIRCLE, + VOLUME_NONE, + VOLUME, + VOLUME_STRIKE, + LOOP, + SHUFFLE, + EJECT, + REWIND_TEN, + // Ecommerce icons + DOLLAR, + EURO, + POUND, + YEN, + BITCOIN, + BITCOIN_CIRCLE, + CREDIT_CARD, + SHOPPING_CART, + BURST, + BURST_NEW, + BURST_SALE, + PAYPAL, + PRICE_TAG, + PRICETAG_MULTIPLE, + SHOPPING_BAG, + DOLLAR_BILL, + // Accessibility icons + WHEELCHAIR, + BRAILLE, + CLOSED_CAPTION, + BLIND, + ASL, + HEARING_AID, + GUIDE_DOG, + UNIVERSAL_ACCESS, + TELEPHONE_ACCESSIBLE, + ELEVATOR, + MALE, + FEMALE, + MALE_FEMALE, + MALE_SYMBOL, + FEMALE_SYMBOL, + // Social brand icons + SOCIAL_500PX, + SOCIAL_ADOBE, + SOCIAL_AMAZON, + SOCIAL_ANDROID, + SOCIAL_APPLE, + SOCIAL_BEHANCE, + SOCIAL_BING, + SOCIAL_BLOGGER, + SOCIAL_DELICIOUS, + SOCIAL_DESIGNER_NEWS, + SOCIAL_DEVIANT_ART, + SOCIAL_DIGG, + SOCIAL_DRIBBBLE, + SOCIAL_DRIVE, + SOCIAL_DROPBOX, + SOCIAL_EVERNOTE, + SOCIAL_FACEBOOK, + SOCIAL_FLICKR, + SOCIAL_FORRST, + SOCIAL_FOURSQUARE, + SOCIAL_GAME_CENTER, + SOCIAL_GITHUB, + SOCIAL_GOOGLE_PLUS, + SOCIAL_HACKER_NEWS, + SOCIAL_HI5, + SOCIAL_INSTAGRAM, + SOCIAL_JOOMLA, + SOCIAL_LASTFM, + SOCIAL_LINKEDIN, + SOCIAL_MEDIUM, + SOCIAL_MYSPACE, + SOCIAL_ORKUT, + SOCIAL_PATH, + SOCIAL_PICASA, + SOCIAL_PINTEREST, + SOCIAL_RDIO, + SOCIAL_REDDIT, + SOCIAL_SKYPE, + SOCIAL_SKILLSHARE, + SOCIAL_SMASHING_MAG, + SOCIAL_SNAPCHAT, + SOCIAL_SPOTIFY, + SOCIAL_SQUIDOO, + SOCIAL_STACK_OVERFLOW, + SOCIAL_STEAM, + SOCIAL_STUMBLEUPON, + SOCIAL_TREEHOUSE, + SOCIAL_TUMBLR, + SOCIAL_TWITTER, + SOCIAL_VIMEO, + SOCIAL_WINDOWS, + SOCIAL_XBOX, + SOCIAL_YAHOO, + SOCIAL_YELP, + SOCIAL_YOUTUBE, + SOCIAL_ZERPLY, + SOCIAL_ZURB, + // Miscellanous icons + COMPASS, + MUSIC, + LIGHTBULB, + BATTERY_FULL, + BATTERY_HALF, + BATTERY_EMPTY, + PROJECTION_SCREEN, + INFO, + POWER, + ASTERISK, + AT_SIGN, + KEY, + TICKET, + BOOK, + BOOK_BOOKMARK, + ANCHOR, + PUZZLE, + FOOT, + PAW, + MOUNTAINS, + TREES, + SHERIFF_BADGE, + FIRST_AID, + TROPHY, + PROHIBITED, + NO_DOGS, + NO_SMOKING, + SAFETY_CONE, + SHIELD, + CROWN, + TARGET, + TARGET_TWO, + DIE_ONE, + DIE_TWO, + DIE_THREE, + DIE_FOUR, + DIE_FIVE, + DIE_SIX, + SKULL, + MAP, + CLIPBOARD, + CLIPBOARD_PENCIL, + CLIPBOARD_NOTES; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/FoundationIconBar.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/FoundationIconBar.html new file mode 100644 index 0000000000..28de162e38 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/FoundationIconBar.html @@ -0,0 +1,16 @@ + + + + +wicket-foundation + + + + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/FoundationIconBar.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/FoundationIconBar.java new file mode 100644 index 0000000000..160b00a0f0 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/FoundationIconBar.java @@ -0,0 +1,108 @@ +package org.wicketstuff.foundation.iconbar; + +import java.util.List; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.image.Image; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.icon.FoundationIcon; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * An Icon Bar provides a menu to quickly navigate an app. + * http://foundation.zurb.com/docs/components/icon-bar.html + * @author ilkka + * + */ +public class FoundationIconBar extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + private IModel> itemsModel; + + /** + * Create FoundationIconBar. + * @param id - Wicket id. + * @param items - List of icon bar items. + */ + public FoundationIconBar(String id, List items) { + this(id, new IconBarOptions(), items); + } + + /** + * Create FoundationIconBar. + * @param id - Wicket id. + * @param options - Options for the icon bar. + * @param items - List of icon bar items. + */ + public FoundationIconBar(String id, IconBarOptions options, List items) { + this(id, Model.of(options), new ListModel<>(items)); + } + + /** + * Create FoundationIconBar. + * @param id - Wicket id. + * @param optionsModel - Options for the icon bar. + * @param itemsModel - Model for the icon bar items. + */ + public FoundationIconBar(String id, IModel optionsModel, IModel> itemsModel) { + super(id); + this.optionsModel = optionsModel; + this.itemsModel = itemsModel; + add(new ListView("item", itemsModel) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + if (item.getModelObject().getImageResourceReference() != null) { + item.add(new Image("img", item.getModelObject().getImageResourceReference())); + item.add(new WebMarkupContainer("icon").setVisible(false)); + } else { + item.add(new WebMarkupContainer("img").setVisible(false)); + item.add(new FoundationIcon("icon", item.getModelObject().getIconType())); + } + WebMarkupContainer label = new WebMarkupContainer("label"); + item.add(label); + label.add(new Label("text", item.getModelObject().getLabel())); + } + }); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addClass(tag, "icon-bar"); + IconBarOptions options = optionsModel.getObject(); + if (options.getVerticalStyle() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getVerticalStyle().name())); + } + if (options.isLabelRight()) { + Attribute.addClass(tag, "label-right"); + } + switch (itemsModel.getObject().size()) { + case 1: Attribute.addClass(tag, "one-up"); break; + case 2: Attribute.addClass(tag, "two-up"); break; + case 3: Attribute.addClass(tag, "three-up"); break; + case 4: Attribute.addClass(tag, "four-up"); break; + case 5: Attribute.addClass(tag, "five-up"); break; + case 6: Attribute.addClass(tag, "six-up"); break; + } + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + optionsModel.detach(); + itemsModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarFontItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarFontItem.java new file mode 100644 index 0000000000..450117927d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarFontItem.java @@ -0,0 +1,35 @@ +package org.wicketstuff.foundation.iconbar; + +import org.apache.wicket.request.resource.ResourceReference; +import org.wicketstuff.foundation.icon.IconType; + +/** + * IconBarItem font implementation. + * @author ilkka + * + */ +public class IconBarFontItem implements IconBarItem { + + private String text; + private IconType iconType; + + public IconBarFontItem(IconType iconType, String text) { + this.iconType = iconType; + this.text = text; + } + + @Override + public ResourceReference getImageResourceReference() { + return null; + } + + @Override + public String getLabel() { + return text; + } + + @Override + public IconType getIconType() { + return iconType; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarItem.java new file mode 100644 index 0000000000..28e925f4cb --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarItem.java @@ -0,0 +1,17 @@ +package org.wicketstuff.foundation.iconbar; + +import org.apache.wicket.request.resource.ResourceReference; +import org.wicketstuff.foundation.icon.IconType; + +/** + * Interface for the icon bar item. + * @author ilkka + * + */ +public interface IconBarItem { + + ResourceReference getImageResourceReference(); + IconType getIconType(); + String getLabel(); + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarOptions.java new file mode 100644 index 0000000000..36f729a50a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarOptions.java @@ -0,0 +1,45 @@ +package org.wicketstuff.foundation.iconbar; + +import java.io.Serializable; + +/** + * Options for the icon bar. + * @author ilkka + * + */ +public class IconBarOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private IconBarVerticalStyle verticalStyle; + private boolean labelRight; + + public IconBarOptions() { + } + + public IconBarOptions(IconBarVerticalStyle verticalStyle) { + this.verticalStyle = verticalStyle; + } + + public IconBarOptions(boolean labelRight) { + this.labelRight = labelRight; + } + + public IconBarVerticalStyle getVerticalStyle() { + return verticalStyle; + } + + public IconBarOptions setVerticalStyle(IconBarVerticalStyle verticalStyle) { + this.verticalStyle = verticalStyle; + return this; + } + + public boolean isLabelRight() { + return labelRight; + } + + public IconBarOptions setLabelRight(boolean labelRight) { + this.labelRight = labelRight; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarResourceItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarResourceItem.java new file mode 100644 index 0000000000..5ba22179ff --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarResourceItem.java @@ -0,0 +1,39 @@ +package org.wicketstuff.foundation.iconbar; + +import java.io.Serializable; + +import org.apache.wicket.request.resource.ResourceReference; +import org.wicketstuff.foundation.icon.IconType; + +/** + * IconBarItem resource implementation. + * @author ilkka + * + */ +public class IconBarResourceItem implements IconBarItem, Serializable { + + private static final long serialVersionUID = 1L; + + private ResourceReference resource; + private String text; + + public IconBarResourceItem(ResourceReference resource, String text) { + this.resource = resource; + this.text = text; + } + + @Override + public ResourceReference getImageResourceReference() { + return resource; + } + + @Override + public String getLabel() { + return text; + } + + @Override + public IconType getIconType() { + return null; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarVerticalStyle.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarVerticalStyle.java new file mode 100644 index 0000000000..f3de4af0b2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/iconbar/IconBarVerticalStyle.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.iconbar; + +public enum IconBarVerticalStyle { + VERTICAL, MEDIUM_VERTICAL, LARGE_VERTICAL +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/inlinelist/FoundationInlineList.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/inlinelist/FoundationInlineList.html new file mode 100644 index 0000000000..5082eafd27 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/inlinelist/FoundationInlineList.html @@ -0,0 +1,16 @@ + + + + +wicket-foundation + + + + +
      +
    • +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/inlinelist/FoundationInlineList.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/inlinelist/FoundationInlineList.java new file mode 100644 index 0000000000..9e50b007b4 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/inlinelist/FoundationInlineList.java @@ -0,0 +1,54 @@ +package org.wicketstuff.foundation.inlinelist; + +import java.util.List; + +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.component.FoundationBasePanel; + +/** + * This simple construct creates a horizontal list of links, like in a footer. + * http://foundation.zurb.com/docs/components/inline_lists.html + * @author ilkka + * + */ +public abstract class FoundationInlineList extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationInlineList. + * @param id - Wicket id. + * @param titles - List of titles. + */ + public FoundationInlineList(String id, List titles) { + this(id, new ListModel<>(titles)); + } + + /** + * Create FoundationInlineList. + * @param id - Wicket id. + * @param titles - Model for the titles. + */ + public FoundationInlineList(String id, IModel> titlesModel) { + super(id); + add(new ListView("item", titlesModel) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + AbstractLink link = createLink("link", item.getIndex()); + item.add(link); + link.add(new Label("text", item.getModelObject())); + } + + }); + } + + public abstract AbstractLink createLink(String id, int idx); +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/label/FoundationLabel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/label/FoundationLabel.java new file mode 100644 index 0000000000..afd379ce69 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/label/FoundationLabel.java @@ -0,0 +1,92 @@ +package org.wicketstuff.foundation.label; + +import java.io.Serializable; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Labels are useful inline styles that can be dropped into body copy to call out certain sections or to attach metadata. + * http://foundation.zurb.com/docs/components/labels.html + * @author ilkka + * + */ +public class FoundationLabel extends Label { + + private static final long serialVersionUID = 1L; + + private LabelOptions options; + + /** + * Create FoundationLabel. + * @param id - Wicket id. + */ + public FoundationLabel(final String id) { + this(id, new LabelOptions()); + } + + /** + * Create FoundationLabel. + * @param id - Wicket id. + * @param options - Options for the label. + */ + public FoundationLabel(final String id, LabelOptions options) { + super(id); + this.options = options; + } + + /** + * Create FoundationLabel. + * @param id - Wicket id. + * @param label - Text for the label. + */ + public FoundationLabel(final String id, Serializable label) { + this(id, label, new LabelOptions()); + } + + /** + * Create FoundationLabel. + * @param id - Wicket id. + * @param label - Text for the label. + * @param options - Options for the label. + */ + public FoundationLabel(final String id, Serializable label, LabelOptions options) { + super(id, label); + this.options = options; + } + + /** + * Create FoundationLabel. + * @param id - Wicket id. + * @param model - Model for the label. + */ + public FoundationLabel(final String id, IModel model) { + this(id, model, new LabelOptions()); + } + + /** + * Create FoundationLabel. + * @param id - Wicket id. + * @param model - Model for the label. + * @param options - Options for the label. + */ + public FoundationLabel(final String id, IModel model, LabelOptions options) { + super(id, model); + this.options = options; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addClass(tag, "label"); + if (options.getColor() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getColor().name())); + } + if (options.getRadius() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getRadius().name())); + } + super.onComponentTag(tag); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/label/LabelOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/label/LabelOptions.java new file mode 100644 index 0000000000..d503351f79 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/label/LabelOptions.java @@ -0,0 +1,53 @@ +package org.wicketstuff.foundation.label; + +import java.io.Serializable; + +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; + +/** + * Options for FoundationLabel. + * @author ilkka + * + */ +public class LabelOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private ButtonColor color; + private ButtonRadius radius; + + public LabelOptions() { + } + + public LabelOptions(ButtonColor color) { + this.color = color; + } + + public LabelOptions(ButtonRadius radius) { + this.radius = radius; + } + + public LabelOptions(ButtonColor color, ButtonRadius radius) { + this.color = color; + this.radius = radius; + } + + public ButtonColor getColor() { + return color; + } + + public LabelOptions setColor(ButtonColor color) { + this.color = color; + return this; + } + + public ButtonRadius getRadius() { + return radius; + } + + public LabelOptions setRadius(ButtonRadius radius) { + this.radius = radius; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/modernizr.js b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/modernizr.js new file mode 100644 index 0000000000..54dbd5483f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/modernizr.js @@ -0,0 +1,8 @@ +/*! + * Modernizr v2.8.3 + * www.modernizr.com + * + * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton + * Available under the BSD and MIT licenses: www.modernizr.com/license/ + */ +window.Modernizr=function(a,b,c){function d(a){t.cssText=a}function e(a,b){return d(x.join(a+";")+(b||""))}function f(a,b){return typeof a===b}function g(a,b){return!!~(""+a).indexOf(b)}function h(a,b){for(var d in a){var e=a[d];if(!g(e,"-")&&t[e]!==c)return"pfx"==b?e:!0}return!1}function i(a,b,d){for(var e in a){var g=b[a[e]];if(g!==c)return d===!1?a[e]:f(g,"function")?g.bind(d||b):g}return!1}function j(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+z.join(d+" ")+d).split(" ");return f(b,"string")||f(b,"undefined")?h(e,b):(e=(a+" "+A.join(d+" ")+d).split(" "),i(e,b,c))}function k(){o.input=function(c){for(var d=0,e=c.length;e>d;d++)E[c[d]]=!!(c[d]in u);return E.list&&(E.list=!(!b.createElement("datalist")||!a.HTMLDataListElement)),E}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),o.inputtypes=function(a){for(var d,e,f,g=0,h=a.length;h>g;g++)u.setAttribute("type",e=a[g]),d="text"!==u.type,d&&(u.value=v,u.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&u.style.WebkitAppearance!==c?(q.appendChild(u),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(u,null).WebkitAppearance&&0!==u.offsetHeight,q.removeChild(u)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?u.checkValidity&&u.checkValidity()===!1:u.value!=v)),D[a[g]]=!!d;return D}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var l,m,n="2.8.3",o={},p=!0,q=b.documentElement,r="modernizr",s=b.createElement(r),t=s.style,u=b.createElement("input"),v=":)",w={}.toString,x=" -webkit- -moz- -o- -ms- ".split(" "),y="Webkit Moz O ms",z=y.split(" "),A=y.toLowerCase().split(" "),B={svg:"http://www.w3.org/2000/svg"},C={},D={},E={},F=[],G=F.slice,H=function(a,c,d,e){var f,g,h,i,j=b.createElement("div"),k=b.body,l=k||b.createElement("body");if(parseInt(d,10))for(;d--;)h=b.createElement("div"),h.id=e?e[d]:r+(d+1),j.appendChild(h);return f=["­",'"].join(""),j.id=r,(k?j:l).innerHTML+=f,l.appendChild(j),k||(l.style.background="",l.style.overflow="hidden",i=q.style.overflow,q.style.overflow="hidden",q.appendChild(l)),g=c(j,a),k?j.parentNode.removeChild(j):(l.parentNode.removeChild(l),q.style.overflow=i),!!g},I=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return H("@media "+b+" { #"+r+" { position: absolute; } }",function(b){d="absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position}),d},J=function(){function a(a,e){e=e||b.createElement(d[a]||"div"),a="on"+a;var g=a in e;return g||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(a,""),g=f(e[a],"function"),f(e[a],"undefined")||(e[a]=c),e.removeAttribute(a))),e=null,g}var d={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return a}(),K={}.hasOwnProperty;m=f(K,"undefined")||f(K.call,"undefined")?function(a,b){return b in a&&f(a.constructor.prototype[b],"undefined")}:function(a,b){return K.call(a,b)},Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=G.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(G.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(G.call(arguments)))};return d}),C.flexbox=function(){return j("flexWrap")},C.flexboxlegacy=function(){return j("boxDirection")},C.canvas=function(){var a=b.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))},C.canvastext=function(){return!(!o.canvas||!f(b.createElement("canvas").getContext("2d").fillText,"function"))},C.webgl=function(){return!!a.WebGLRenderingContext},C.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:H(["@media (",x.join("touch-enabled),("),r,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=9===a.offsetTop}),c},C.geolocation=function(){return"geolocation"in navigator},C.postmessage=function(){return!!a.postMessage},C.websqldatabase=function(){return!!a.openDatabase},C.indexedDB=function(){return!!j("indexedDB",a)},C.hashchange=function(){return J("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},C.history=function(){return!(!a.history||!history.pushState)},C.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},C.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},C.rgba=function(){return d("background-color:rgba(150,255,150,.5)"),g(t.backgroundColor,"rgba")},C.hsla=function(){return d("background-color:hsla(120,40%,100%,.5)"),g(t.backgroundColor,"rgba")||g(t.backgroundColor,"hsla")},C.multiplebgs=function(){return d("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(t.background)},C.backgroundsize=function(){return j("backgroundSize")},C.borderimage=function(){return j("borderImage")},C.borderradius=function(){return j("borderRadius")},C.boxshadow=function(){return j("boxShadow")},C.textshadow=function(){return""===b.createElement("div").style.textShadow},C.opacity=function(){return e("opacity:.55"),/^0.55$/.test(t.opacity)},C.cssanimations=function(){return j("animationName")},C.csscolumns=function(){return j("columnCount")},C.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return d((a+"-webkit- ".split(" ").join(b+a)+x.join(c+a)).slice(0,-a.length)),g(t.backgroundImage,"gradient")},C.cssreflections=function(){return j("boxReflect")},C.csstransforms=function(){return!!j("transform")},C.csstransforms3d=function(){var a=!!j("perspective");return a&&"webkitPerspective"in q.style&&H("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b){a=9===b.offsetLeft&&3===b.offsetHeight}),a},C.csstransitions=function(){return j("transition")},C.fontface=function(){var a;return H('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&0===g.indexOf(d.split(" ")[0])}),a},C.generatedcontent=function(){var a;return H(["#",r,"{font:0/0 a}#",r,':after{content:"',v,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},C.video=function(){var a=b.createElement("video"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(d){}return c},C.audio=function(){var a=b.createElement("audio"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(d){}return c},C.localstorage=function(){try{return localStorage.setItem(r,r),localStorage.removeItem(r),!0}catch(a){return!1}},C.sessionstorage=function(){try{return sessionStorage.setItem(r,r),sessionStorage.removeItem(r),!0}catch(a){return!1}},C.webworkers=function(){return!!a.Worker},C.applicationcache=function(){return!!a.applicationCache},C.svg=function(){return!!b.createElementNS&&!!b.createElementNS(B.svg,"svg").createSVGRect},C.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==B.svg},C.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(w.call(b.createElementNS(B.svg,"animate")))},C.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(w.call(b.createElementNS(B.svg,"clipPath")))};for(var L in C)m(C,L)&&(l=L.toLowerCase(),o[l]=C[L](),F.push((o[l]?"":"no-")+l));return o.input||k(),o.addTest=function(a,b){if("object"==typeof a)for(var d in a)m(a,d)&&o.addTest(d,a[d]);else{if(a=a.toLowerCase(),o[a]!==c)return o;b="function"==typeof b?b():b,"undefined"!=typeof p&&p&&(q.className+=" "+(b?"":"no-")+a),o[a]=b}return o},d(""),s=u=null,function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=s.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=r[a[p]];return b||(b={},q++,a[p]=q,r[q]=b),b}function f(a,c,d){if(c||(c=b),k)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():o.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!f.canHaveChildren||n.test(a)||f.tagUrn?f:d.frag.appendChild(f)}function g(a,c){if(a||(a=b),k)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function i(a){a||(a=b);var d=e(a);return!s.shivCSS||j||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||h(a,d),a}var j,k,l="3.7.0",m=a.html5||{},n=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,o=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,p="_html5shiv",q=0,r={};!function(){try{var a=b.createElement("a");a.innerHTML="",j="hidden"in a,k=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){j=!0,k=!0}}();var s={elements:m.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:l,shivCSS:m.shivCSS!==!1,supportsUnknownElements:k,shivMethods:m.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g};a.html5=s,i(b)}(this,b),o._version=n,o._prefixes=x,o._domPrefixes=A,o._cssomPrefixes=z,o.mq=I,o.hasEvent=J,o.testProp=function(a){return h([a])},o.testAllProps=j,o.testStyles=H,o.prefixed=function(a,b,c){return b?j(a,b,c):j(a,"pfx")},q.className=q.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(p?" js "+F.join(" "):""),o}(this,this.document); diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/normalize.css b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/normalize.css new file mode 100644 index 0000000000..458eea1ea3 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/normalize.css @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitContentSlider.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitContentSlider.html new file mode 100644 index 0000000000..e48d25a0db --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitContentSlider.html @@ -0,0 +1,19 @@ + + + + +wicket-foundation + + + + + +
    +

    +

    +
    + +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitContentSlider.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitContentSlider.java new file mode 100644 index 0000000000..8417051041 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitContentSlider.java @@ -0,0 +1,35 @@ +package org.wicketstuff.foundation.orbitslider; + +import java.util.List; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.markup.repeater.AbstractRepeater; +import org.apache.wicket.model.IModel; + +public class FoundationOrbitContentSlider extends OrbitSliderBase { + + private static final long serialVersionUID = 1L; + + public FoundationOrbitContentSlider(String id, IModel> itemsModel) { + super(id, itemsModel); + } + + @SuppressWarnings("unchecked") + @Override + protected AbstractRepeater createRepeater(String id) { + return new ListView(id, (IModel>)getDefaultModel()) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + item.add(new AttributeModifier("data-orbit-slide", item.getModelObject().getName())); + item.add(new Label("heading", item.getModelObject().getHeading())); + item.add(new Label("subheading", item.getModelObject().getSubheading())); + } + }; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSlider.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSlider.html new file mode 100644 index 0000000000..e11663392e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSlider.html @@ -0,0 +1,17 @@ + + + + +wicket-foundation + + + + + +
    + +
    +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSlider.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSlider.java new file mode 100644 index 0000000000..d00f72d935 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSlider.java @@ -0,0 +1,56 @@ +package org.wicketstuff.foundation.orbitslider; + +import java.util.List; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.image.Image; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.markup.repeater.AbstractRepeater; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.util.Attribute; + +public class FoundationOrbitSlider extends OrbitSliderBase { + + private static final long serialVersionUID = 1L; + + public FoundationOrbitSlider(String id, IModel> itemsModel) { + super(id, itemsModel); + } + + @SuppressWarnings("unchecked") + @Override + protected AbstractRepeater createRepeater(String id) { + return new ListView(id, (IModel>)getDefaultModel()) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + item.add(new AttributeModifier("data-orbit-slide", item.getModelObject().getName())); + item.add(new Image("img", item.getModelObject().getResource())); + CaptionContainer container = new CaptionContainer("captionContainer"); + item.add(container); + container.add(new Label("caption", item.getModelObject().getCaption())); + } + }; + } + + private static class CaptionContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public CaptionContainer(String id) { + super(id); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addClass(tag, "orbit-caption"); + super.onComponentTag(tag); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSliderAjaxLink.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSliderAjaxLink.java new file mode 100644 index 0000000000..cb9bb59566 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSliderAjaxLink.java @@ -0,0 +1,36 @@ +package org.wicketstuff.foundation.orbitslider; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.util.Attribute; + +public class FoundationOrbitSliderAjaxLink extends AjaxLink { + + private static final long serialVersionUID = 1L; + + private IModel slideNameModel; + + public FoundationOrbitSliderAjaxLink(String id, IModel slideNameModel) { + super(id); + this.slideNameModel = slideNameModel; + } + + @Override + public void onClick(AjaxRequestTarget target) { + // NOP + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addAttribute(tag, "data-orbit-link", slideNameModel.getObject()); + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + slideNameModel.detach(); + super.onDetach(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderBase.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderBase.html new file mode 100644 index 0000000000..84bf6b8915 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderBase.html @@ -0,0 +1,18 @@ + + + + +wicket-foundation + + + + +
      +
    • + +
    • +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderBase.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderBase.java new file mode 100644 index 0000000000..5d70d71ed0 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderBase.java @@ -0,0 +1,38 @@ +package org.wicketstuff.foundation.orbitslider; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.repeater.AbstractRepeater; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.component.FoundationJsPanel; +import org.wicketstuff.foundation.util.Attribute; + +public abstract class OrbitSliderBase extends FoundationJsPanel { + + private static final long serialVersionUID = 1L; + + public OrbitSliderBase(String id, IModel model) { + super(id, model); + OrbitSliderContainer container = new OrbitSliderContainer("container"); + add(container); + AbstractRepeater repeater = createRepeater("item"); + container.add(repeater); + } + + protected abstract AbstractRepeater createRepeater(String id); + + private static class OrbitSliderContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public OrbitSliderContainer(String id) { + super(id); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addAttribute(tag, "data-orbit"); + super.onComponentTag(tag); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderContent.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderContent.java new file mode 100644 index 0000000000..9267c9a1b6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderContent.java @@ -0,0 +1,26 @@ +package org.wicketstuff.foundation.orbitslider; + +public class OrbitSliderContent { + + private String name; + private String heading; + private String subheading; + + public OrbitSliderContent(String name, String heading, String subheading) { + this.name = name; + this.heading = heading; + this.subheading = subheading; + } + + public String getName() { + return name; + } + + public String getHeading() { + return heading; + } + + public String getSubheading() { + return subheading; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderItem.java new file mode 100644 index 0000000000..f3521bc413 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/orbitslider/OrbitSliderItem.java @@ -0,0 +1,28 @@ +package org.wicketstuff.foundation.orbitslider; + +import org.apache.wicket.request.resource.ResourceReference; + +public class OrbitSliderItem { + + private String name; + private ResourceReference resource; + private String caption; + + public OrbitSliderItem(String name, ResourceReference resource, String caption) { + this.name = name; + this.resource = resource; + this.caption = caption; + } + + public ResourceReference getResource() { + return resource; + } + + public String getCaption() { + return caption; + } + + public String getName() { + return name; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/FoundationPricingTable.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/FoundationPricingTable.html new file mode 100644 index 0000000000..0c0763d4ce --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/FoundationPricingTable.html @@ -0,0 +1,16 @@ + + + + +wicket-foundation + + + + +
      +
    • +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/FoundationPricingTable.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/FoundationPricingTable.java new file mode 100644 index 0000000000..7403cfc31b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/FoundationPricingTable.java @@ -0,0 +1,65 @@ +package org.wicketstuff.foundation.pricingtable; + +import java.util.List; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * + * Pricing table component. + * + * Supports simple string content and complex panel content types. + * + */ +public abstract class FoundationPricingTable extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + public FoundationPricingTable(String id, IModel> itemsModel) { + super(id); + + PricingTableContainer container = new PricingTableContainer("container"); + add(container); + + container.add(new ListView("item", itemsModel) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + if (item.getModelObject().getContent() != null) { + item.add(new Label("content", item.getModelObject().getContent())); + } else { + item.add(FoundationPricingTable.this.createContent(item.getIndex(), "content", item.getModel())); + } + item.add(new AttributeModifier("class", StringUtil.EnumNameToCssClassName(item.getModelObject().getItemType().name()))); + } + }); + } + + public abstract WebMarkupContainer createContent(int idx, String id, IModel model); + + private static class PricingTableContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public PricingTableContainer(String id) { + super(id); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addClass(tag, "pricing-table"); + super.onComponentTag(tag); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableButtonPanel.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableButtonPanel.html new file mode 100644 index 0000000000..6d00f3d17a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableButtonPanel.html @@ -0,0 +1,14 @@ + + + + +wicket-foundation + + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableButtonPanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableButtonPanel.java new file mode 100644 index 0000000000..71db8cbdde --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableButtonPanel.java @@ -0,0 +1,43 @@ +package org.wicketstuff.foundation.pricingtable; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.util.Attribute; + +/** + * + * Simple button panel for pricing table. + * + */ +public abstract class PricingTableButtonPanel extends Panel { + + private static final long serialVersionUID = 1L; + + public PricingTableButtonPanel(String id, IModel buttonTextModel) { + super(id); + + AjaxLink btn = new AjaxLink("btn") { + + private static final long serialVersionUID = 1L; + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addClass(tag, "button"); + super.onComponentTag(tag); + } + + @Override + public void onClick(AjaxRequestTarget target) { + PricingTableButtonPanel.this.onClick(target); + } + }; + add(btn); + btn.add(new Label("btnText", buttonTextModel)); + } + + public abstract void onClick(AjaxRequestTarget target); +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableItem.java new file mode 100644 index 0000000000..9132cea34b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableItem.java @@ -0,0 +1,29 @@ +package org.wicketstuff.foundation.pricingtable; + +/** + * + * Pricing table item. + * + */ +public class PricingTableItem { + + private PricingTableItemType itemType; + private String content; + + public PricingTableItem(PricingTableItemType itemType) { + this(itemType, null); + } + + public PricingTableItem(PricingTableItemType itemType, String content) { + this.itemType = itemType; + this.content = content; + } + + public PricingTableItemType getItemType() { + return itemType; + } + + public String getContent() { + return content; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableItemType.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableItemType.java new file mode 100644 index 0000000000..78738cc867 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/pricingtable/PricingTableItemType.java @@ -0,0 +1,10 @@ +package org.wicketstuff.foundation.pricingtable; + +/** + * + * Pricing table item type. + * + */ +public enum PricingTableItemType { + TITLE, PRICE, DESCRIPTION, BULLET_ITEM, CTA_BUTTON +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/progressbar/FoundationProgressBar.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/progressbar/FoundationProgressBar.html new file mode 100644 index 0000000000..c070d51616 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/progressbar/FoundationProgressBar.html @@ -0,0 +1,16 @@ + + + + +wicket-foundation + + + + +
    + +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/progressbar/FoundationProgressBar.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/progressbar/FoundationProgressBar.java new file mode 100644 index 0000000000..c2fa9664df --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/progressbar/FoundationProgressBar.java @@ -0,0 +1,113 @@ +package org.wicketstuff.foundation.progressbar; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * A simple way to add progress bars to your layouts. + * http://foundation.zurb.com/docs/components/progress_bars.html + * @author ilkka + * + */ +public class FoundationProgressBar extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationProgressBar. + * @param id - Wicket id. + * @param percent - Percent value to display. + */ + public FoundationProgressBar(String id, int percent) { + this(id, Model.of(new ProgressBarOptions()), Model.of(percent)); + } + + /** + * Create FoundationProgressBar. + * @param id - Wicket id. + * @param options - Options for the progress bar. + * @param percent - Percent value to display. + */ + public FoundationProgressBar(String id, ProgressBarOptions options, int percent) { + this(id, Model.of(options), Model.of(percent)); + } + + /** + * Create FoundationProgressBar. + * @param id - Wicket id. + * @param optionsModel - Model for the progress bar options. + * @param percentModel - Model for the percent value. + */ + public FoundationProgressBar(String id, IModel optionsModel, IModel percentModel) { + super(id); + ProgressContainer progressContainer = new ProgressContainer("progressContainer", optionsModel); + add(progressContainer); + Progress progress = new Progress("progress", percentModel); + progressContainer.add(progress); + } + + private static class ProgressContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + public ProgressContainer(String id, IModel optionsModel) { + super(id); + this.optionsModel = optionsModel; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addClass(tag, "progress"); + ProgressBarOptions options = optionsModel.getObject(); + if (options.getColor() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getColor().name())); + } + if (options.getRadius() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getRadius().name())); + } + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + optionsModel.detach(); + super.onDetach(); + } + } + + private static class Progress extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private IModel percentModel; + + public Progress(String id, IModel percentModel) { + super(id); + this.percentModel = percentModel; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addClass(tag, "meter"); + Integer percent = percentModel.getObject(); + if (percent == null || percent < 0 || percent > 100) { + percent = 100; + } + Attribute.addAttribute(tag, "style", String.format("width:%d%%", percent)); + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + percentModel.detach(); + super.onDetach(); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/progressbar/ProgressBarOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/progressbar/ProgressBarOptions.java new file mode 100644 index 0000000000..3f0633a249 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/progressbar/ProgressBarOptions.java @@ -0,0 +1,48 @@ +package org.wicketstuff.foundation.progressbar; + +import java.io.Serializable; + +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; + +/** + * Options for the FoundationProgressBar. + * @author ilkka + * + */ +public class ProgressBarOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private ButtonColor color; + private ButtonRadius radius; + + public ProgressBarOptions() { + } + + public ProgressBarOptions(ButtonColor color) { + this.color = color; + } + + public ProgressBarOptions(ButtonRadius radius) { + this.radius = radius; + } + + public ButtonColor getColor() { + return color; + } + + public ProgressBarOptions setColor(ButtonColor color) { + this.color = color; + return this; + } + + public ButtonRadius getRadius() { + return radius; + } + + public ProgressBarOptions setRadius(ButtonRadius radius) { + this.radius = radius; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/revealmodal/FoundationRevealModal.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/revealmodal/FoundationRevealModal.html new file mode 100644 index 0000000000..ede7bd0488 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/revealmodal/FoundationRevealModal.html @@ -0,0 +1,16 @@ + + + + +wicket-foundation + + + + + + +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/revealmodal/FoundationRevealModal.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/revealmodal/FoundationRevealModal.java new file mode 100644 index 0000000000..48af0c0f35 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/revealmodal/FoundationRevealModal.java @@ -0,0 +1,98 @@ +package org.wicketstuff.foundation.revealmodal; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.component.FoundationJsPanel; +import org.wicketstuff.foundation.util.Attribute; + +/** + * + * Reveal modal component. + * + */ +public class FoundationRevealModal extends FoundationJsPanel { + + private static final long serialVersionUID = 1L; + + private IModel contentModel; + + /** + * Constructor with no content model. You should override {@link #createContentPanel(String)} + * to create the content you need. + * @param id wicket id + * @param linkTextModel model for link text + */ + public FoundationRevealModal(String id, IModel linkTextModel) { + this(id, linkTextModel, null); + } + + /** + * Constructor with content model. + * @param id wicket id + * @param linkTextModel model for link text + * @param contentModel model for html content + */ + public FoundationRevealModal(String id, IModel linkTextModel, IModel contentModel) { + super(id); + this.contentModel = contentModel; + final WebMarkupContainer content = createContentPanel("modalContent"); + content.add(new AttributeModifier("data-reveal", AttributeModifier.VALUELESS_ATTRIBUTE_ADD)); + content.add(new AttributeAppender("class", "reveal-modal", " ")); + add(content); + + AjaxLink openLink = new AjaxLink("openLink") { + + private static final long serialVersionUID = 1L; + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addAttribute(tag, "data-reveal-id", content.getMarkupId()); + super.onComponentTag(tag); + } + + @Override + public void onClick(AjaxRequestTarget arg0) { + } + }; + add(openLink); + openLink.add(new Label("openLinkText", linkTextModel)); + } + + /** + * Creates content panel. Override this as necessary. + * @param id + * @return + */ + public WebMarkupContainer createContentPanel(String id) { + return new RevealModalContent(id, contentModel); + } + + /** + * + * Default content panel. + * + */ + private static class RevealModalContent extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public RevealModalContent(String id, IModel contentModel) { + super(id, contentModel); + this.setEscapeModelStrings(false); + } + + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) { + this.replaceComponentTagBody(markupStream, openTag, getDefaultModelObjectAsString()); + super.onComponentTagBody(markupStream, openTag); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/FoundationSideNav.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/FoundationSideNav.html new file mode 100644 index 0000000000..fc4e0c3b8d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/FoundationSideNav.html @@ -0,0 +1,19 @@ + + + + +wicket-foundation + + + + +
      +
    • + + +
    • +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/FoundationSideNav.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/FoundationSideNav.java new file mode 100644 index 0000000000..3de73083ac --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/FoundationSideNav.java @@ -0,0 +1,91 @@ +package org.wicketstuff.foundation.sidenav; + +import java.util.List; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; + +/** + * Side nav, like you see on the Foundation docs, is a great way to provide navigation for your entire site, or for + * sections of an individual page. + * http://foundation.zurb.com/docs/components/sidenav.html + * @author ilkka + * + */ +public abstract class FoundationSideNav extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationSideNav. + * @param id - Wicket id. + * @param items - List of side nav items. + */ + public FoundationSideNav(String id, List items) { + this(id, new ListModel<>(items)); + } + + /** + * Create FoundationSideNav. + * @param id - Wicket id. + * @param itemModels - Model for side nav items. + */ + public FoundationSideNav(String id, IModel> itemModels) { + super(id); + SideNavContainer sideNavContainer = new SideNavContainer("sideNavContainer"); + add(sideNavContainer); + sideNavContainer.add(new ListView("sideNavItem", itemModels) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + SideNavItem sideNavItem = item.getModelObject(); + if (sideNavItem.isDivider()) { + item.add(new AttributeModifier("class", "divider")); + } + else if (sideNavItem.isActive()) { + item.add(new AttributeModifier("class", "active")); + } + else if (sideNavItem.isHeader()) { + item.add(new AttributeModifier("class", "heading")); + } + AbstractLink sideNavItemLink = createLink("sideNavItemLink", item.getIndex()); + item.add(sideNavItemLink); + sideNavItemLink.add(new Label("sideNavItemText", sideNavItem.getTitle())); + if (sideNavItem.isDivider() || sideNavItem.isHeader()) { + sideNavItemLink.setVisible(false); + } + Label sideNavHeader = new Label("sideNavHeader", sideNavItem.getTitle()); + sideNavHeader.setVisible(sideNavItem.isHeader()); + item.add(sideNavHeader); + } + }); + } + + public abstract AbstractLink createLink(String id, int idx); + + private static class SideNavContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public SideNavContainer(String id) { + super(id); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.setClass(tag, "side-nav"); + super.onComponentTag(tag); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavDividerItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavDividerItem.java new file mode 100644 index 0000000000..8629947cf8 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavDividerItem.java @@ -0,0 +1,32 @@ +package org.wicketstuff.foundation.sidenav; + +/** + * SideNavItem implementation for divider items. + * @author ilkka + * + */ +public class SideNavDividerItem implements SideNavItem { + + private static final long serialVersionUID = 1L; + + @Override + public boolean isDivider() { + return true; + } + + @Override + public boolean isHeader() { + return false; + } + + @Override + public boolean isActive() { + return false; + } + + @Override + public String getTitle() { + return ""; + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavHeaderItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavHeaderItem.java new file mode 100644 index 0000000000..b12aa47e25 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavHeaderItem.java @@ -0,0 +1,37 @@ +package org.wicketstuff.foundation.sidenav; + +/** + * SideNavItem implementation for header items. + * @author ilkka + * + */ +public class SideNavHeaderItem implements SideNavItem { + + private static final long serialVersionUID = 1L; + + private String title; + + public SideNavHeaderItem(String title) { + this.title = title; + } + + @Override + public boolean isDivider() { + return false; + } + + @Override + public boolean isHeader() { + return true; + } + + @Override + public boolean isActive() { + return false; + } + + @Override + public String getTitle() { + return title; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavItem.java new file mode 100644 index 0000000000..7813812e78 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavItem.java @@ -0,0 +1,17 @@ +package org.wicketstuff.foundation.sidenav; + +import java.io.Serializable; + +/** + * Interface for side nav items. + * @author ilkka + * + */ +public interface SideNavItem extends Serializable { + + boolean isDivider(); + boolean isHeader(); + boolean isActive(); + String getTitle(); + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavLinkItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavLinkItem.java new file mode 100644 index 0000000000..1af4625dcf --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/sidenav/SideNavLinkItem.java @@ -0,0 +1,45 @@ +package org.wicketstuff.foundation.sidenav; + +import java.io.Serializable; + +/** + * SideNavItem implementation for links. + * @author ilkka + * + */ +public class SideNavLinkItem implements SideNavItem, Serializable { + + private static final long serialVersionUID = 1L; + + private boolean active; + private String title; + + public SideNavLinkItem(String title) { + this.title = title; + } + + public SideNavLinkItem(String title, boolean active) { + this.active = active; + this.title = title; + } + + @Override + public boolean isDivider() { + return false; + } + + @Override + public boolean isHeader() { + return false; + } + + @Override + public boolean isActive() { + return active; + } + + @Override + public String getTitle() { + return title; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/splitbutton/FoundationSplitButton.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/splitbutton/FoundationSplitButton.html new file mode 100644 index 0000000000..df309bf9a6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/splitbutton/FoundationSplitButton.html @@ -0,0 +1,15 @@ + + + + +wicket-foundation + + + + +
      +
    • +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/splitbutton/FoundationSplitButton.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/splitbutton/FoundationSplitButton.java new file mode 100644 index 0000000000..9e186e1afc --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/splitbutton/FoundationSplitButton.java @@ -0,0 +1,99 @@ +package org.wicketstuff.foundation.splitbutton; + +import java.util.List; + +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.component.FoundationJsPanel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +public abstract class FoundationSplitButton extends FoundationJsPanel { + + private static final long serialVersionUID = 1L; + + public FoundationSplitButton(String id, String buttonTitle, List linkTitles) { + this(id, Model.of(buttonTitle), new ListModel<>(linkTitles)); + } + + public FoundationSplitButton(String id, String buttonTitle, List linkTitles, SplitButtonOptions options) { + this(id, Model.of(buttonTitle), new ListModel<>(linkTitles), Model.of(options)); + } + + public FoundationSplitButton(String id, IModel buttonTitleModel, IModel> linkTitleModels) { + this(id, buttonTitleModel, linkTitleModels, Model.of(new SplitButtonOptions())); + } + + public FoundationSplitButton(String id, IModel buttonTitleModel, IModel> linkTitleModels, IModel optionsModel) { + super(id); + final DropdownContainer dropdownContainer = new DropdownContainer("dropdown", linkTitleModels); + add(dropdownContainer); + AbstractLink button = createButton("button"); + add(button); + button.add(new AttributeAppender("class", "button").setSeparator(" ")); + button.add(new AttributeAppender("class", "split").setSeparator(" ")); + SplitButtonOptions options = optionsModel.getObject(); + if (options.getColor() != null) { + button.add(new AttributeAppender("class", StringUtil.EnumNameToCssClassName(options.getColor().name())).setSeparator(" ")); + } + if (options.getRadius() != null) { + button.add(new AttributeAppender("class", StringUtil.EnumNameToCssClassName(options.getRadius().name())).setSeparator(" ")); + } + if (options.getSize() != null) { + button.add(new AttributeAppender("class", StringUtil.EnumNameToCssClassName(options.getSize().name())).setSeparator(" ")); + } + button.add(new Label("buttonText", buttonTitleModel)); + button.add(new WebMarkupContainer("buttonData") { + + private static final long serialVersionUID = 1L; + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addAttribute(tag, "data-dropdown", dropdownContainer.getMarkupId()); + super.onComponentTag(tag); + } + }); + } + + public abstract AbstractLink createButton(String id); + + public abstract AbstractLink createDropdownLink(String id, int idx); + + private class DropdownContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public DropdownContainer(String id, IModel> linkTitleModels) { + super(id); + this.setOutputMarkupId(true); + + ListView lv = new ListView("dropdownItem", linkTitleModels) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + AbstractLink dropdownItemLink = FoundationSplitButton.this.createDropdownLink("dropdownItemLink", item.getIndex()); + item.add(dropdownItemLink); + dropdownItemLink.add(new Label("dropdownItemText", item.getModel())); + } + }; + add(lv); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addAttribute(tag, "data-dropdown-content"); + Attribute.addClass(tag, "f-dropdown"); + super.onComponentTag(tag); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/splitbutton/SplitButtonOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/splitbutton/SplitButtonOptions.java new file mode 100644 index 0000000000..0dd61a3ff6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/splitbutton/SplitButtonOptions.java @@ -0,0 +1,56 @@ +package org.wicketstuff.foundation.splitbutton; + +import java.io.Serializable; + +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.button.ButtonSize; + +public class SplitButtonOptions implements Serializable { + + private ButtonSize size; + private ButtonColor color; + private ButtonRadius radius; + + public SplitButtonOptions() { + } + + public SplitButtonOptions(ButtonSize size) { + this.size = size; + } + + public SplitButtonOptions(ButtonColor color) { + this.color = color; + } + + public SplitButtonOptions(ButtonRadius radius) { + this.radius = radius; + } + + public ButtonSize getSize() { + return size; + } + + public SplitButtonOptions setSize(ButtonSize size) { + this.size = size; + return this; + } + + public ButtonColor getColor() { + return color; + } + + public SplitButtonOptions setColor(ButtonColor color) { + this.color = color; + return this; + } + + public ButtonRadius getRadius() { + return radius; + } + + public SplitButtonOptions setRadius(ButtonRadius radius) { + this.radius = radius; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/subnav/FoundationSubNav.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/subnav/FoundationSubNav.html new file mode 100644 index 0000000000..0d70728d2f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/subnav/FoundationSubNav.html @@ -0,0 +1,19 @@ + + + + +wicket-foundation + + + + +
    +
    +
    + +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/subnav/FoundationSubNav.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/subnav/FoundationSubNav.java new file mode 100644 index 0000000000..71990ab772 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/subnav/FoundationSubNav.java @@ -0,0 +1,83 @@ +package org.wicketstuff.foundation.subnav; + +import java.util.List; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; + +/** + * This simple sub nav is great for moving between different states of a page. We use these + * frequently to show iterations of something, typically by date, but they're also handy for filters like these. + * http://foundation.zurb.com/docs/components/subnav.html + * @author ilkka + * + */ +public abstract class FoundationSubNav extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationSubNav. + * @param id - Wicket id. + * @param title - Sub nav title. + * @param items - Items for the sub nav. + */ + public FoundationSubNav(String id, String title, List items) { + this(id, Model.of(title), new ListModel<>(items)); + } + + /** + * Create FoundationSubNav. + * @param id - Wicket id. + * @param titleModel - Model for the sub nav title. + * @param itemsModel - Model for the sub nav items. + */ + public FoundationSubNav(String id, IModel titleModel, IModel> itemsModel) { + super(id); + SubNavContainer subNavContainer = new SubNavContainer("subNavContainer"); + add(subNavContainer); + subNavContainer.add(new Label("subNavTitle", titleModel)); + subNavContainer.add(new ListView("subNavItem", itemsModel) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem item) { + SubNavItem subNavItem = item.getModelObject(); + if (subNavItem.isActive()) { + item.add(new AttributeModifier("class", "active")); + } + AbstractLink subNavItemLink = createLink("subNavItemLink", item.getIndex()); + item.add(subNavItemLink); + subNavItemLink.add(new Label("subNavItemText", subNavItem.getTitle())); + } + }); + } + + public abstract AbstractLink createLink(String id, int idx); + + private static class SubNavContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public SubNavContainer(String id) { + super(id); + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.setClass(tag, "sub-nav"); + super.onComponentTag(tag); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/subnav/SubNavItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/subnav/SubNavItem.java new file mode 100644 index 0000000000..4b4ba2e3b6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/subnav/SubNavItem.java @@ -0,0 +1,43 @@ +package org.wicketstuff.foundation.subnav; + +import java.io.Serializable; + +/** + * Item for FoundationSubNav. + * @author ilkka + * + */ +public class SubNavItem implements Serializable { + + private static final long serialVersionUID = 1L; + + private String title; + private boolean active; + + public SubNavItem(String title) { + this.title = title; + } + + public SubNavItem(String title, boolean active) { + this.title = title; + this.active = active; + } + + public String getTitle() { + return title; + } + + public SubNavItem setTitle(String title) { + this.title = title; + return this; + } + + public boolean isActive() { + return active; + } + + public SubNavItem setActive(boolean active) { + this.active = active; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/thumbnail/FoundationThumbnail.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/thumbnail/FoundationThumbnail.html new file mode 100644 index 0000000000..b70f3560ae --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/thumbnail/FoundationThumbnail.html @@ -0,0 +1,16 @@ + + + + +wicket-foundation + + + + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/thumbnail/FoundationThumbnail.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/thumbnail/FoundationThumbnail.java new file mode 100644 index 0000000000..de0294569d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/thumbnail/FoundationThumbnail.java @@ -0,0 +1,40 @@ +package org.wicketstuff.foundation.thumbnail; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.image.Image; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.request.flow.RedirectToUrlException; +import org.apache.wicket.request.resource.ResourceReference; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; + +/** + * + * Thumbnail component. + * + */ +public class FoundationThumbnail extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + public FoundationThumbnail(String id, final ResourceReference fullImage, ResourceReference thumbnail) { + super(id); + Link link = new Link("fullImageLink") { + + private static final long serialVersionUID = 1L; + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addClass(tag, "th"); + super.onComponentTag(tag); + } + + @Override + public void onClick() { + throw new RedirectToUrlException(urlFor(fullImage, null).toString()); + } + }; + add(link); + link.add(new Image("thumbnail", thumbnail)); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/FoundationTooltipBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/FoundationTooltipBehavior.java new file mode 100644 index 0000000000..f565b75cfa --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/FoundationTooltipBehavior.java @@ -0,0 +1,83 @@ +package org.wicketstuff.foundation.tooltip; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.lang.Args; +import org.wicketstuff.foundation.behavior.FoundationJsBehavior; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Tooltips are a quick way to provide extended information on a term or action on a page. + * http://foundation.zurb.com/docs/components/tooltips.html + * @author ilkka + * + */ +public class FoundationTooltipBehavior extends FoundationJsBehavior { + + private static final long serialVersionUID = 1L; + + private IModel titleModel; + private IModel optionsModel; + + /** + * Create FoundationTooltipBehavior. + * @param title - Title text for the tooltip. + */ + public FoundationTooltipBehavior(String title) { + this(title, new TooltipOptions()); + } + + /** + * Create FoundationTooltipBehavior. + * @param title - Title text for the tooltip. + * @param options - Options for the tooltip. + */ + public FoundationTooltipBehavior(String title, TooltipOptions options) { + this(Model.of(title), Model.of(options)); + } + + /** + * Create FoundationTooltipBehavior. + * @param titleModel - Model for the tooltip title text. + * @param optionsModel - Model for the tooltip options. + */ + public FoundationTooltipBehavior(IModel titleModel, IModel optionsModel) { + Args.notNull(titleModel, "titleModel"); + Args.notNull(optionsModel, "optionsModel"); + this.titleModel = titleModel; + this.optionsModel = optionsModel; + } + + @Override + public void onComponentTag(Component component, ComponentTag tag) { + Attribute.addAttribute(tag, "data-tooltip"); + Attribute.addAttribute(tag, "aria-haspopup", true); + Attribute.addClass(tag, "has-tip"); + Attribute.addAttribute(tag, "title", titleModel.getObject()); + TooltipOptions options = optionsModel.getObject(); + if (options.isDisableForTouch()) { + Attribute.addDataOptions(tag, "disable_for_touch:true"); + } + if (options.getPosition() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getPosition().name())); + } + if (options.getRadius() != null) { + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(options.getRadius().name())); + } + if (options.getVisibility() != null) { + String value = "show_on:" + StringUtil.EnumNameToCssClassName(options.getVisibility().name()); + Attribute.addDataOptions(tag, value); + } + super.onComponentTag(component, tag); + } + + @Override + public void detach(Component component) { + titleModel.detach(); + optionsModel.detach(); + super.detach(component); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/TooltipOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/TooltipOptions.java new file mode 100644 index 0000000000..6db9284e59 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/TooltipOptions.java @@ -0,0 +1,75 @@ +package org.wicketstuff.foundation.tooltip; + +import java.io.Serializable; + +import org.wicketstuff.foundation.button.ButtonRadius; + +/** + * Options for tooltip. + * @author ilkka + * + */ +public class TooltipOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private boolean disableForTouch; + private TooltipPosition position; + private ButtonRadius radius; + private TooltipVisibility visibility; + + public TooltipOptions() { + } + + public TooltipOptions(boolean disableForTouch) { + this.disableForTouch = disableForTouch; + } + + public TooltipOptions(TooltipPosition position) { + this.position = position; + } + + public TooltipOptions(ButtonRadius radius) { + this.radius = radius; + } + + public TooltipOptions(TooltipVisibility visibility) { + this.visibility = visibility; + } + + public boolean isDisableForTouch() { + return disableForTouch; + } + + public TooltipOptions setDisableForTouch(boolean disableForTouch) { + this.disableForTouch = disableForTouch; + return this; + } + + public TooltipPosition getPosition() { + return position; + } + + public TooltipOptions setPosition(TooltipPosition position) { + this.position = position; + return this; + } + + public ButtonRadius getRadius() { + return radius; + } + + public TooltipOptions setRadius(ButtonRadius radius) { + this.radius = radius; + return this; + } + + public TooltipVisibility getVisibility() { + return visibility; + } + + public TooltipOptions setVisibility(TooltipVisibility visibility) { + this.visibility = visibility; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/TooltipPosition.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/TooltipPosition.java new file mode 100644 index 0000000000..7fd40c7118 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/TooltipPosition.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.tooltip; + +public enum TooltipPosition { + TIP_TOP, TIP_LEFT, TIP_RIGHT; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/TooltipVisibility.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/TooltipVisibility.java new file mode 100644 index 0000000000..99b4128605 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/tooltip/TooltipVisibility.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.tooltip; + +public enum TooltipVisibility { + SMALL, MEDIUM, LARGE; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBar.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBar.html new file mode 100644 index 0000000000..403b258a35 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBar.html @@ -0,0 +1,24 @@ + + + + +wicket-foundation + + + +
    + +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBar.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBar.java new file mode 100644 index 0000000000..0aba588139 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBar.java @@ -0,0 +1,169 @@ +package org.wicketstuff.foundation.topbar; + +import java.util.List; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.repeater.RepeatingView; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; +import org.wicketstuff.foundation.component.FoundationJsPanel; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * The Foundation Top Bar gives you a great way to display a complex navigation bar on small, medium or large screens. + * http://foundation.zurb.com/docs/components/topbar.html + * @author ilkka + * + */ +public abstract class FoundationTopBar extends FoundationJsPanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationTopBar. + * @param id - Wicket id. + * @param rightItems - Items on the right. + * @param leftItems - Items on the left. + */ + public FoundationTopBar(String id, List rightItems, List leftItems) { + this(id, new TopBarOptions(), rightItems, leftItems); + } + + /** + * Create FoundationTopBar. + * @param id - Wicket id. + * @param options - Options for the top bar. + * @param rightItems - Items on the right. + * @param leftItems - Items on the left. + */ + public FoundationTopBar(String id, TopBarOptions options, List rightItems, List leftItems) { + this(id, Model.of(options), new ListModel<>(rightItems), new ListModel<>(leftItems)); + } + + /** + * Create FoundationTopBar. + * @param id - Wicket id. + * @param optionsModel - Model for the top bar options. + * @param rightItemsModel - Model for the items on the right. + * @param leftItemsModel - Model for the items on the left. + */ + public FoundationTopBar(String id, IModel optionsModel, IModel> rightItemsModel, + IModel> leftItemsModel) { + super(id); + TopBarContainer topBarContainer = new TopBarContainer("topBarContainer", optionsModel); + add(topBarContainer); + TopBar topBar = new TopBar("topBar", optionsModel); + topBarContainer.add(topBar); + WebMarkupContainer titleContainer = createTitleContainer("titleContainer"); + topBar.add(titleContainer); + topBar.add(new TopBarItemContainer("rightContainer", rightItemsModel)); + topBar.add(new TopBarItemContainer("leftContainer", leftItemsModel)); + } + + public abstract WebMarkupContainer createTitleContainer(String id); + + public abstract AbstractLink createLink(String id, String itemId); + + private class TopBarItemContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + public TopBarItemContainer(String id, final IModel> itemsModel) { + super(id); + add(new RepeatingView("item") { + + private static final long serialVersionUID = 1L; + + @Override + protected void onPopulate() { + this.removeAll(); + for (TopBarItem item: itemsModel.getObject()) { + + TopBarRecursiveLinkPanel linkPanel = new TopBarRecursiveLinkPanel(newChildId(), item) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createLink(String id, String itemId) { + return FoundationTopBar.this.createLink(id, itemId); + } + }; + add(linkPanel); + } + } + }); + } + } + + private static class TopBarContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + public TopBarContainer(String id, IModel optionsModel) { + super(id); + this.optionsModel = optionsModel; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + TopBarOptions options = optionsModel.getObject(); + if (options.isFixed()) { + Attribute.addClass(tag, "fixed"); + } + if (options.isContainToGrid()) { + Attribute.addClass(tag, "contain-to-grid"); + } + if (options.isSticky()) { + Attribute.addClass(tag, "sticky"); + } + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + optionsModel.detach(); + super.onDetach(); + } + } + + private static class TopBar extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private IModel optionsModel; + + public TopBar(String id, IModel optionsModel) { + super(id); + this.optionsModel = optionsModel; + } + + @Override + protected void onComponentTag(ComponentTag tag) { + Attribute.addClass(tag, "top-bar"); + Attribute.addAttribute(tag, "data-topbar"); + Attribute.addAttribute(tag, "role", "navigation"); + TopBarOptions options = optionsModel.getObject(); + if (options.isClickable()) { + Attribute.addDataOptions(tag, "is_hover:false"); + } + if (!options.getStickySizes().isEmpty()) { + for (TopBarStickySize size : options.getStickySizes()) { + Attribute.addDataOptions(tag, "sticky_on:" + StringUtil.EnumNameToCssClassName(size.name())); + } + } + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + optionsModel.detach(); + super.onDetach(); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBarTitle.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBarTitle.html new file mode 100644 index 0000000000..27c9f20207 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBarTitle.html @@ -0,0 +1,17 @@ + + + + +wicket-foundation + + + +
  4. +

    + +

    +
  5. +
  6. + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBarTitle.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBarTitle.java new file mode 100644 index 0000000000..728a824f6e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/FoundationTopBarTitle.java @@ -0,0 +1,72 @@ +package org.wicketstuff.foundation.topbar; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.util.Attribute; + +/** + * Title section for the FoundationTopBar. + * @author ilkka + * + */ +public abstract class FoundationTopBarTitle extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + /** + * Create FoundationTopBarTitle. + * @param id - Wicket id. + * @param titleModel - Model for the title. + * @param menuLayoutModel - Model for the menu layout. + * @param menuTitleModel - Model for the menu title. + */ + public FoundationTopBarTitle(String id, IModel titleModel, + IModel menuLayoutModel, IModel menuTitleModel) { + super(id); + AbstractLink link = createTitleLink("titleLink"); + add(link); + link.add(new Label("titleLabel", titleModel)); + add(new FoundationTopBarMenuContainer("menuContainer", menuLayoutModel, menuTitleModel)); + } + + public abstract AbstractLink createTitleLink(String id); + + private static class FoundationTopBarMenuContainer extends WebMarkupContainer { + + private static final long serialVersionUID = 1L; + + private IModel menuLayoutModel; + + public FoundationTopBarMenuContainer(String id, IModel menuLayoutModel, + IModel menuTitleModel) { + super(id); + this.menuLayoutModel = menuLayoutModel; + Label menuTitle = new Label("menuTitle", menuTitleModel); + add(menuTitle); + TopBarMenuLayout layout = menuLayoutModel.getObject(); + if (!layout.equals(TopBarMenuLayout.TITLE) && !layout.equals(TopBarMenuLayout.TITLE_AND_ICON)) { + menuTitle.setVisible(false); + } + } + + @Override + protected void onComponentTag(ComponentTag tag) { + TopBarMenuLayout layout = menuLayoutModel.getObject(); + Attribute.addClass(tag, "toggle-topbar"); + if (layout.equals(TopBarMenuLayout.ICON) || layout.equals(TopBarMenuLayout.TITLE_AND_ICON)) { + Attribute.addClass(tag, "menu-icon"); + } + super.onComponentTag(tag); + } + + @Override + protected void onDetach() { + menuLayoutModel.detach(); + super.onDetach(); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/SimpleTopBarItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/SimpleTopBarItem.java new file mode 100644 index 0000000000..3952fb1646 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/SimpleTopBarItem.java @@ -0,0 +1,67 @@ +package org.wicketstuff.foundation.topbar; + +import java.util.ArrayList; +import java.util.List; + +/** + * Simple TopBarItem implementation. + * @author ilkka + * + */ +public class SimpleTopBarItem implements TopBarItem { + + private static final long serialVersionUID = 1L; + + private String itemId; + private String text; + private boolean active; + private boolean isLabel; + + private List children = new ArrayList<>(); + + public SimpleTopBarItem(String itemId, String text) { + this(itemId, text, false, false); + } + + public SimpleTopBarItem(String itemId, String text, boolean active, boolean isLabel) { + this.itemId = itemId; + this.text = text; + this.active = active; + this.isLabel = isLabel; + } + + @Override + public String getItemId() { + return itemId; + } + + @Override + public String getText() { + return text; + } + + @Override + public List getChildren() { + return children; + } + + @Override + public boolean hasChildren() { + return children.size() > 0; + } + + @Override + public void addChild(TopBarItem item) { + children.add(item); + } + + @Override + public boolean isActive() { + return active; + } + + @Override + public boolean isLabel() { + return isLabel; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarItem.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarItem.java new file mode 100644 index 0000000000..c94227dc2d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarItem.java @@ -0,0 +1,21 @@ +package org.wicketstuff.foundation.topbar; + +import java.io.Serializable; +import java.util.List; + +/** + * Interface for top bar items. + * @author ilkka + * + */ +public interface TopBarItem extends Serializable { + + String getItemId(); + String getText(); + boolean isActive(); + boolean isLabel(); + List getChildren(); + boolean hasChildren(); + void addChild(TopBarItem item); + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarMenuLayout.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarMenuLayout.java new file mode 100644 index 0000000000..04ce955ebc --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarMenuLayout.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.topbar; + +public enum TopBarMenuLayout { + TITLE_AND_ICON, TITLE, ICON; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarOptions.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarOptions.java new file mode 100644 index 0000000000..b4f799f1f7 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarOptions.java @@ -0,0 +1,65 @@ +package org.wicketstuff.foundation.topbar; + +import java.io.Serializable; +import java.util.EnumSet; + +/** + * Options for the FoundationTopBar. + * @author ilkka + * + */ +public class TopBarOptions implements Serializable { + + private static final long serialVersionUID = 1L; + + private boolean fixed; + private boolean containToGrid; + private boolean sticky; + private EnumSet stickySizes = EnumSet.noneOf(TopBarStickySize.class); + private boolean clickable; + + public boolean isFixed() { + return fixed; + } + + public TopBarOptions setFixed(boolean fixed) { + this.fixed = fixed; + return this; + } + + public boolean isContainToGrid() { + return containToGrid; + } + + public TopBarOptions setContainToGrid(boolean containToGrid) { + this.containToGrid = containToGrid; + return this; + } + + public boolean isSticky() { + return sticky; + } + + public TopBarOptions setSticky(boolean sticky) { + this.sticky = sticky; + return this; + } + + public EnumSet getStickySizes() { + return stickySizes; + } + + public TopBarOptions setStickySizes(EnumSet stickySizes) { + this.stickySizes = stickySizes; + return this; + } + + public boolean isClickable() { + return clickable; + } + + public TopBarOptions setClickable(boolean clickable) { + this.clickable = clickable; + return this; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarRecursiveLinkPanel.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarRecursiveLinkPanel.html new file mode 100644 index 0000000000..744a7462fc --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarRecursiveLinkPanel.html @@ -0,0 +1,16 @@ + + + + +wicket-foundation + + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarRecursiveLinkPanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarRecursiveLinkPanel.java new file mode 100644 index 0000000000..a34f264789 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarRecursiveLinkPanel.java @@ -0,0 +1,73 @@ +package org.wicketstuff.foundation.topbar; + +import java.util.Iterator; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.markup.repeater.RepeatingView; + +abstract class TopBarRecursiveLinkPanel extends Panel { + + private static final long serialVersionUID = 1L; + + public TopBarRecursiveLinkPanel(String id, TopBarItem topBarItem) { + super(id); + if (!topBarItem.hasChildren()) { + // label + WebMarkupContainer labelContainer = new WebMarkupContainer("labelContainer"); + add(labelContainer); + labelContainer.add(new Label("label", topBarItem.getText())); + labelContainer.setVisible(topBarItem.isLabel()); + // link + AbstractLink link = createLink("link", topBarItem.getItemId()); + add(link); + link.add(new Label("text", topBarItem.getText())); + link.setVisible(!topBarItem.isLabel()); + // dropdown + WebMarkupContainer dropdown = new WebMarkupContainer("dropdown"); + dropdown.setVisible(false); + add(dropdown); + dropdown.add(new WebMarkupContainer("item")); + } else { + add(new AttributeModifier("class", "has-dropdown")); + // label + WebMarkupContainer labelContainer = new WebMarkupContainer("labelContainer"); + add(labelContainer); + labelContainer.add(new Label("label", topBarItem.getText())); + labelContainer.setVisible(topBarItem.isLabel()); + // link + WebMarkupContainer link = new WebMarkupContainer("link"); + add(link); + link.add(new Label("text", topBarItem.getText())); + link.setVisible(!topBarItem.isLabel()); + // dropdown + WebMarkupContainer dropdown = new WebMarkupContainer("dropdown"); + add(dropdown); + dropdown.setVisible(!topBarItem.isLabel()); + RepeatingView rv = new RepeatingView("item"); + dropdown.add(rv); + Iterator childIterator = topBarItem.getChildren().iterator(); + while (childIterator.hasNext()) { + final TopBarItem child = childIterator.next(); + rv.add(new TopBarRecursiveLinkPanel(rv.newChildId(), child) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createLink(String id, String itemId) { + return TopBarRecursiveLinkPanel.this.createLink(id, itemId); + } + }); + } + } + if (topBarItem.isActive()) { + add(new AttributeAppender("class", "active")); + } + } + + public abstract AbstractLink createLink(String id, String itemId); +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarStickySize.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarStickySize.java new file mode 100644 index 0000000000..f274fd3ca6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/topbar/TopBarStickySize.java @@ -0,0 +1,5 @@ +package org.wicketstuff.foundation.topbar; + +public enum TopBarStickySize { + SMALL, MEDIUM, LARGE; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/util/Attribute.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/util/Attribute.java new file mode 100644 index 0000000000..40ce11a7e2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/util/Attribute.java @@ -0,0 +1,274 @@ +package org.wicketstuff.foundation.util; + +import java.util.Arrays; +import java.util.StringTokenizer; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.util.lang.Args; +import org.apache.wicket.util.string.StringValue; + +/** + * + * Helper class for HTML attributes. + * + */ +public class Attribute { + + private static String DATA_OPTIONS_SEPARATOR = ";"; + + /** + * Set class attribute value (overwrite) + * @param tag + * @param className + * @return + */ + public static ComponentTag setClass(ComponentTag tag, String className) { + Args.notNull(tag, "tag"); + Args.notNull(className, "className"); + tag.put("class", className); + return tag; + } + + /** + * Append new value to class attribute + * @param tag + * @param className + * @return + */ + public static ComponentTag addClass(ComponentTag tag, String className) { + Args.notNull(tag, "tag"); + Args.notNull(className, "className"); + if (!hasClass(tag, className)) { + String value = tag.getAttribute("class"); + if (value == null) { + tag.put("class", className); + } else { + tag.put("class", value + " " + className); + } + } + return tag; + } + + /** + * Remove single value from class attribute + * @param tag + * @param className + * @return + */ + public static ComponentTag removeClass(ComponentTag tag, String className) { + Args.notNull(tag, "tag"); + Args.notNull(className, "className"); + if (hasClass(tag, className)) { + tag.put("class", removeToken(tag.getAttribute("class"), className, " ")); + } + return tag; + } + + /** + * Check if class attribute has value + * @param tag + * @param className + * @return + */ + public static boolean hasClass(ComponentTag tag, String className) { + Args.notNull(tag, "tag"); + String value = tag.getAttribute("class"); + if (value == null) { + return false; + } + String[] existing = value.split(" "); + return Arrays.asList(existing).contains(className); + } + + /** + * Adds attribute without value + * @param tag + * @param attribute + * @return + */ + public static ComponentTag addAttribute(ComponentTag tag, String attribute) { + Args.notNull(tag, "tag"); + Args.notNull(attribute, "attribute"); + String v = null; + tag.put(attribute, StringValue.valueOf(v)); + return tag; + } + + /** + * Adds attribute with given value + * @param tag + * @param attribute + * @param value + * @return + */ + public static ComponentTag addAttribute(ComponentTag tag, String attribute, String value) { + Args.notNull(tag, "tag"); + Args.notNull(attribute, "attribute"); + Args.notNull(value, "value"); + if (!hasAttribute(tag, attribute)) { + tag.put(attribute, value); + } else { + String previous = getAttribute(tag, attribute); + tag.put(attribute, previous + " " + value); + } + return tag; + } + + /** + * Adds attribute with given value + * @param tag + * @param attribute + * @param value + * @return + */ + public static ComponentTag addAttribute(ComponentTag tag, String attribute, boolean value) { + Args.notNull(tag, "tag"); + Args.notNull(attribute, "attribute"); + Args.notNull(value, "value"); + tag.put(attribute, value); + return tag; + } + + /** + * Adds attribute with given value + * @param tag + * @param attribute + * @param value + * @return + */ + public static ComponentTag addAttribute(ComponentTag tag, String attribute, int value) { + Args.notNull(tag, "tag"); + Args.notNull(attribute, "attribute"); + Args.notNull(value, "value"); + tag.put(attribute, value); + return tag; + } + + /** + * Removes attribute + * @param tag + * @param attribute + * @return + */ + public static ComponentTag removeAttribute(ComponentTag tag, String attribute) { + Args.notNull(tag, "tag"); + Args.notNull(attribute, "attribute"); + tag.remove(attribute); + return tag; + } + + /** + * Test if tag contains attribute + * @param tag + * @param attribute + * @return + */ + public static boolean hasAttribute(ComponentTag tag, String attribute) { + Args.notNull(tag, "tag"); + Args.notNull(attribute, "attribute"); + return tag.toString().contains(attribute); + } + + /** + * Gets attribute value + * @param tag + * @param attribute + * @return + */ + public static String getAttribute(ComponentTag tag, String attribute) { + Args.notNull(tag, "tag"); + Args.notNull(attribute, "attribute"); + return tag.getAttribute(attribute); + } + + /** + * Sets data-options attribute value + * @param tag + * @param value + * @return + */ + public static ComponentTag setDataOptions(ComponentTag tag, String value) { + Args.notNull(tag, "tag"); + Args.notNull(value, "value"); + tag.put("data-options", value + DATA_OPTIONS_SEPARATOR); + return tag; + } + + /** + * Adds to data-options attribute value + * @param tag + * @param value + * @return + */ + public static ComponentTag addDataOptions(ComponentTag tag, String value) { + Args.notNull(tag, "tag"); + Args.notNull(value, "value"); + if (!hasDataOptions(tag, value)) { + String current = tag.getAttribute("data-options"); + if (current == null) { + tag.put("data-options", value + DATA_OPTIONS_SEPARATOR); + } else { + tag.put("data-options", current + value + DATA_OPTIONS_SEPARATOR); + } + } + return tag; + } + + /** + * Remove data-options value + * @param tag + * @param value + * @return + */ + public static ComponentTag removeDataOptions(ComponentTag tag, String value) { + Args.notNull(tag, "tag"); + Args.notNull(value, "value"); + if (hasDataOptions(tag, value)) { + tag.put("data-options", removeToken(tag.getAttribute("data-options"), value, DATA_OPTIONS_SEPARATOR)); + } + return tag; + } + + /** + * Tests whether data-options contains value + * @param tag + * @param value + * @return + */ + public static boolean hasDataOptions(ComponentTag tag, String value) { + Args.notNull(tag, "tag"); + Args.notNull(value, "value"); + String current = tag.getAttribute("data-options"); + if (current == null) { + return false; + } + String[] existing = current.split(";"); + return Arrays.asList(existing).contains(value); + } + + /** + * Removes token from attribute. + * @param attribute - Attribute value. + * @param remove - Token to remove. + * @param separator - Token separator. + * @return new attribute value. + */ + public static String removeToken(String attribute, String remove, String separator) { + if (attribute == null || remove == null || separator == null) { + return attribute; + } + StringTokenizer tokenizer = new StringTokenizer(attribute, separator); + StringBuilder sb = new StringBuilder(); + while (tokenizer.hasMoreTokens()) { + String token = tokenizer.nextToken(); + if (!token.isEmpty() && !token.equals(remove)) { + if (sb.length() <= 0) { + sb.append(token); + } else { + sb.append(separator + token); + } + } + } + return sb.toString(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/util/StringUtil.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/util/StringUtil.java new file mode 100644 index 0000000000..e8ad5604f2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/util/StringUtil.java @@ -0,0 +1,21 @@ +package org.wicketstuff.foundation.util; + +import org.apache.wicket.util.lang.Args; + +/** + * String related utilities. + * @author ilkka + * + */ +public class StringUtil { + + /** + * Transforms enum value to CSS class name. + * @param name - Enum value. + * @return transformed string. + */ + public static String EnumNameToCssClassName(String name) { + Args.notNull(name, "name"); + return name.replace("_", "-").toLowerCase(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationHiddenByScreenSizeBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationHiddenByScreenSizeBehavior.java new file mode 100644 index 0000000000..308e56582a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationHiddenByScreenSizeBehavior.java @@ -0,0 +1,60 @@ +package org.wicketstuff.foundation.visibility; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.behavior.FoundationBaseBehavior; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Visibility classes let you show or hide elements based on screen size or device orientation. + * http://foundation.zurb.com/docs/components/visibility.html + * @author ilkka + * + */ +public class FoundationHiddenByScreenSizeBehavior extends FoundationBaseBehavior { + + private static final long serialVersionUID = 1L; + + public enum HiddenByScreenSizeType { + HIDDEN_FOR_SMALL_ONLY, + HIDDEN_FOR_MEDIUM_UP, + HIDDEN_FOR_MEDIUM_ONLY, + HIDDEN_FOR_LARGE_UP, + HIDDEN_FOR_LARGE_ONLY, + HIDDEN_FOR_XLARGE_UP, + HIDDEN_FOR_XLARGE_ONLY, + HIDDEN_FOR_XXLARGE_UP }; + + private IModel hideTypeModel; + + /** + * Create HiddenByScreenSizeBehavior. + * @param hideType - Hide type. + */ + public FoundationHiddenByScreenSizeBehavior(HiddenByScreenSizeType hideType) { + this(Model.of(hideType)); + } + + /** + * Create HiddenByScreenSizeBehavior. + * @param hideTypeModel - Model for hide type. + */ + public FoundationHiddenByScreenSizeBehavior(IModel hideTypeModel) { + this.hideTypeModel = hideTypeModel; + } + + @Override + public void onComponentTag(Component component, ComponentTag tag) { + super.onComponentTag(component, tag); + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(hideTypeModel.getObject().name())); + } + + @Override + public void detach(Component component) { + hideTypeModel.detach(); + super.detach(component); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationHideByScreenSizeBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationHideByScreenSizeBehavior.java new file mode 100644 index 0000000000..e83a7e1ed5 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationHideByScreenSizeBehavior.java @@ -0,0 +1,60 @@ +package org.wicketstuff.foundation.visibility; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.behavior.FoundationBaseBehavior; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Visibility classes let you show or hide elements based on screen size or device orientation. + * http://foundation.zurb.com/docs/components/visibility.html + * @author ilkka + * + */ +public class FoundationHideByScreenSizeBehavior extends FoundationBaseBehavior { + + private static final long serialVersionUID = 1L; + + public enum HideByScreenSizeType { + HIDE_FOR_SMALL_ONLY, + HIDE_FOR_MEDIUM_UP, + HIDE_FOR_MEDIUM_ONLY, + HIDE_FOR_LARGE_UP, + HIDE_FOR_LARGE_ONLY, + HIDE_FOR_XLARGE_UP, + HIDE_FOR_XLARGE_ONLY, + HIDE_FOR_XXLARGE_UP }; + + private IModel hideTypeModel; + + /** + * Create HideByScreenSizeBehavior. + * @param hideType - Hide type. + */ + public FoundationHideByScreenSizeBehavior(HideByScreenSizeType hideType) { + this(Model.of(hideType)); + } + + /** + * Create HideByScreenSizeBehavior. + * @param hideTypeModel - Model for hide type. + */ + public FoundationHideByScreenSizeBehavior(IModel hideTypeModel) { + this.hideTypeModel = hideTypeModel; + } + + @Override + public void onComponentTag(Component component, ComponentTag tag) { + super.onComponentTag(component, tag); + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(hideTypeModel.getObject().name())); + } + + @Override + public void detach(Component component) { + hideTypeModel.detach(); + super.detach(component); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationShowByOrientationBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationShowByOrientationBehavior.java new file mode 100644 index 0000000000..4fd674087f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationShowByOrientationBehavior.java @@ -0,0 +1,54 @@ +package org.wicketstuff.foundation.visibility; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.behavior.FoundationBaseBehavior; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Visibility classes let you show or hide elements based on screen size or device orientation. + * http://foundation.zurb.com/docs/components/visibility.html + * @author ilkka + * + */ +public class FoundationShowByOrientationBehavior extends FoundationBaseBehavior { + + private static final long serialVersionUID = 1L; + + public enum ShowByOrientationType { + SHOW_FOR_LANDSCAPE, + SHOW_FOR_PORTRAIT }; + + private IModel showTypeModel; + + /** + * Create ShowByOrientationBehavior. + * @param showType - Show type. + */ + public FoundationShowByOrientationBehavior(ShowByOrientationType showType) { + this(Model.of(showType)); + } + + /** + * Create ShowByOrientationBehavior. + * @param showTypeModel - Model for show type. + */ + public FoundationShowByOrientationBehavior(IModel showTypeModel) { + this.showTypeModel = showTypeModel; + } + + @Override + public void onComponentTag(Component component, ComponentTag tag) { + super.onComponentTag(component, tag); + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(showTypeModel.getObject().name())); + } + + @Override + public void detach(Component component) { + showTypeModel.detach(); + super.detach(component); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationShowByScreenSizeBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationShowByScreenSizeBehavior.java new file mode 100644 index 0000000000..d192813eea --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationShowByScreenSizeBehavior.java @@ -0,0 +1,60 @@ +package org.wicketstuff.foundation.visibility; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.behavior.FoundationBaseBehavior; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Visibility classes let you show or hide elements based on screen size or device orientation. + * http://foundation.zurb.com/docs/components/visibility.html + * @author ilkka + * + */ +public class FoundationShowByScreenSizeBehavior extends FoundationBaseBehavior { + + private static final long serialVersionUID = 1L; + + public enum ShowByScreenSizeType { + SHOW_FOR_SMALL_ONLY, + SHOW_FOR_MEDIUM_UP, + SHOW_FOR_MEDIUM_ONLY, + SHOW_FOR_LARGE_UP, + SHOW_FOR_LARGE_ONLY, + SHOW_FOR_XLARGE_UP, + SHOW_FOR_XLARGE_ONLY, + SHOW_FOR_XXLARGE_UP }; + + private IModel showTypeModel; + + /** + * Create ShowByScreenSizeBehavior. + * @param showType - Show type. + */ + public FoundationShowByScreenSizeBehavior(ShowByScreenSizeType showType) { + this(Model.of(showType)); + } + + /** + * Create ShowByScreenSizeBehavior. + * @param showTypeModel - Model for show type. + */ + public FoundationShowByScreenSizeBehavior(IModel showTypeModel) { + this.showTypeModel = showTypeModel; + } + + @Override + public void onComponentTag(Component component, ComponentTag tag) { + super.onComponentTag(component, tag); + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(showTypeModel.getObject().name())); + } + + @Override + public void detach(Component component) { + showTypeModel.detach(); + super.detach(component); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationTouchDetectionBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationTouchDetectionBehavior.java new file mode 100644 index 0000000000..66bee1ca4d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationTouchDetectionBehavior.java @@ -0,0 +1,54 @@ +package org.wicketstuff.foundation.visibility; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.behavior.FoundationBaseBehavior; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Visibility classes let you show or hide elements based on screen size or device orientation. + * http://foundation.zurb.com/docs/components/visibility.html + * @author ilkka + * + */ +public class FoundationTouchDetectionBehavior extends FoundationBaseBehavior { + + private static final long serialVersionUID = 1L; + + public enum TouchDetectionType { + SHOW_FOR_TOUCH, + HIDE_FOR_TOUCH }; + + private IModel typeModel; + + /** + * Create TouchDetectionBehavior. + * @param type - Detection type. + */ + public FoundationTouchDetectionBehavior(TouchDetectionType type) { + this(Model.of(type)); + } + + /** + * Create TouchDetectionBehavior. + * @param typeModel - Model for detection type. + */ + public FoundationTouchDetectionBehavior(IModel typeModel) { + this.typeModel = typeModel; + } + + @Override + public void onComponentTag(Component component, ComponentTag tag) { + super.onComponentTag(component, tag); + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(typeModel.getObject().name())); + } + + @Override + public void detach(Component component) { + typeModel.detach(); + super.detach(component); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationVisibleForScreenSizeBehavior.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationVisibleForScreenSizeBehavior.java new file mode 100644 index 0000000000..0cca7c265f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/java/org/wicketstuff/foundation/visibility/FoundationVisibleForScreenSizeBehavior.java @@ -0,0 +1,60 @@ +package org.wicketstuff.foundation.visibility; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.behavior.FoundationBaseBehavior; +import org.wicketstuff.foundation.util.Attribute; +import org.wicketstuff.foundation.util.StringUtil; + +/** + * Visibility classes let you show or hide elements based on screen size or device orientation. + * http://foundation.zurb.com/docs/components/visibility.html + * @author ilkka + * + */ +public class FoundationVisibleForScreenSizeBehavior extends FoundationBaseBehavior { + + private static final long serialVersionUID = 1L; + + public enum VisibleForScreenSizeType { + VISIBLE_FOR_SMALL_ONLY, + VISIBLE_FOR_MEDIUM_UP, + VISIBLE_FOR_MEDIUM_ONLY, + VISIBLE_FOR_LARGE_UP, + VISIBLE_FOR_LARGE_ONLY, + VISIBLE_FOR_XLARGE_UP, + VISIBLE_FOR_XLARGE_ONLY, + VISIBLE_FOR_XXLARGE_UP }; + + private IModel showTypeModel; + + /** + * Create VisibleForScreenSizeBehavior. + * @param showType - Show type. + */ + public FoundationVisibleForScreenSizeBehavior(VisibleForScreenSizeType showType) { + this(Model.of(showType)); + } + + /** + * Create VisibleForScreenSizeBehavior. + * @param showTypeModel - Model for show type. + */ + public FoundationVisibleForScreenSizeBehavior(IModel showTypeModel) { + this.showTypeModel = showTypeModel; + } + + @Override + public void onComponentTag(Component component, ComponentTag tag) { + super.onComponentTag(component, tag); + Attribute.addClass(tag, StringUtil.EnumNameToCssClassName(showTypeModel.getObject().name())); + } + + @Override + public void detach(Component component) { + showTypeModel.detach(); + super.detach(component); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/resources/log4j.properties b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/resources/log4j.properties new file mode 100644 index 0000000000..05cd58a3bb --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/main/resources/log4j.properties @@ -0,0 +1,12 @@ +log4j.appender.Stdout=org.apache.log4j.ConsoleAppender +log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n + +log4j.rootLogger=INFO,Stdout + +log4j.logger.org.apache.wicket=INFO +log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO +log4j.logger.org.apache.wicket.version=INFO +log4j.logger.org.apache.wicket.RequestCycle=INFO + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/alert/AlertOptionsTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/alert/AlertOptionsTest.java new file mode 100644 index 0000000000..ddff97ba7e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/alert/AlertOptionsTest.java @@ -0,0 +1,22 @@ +package org.wicketstuff.foundation.alert; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.wicketstuff.foundation.button.ButtonRadius; + + +public class AlertOptionsTest { + + @Test + public void testBasic() { + AlertOptions options = new AlertOptions(); + AlertOptions options2 = new AlertOptions(options); + options2 = options2.setColor(AlertColor.SECONDARY).setRadius(ButtonRadius.ROUND); + AlertOptions options3 = new AlertOptions(AlertColor.SECONDARY); + AlertOptions options4 = new AlertOptions(ButtonRadius.ROUND); + assertEquals(AlertColor.SECONDARY, options3.getColor()); + assertEquals(ButtonRadius.ROUND, options4.getRadius()); + AlertOptions options5 = new AlertOptions(AlertColor.SECONDARY, ButtonRadius.ROUND); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/alert/FoundationAlertTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/alert/FoundationAlertTest.java new file mode 100644 index 0000000000..c7b0d5ac0b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/alert/FoundationAlertTest.java @@ -0,0 +1,44 @@ +package org.wicketstuff.foundation.alert; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.util.StringUtil; + +public class FoundationAlertTest { + + @Test + public void testBasic() { + WicketTester tester = new WicketTester(); + FoundationAlert alert = new FoundationAlert("alert", Model.of("hello world"), new AlertOptions()); + tester.startComponentInPage(alert); + TagTester alertTag = tester.getTagByWicketId("alert"); + assertTrue(alertTag.getMarkup().contains("data-alert")); + assertTrue(alertTag.getAttributeIs("class", "alert-box")); + assertTrue(alertTag.hasChildTag("a")); + TagTester bodyTag = tester.getTagByWicketId("body"); + assertEquals("hello world", bodyTag.getValue()); + } + + @Test + public void testAdvanced() { + WicketTester tester = new WicketTester(); + AlertOptions options = new AlertOptions().setColor(AlertColor.ALERT).setRadius(ButtonRadius.ROUND); + FoundationAlert alert = new FoundationAlert("alert", Model.of("hello world"), options); + tester.startComponentInPage(alert); + TagTester alertTag = tester.getTagByWicketId("alert"); + assertTrue(alertTag.getMarkup().contains("data-alert")); + assertTrue(alertTag.getAttributeContains("class", "alert-box")); + assertTrue(alertTag.getAttributeContains("class", StringUtil.EnumNameToCssClassName(ButtonColor.ALERT.name()))); + assertTrue(alertTag.getAttributeContains("class", StringUtil.EnumNameToCssClassName(ButtonRadius.ROUND.name()))); + assertTrue(alertTag.hasChildTag("a")); + TagTester bodyTag = tester.getTagByWicketId("body"); + assertEquals("hello world", bodyTag.getValue()); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/BlockGridOptionsTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/BlockGridOptionsTest.java new file mode 100644 index 0000000000..90172d5a0d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/BlockGridOptionsTest.java @@ -0,0 +1,18 @@ +package org.wicketstuff.foundation.blockgrid; + +import org.junit.Test; +import org.wicketstuff.foundation.blockgrid.BlockGridOptions; +import org.wicketstuff.foundation.blockgrid.BlockGridType; + +public class BlockGridOptionsTest { + + @Test + public void test() { + BlockGridOptions options = new BlockGridOptions(BlockGridType.SMALL_BLOCK_GRID, 1); + BlockGridOptions options2 = new BlockGridOptions(options); + options2.setColumnCount(2); + options2.setType(BlockGridType.LARGE_BLOCK_GRID); + BlockGridOptions options3 = new BlockGridOptions(options2.getType(), options2.getColumnCount()); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGridTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGridTest.java new file mode 100644 index 0000000000..f36e5a513c --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/FoundationBlockGridTest.java @@ -0,0 +1,70 @@ +package org.wicketstuff.foundation.blockgrid; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.blockgrid.BlockGridOptions; +import org.wicketstuff.foundation.blockgrid.BlockGridType; +import org.wicketstuff.foundation.blockgrid.FoundationBlockGrid; + +public class FoundationBlockGridTest { + + @Test + public void testParagraph() { + WicketTester tester = new WicketTester(); + List list = Arrays.asList("foo", "bar", "baz"); + List optionsList = Arrays.asList(new BlockGridOptions(BlockGridType.SMALL_BLOCK_GRID, 3), + new BlockGridOptions(BlockGridType.MEDIUM_BLOCK_GRID, 4), new BlockGridOptions(BlockGridType.LARGE_BLOCK_GRID, 5)); + FoundationBlockGrid grid = new FoundationBlockGrid("id", optionsList, list) { + + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel model) { + return new TestParagraphPanel(id, model); + } + }; + tester.startComponentInPage(grid); + tester.dumpPage(); + TagTester container = tester.getTagByWicketId("container"); + assertTrue(container.getAttributeContains("class", "small-block-grid-3")); + assertTrue(container.getAttributeContains("class", "medium-block-grid-4")); + assertTrue(container.getAttributeContains("class", "large-block-grid-5")); + assertEquals(3, tester.getTagsByWicketId("item").size()); + assertEquals(3, tester.getTagsByWicketId("content").size()); + assertEquals(3, tester.getTagsByWicketId("parent").size()); + assertEquals(3, tester.getTagsByWicketId("paragraph").size()); + } + + @Test + public void testImage() { + WicketTester tester = new WicketTester(); + List list = Arrays.asList("satelite.jpg", "space.jpg", "spacewalk.jpg"); + FoundationBlockGrid grid = new FoundationBlockGrid("id", new BlockGridOptions(BlockGridType.MEDIUM_BLOCK_GRID, 3), list) { + + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel model) { + return new TestImagePanel(id, model.getObject()); + } + }; + tester.startComponentInPage(grid); + tester.dumpPage(); + TagTester container = tester.getTagByWicketId("container"); + assertTrue(container.getAttributeIs("class", "medium-block-grid-3")); + assertEquals(3, tester.getTagsByWicketId("item").size()); + assertEquals(3, tester.getTagsByWicketId("content").size()); + assertEquals(3, tester.getTagsByWicketId("img").size()); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestImagePanel.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestImagePanel.html new file mode 100644 index 0000000000..75c8e9ae0f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestImagePanel.html @@ -0,0 +1,12 @@ + + + + +wicket-foundation + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestImagePanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestImagePanel.java new file mode 100644 index 0000000000..06d363b5cd --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestImagePanel.java @@ -0,0 +1,16 @@ +package org.wicketstuff.foundation.blockgrid; + +import org.apache.wicket.markup.html.image.Image; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.request.resource.PackageResourceReference; + +public class TestImagePanel extends Panel { + + private static final long serialVersionUID = 1L; + + public TestImagePanel(String id, String imageFilename) { + super(id); + add(new Image("img", new PackageResourceReference(this.getClass(), imageFilename))); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestParagraphPanel.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestParagraphPanel.html new file mode 100644 index 0000000000..ee9fa70434 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestParagraphPanel.html @@ -0,0 +1,14 @@ + + + + +wicket-foundation + + + +
    +

    +
    +
    + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestParagraphPanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestParagraphPanel.java new file mode 100644 index 0000000000..d2de551cf9 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/TestParagraphPanel.java @@ -0,0 +1,18 @@ +package org.wicketstuff.foundation.blockgrid; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.IModel; + +public class TestParagraphPanel extends Panel { + + private static final long serialVersionUID = 1L; + + public TestParagraphPanel(String id, IModel model) { + super(id, model); + WebMarkupContainer parent = new WebMarkupContainer("parent"); + add(parent); + parent.add(new Label("paragraph", model)); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/satelite.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/satelite.jpg new file mode 100644 index 0000000000..eacd813e70 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/satelite.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/space.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/space.jpg new file mode 100644 index 0000000000..6ac8a97437 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/space.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/spacewalk.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/spacewalk.jpg new file mode 100644 index 0000000000..d2ad2af7ae Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/blockgrid/spacewalk.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/breadcrumbs/FoundationBreadcrumbsTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/breadcrumbs/FoundationBreadcrumbsTest.java new file mode 100644 index 0000000000..68e1f989be --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/breadcrumbs/FoundationBreadcrumbsTest.java @@ -0,0 +1,51 @@ +package org.wicketstuff.foundation.breadcrumbs; + +import static org.junit.Assert.*; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.breadcrumbs.BreadcrumbsItem; +import org.wicketstuff.foundation.breadcrumbs.FoundationBreadcrumbs; + +public class FoundationBreadcrumbsTest { + + @Test + public void test() { + WicketTester tester = new WicketTester(); + List items = new ArrayList<>(); + items.add(new BreadcrumbsItem("First")); + items.add(new BreadcrumbsItem("Second", true, true)); + items.add(new BreadcrumbsItem("Third")); + items.add(new BreadcrumbsItem("Fourth")); + FoundationBreadcrumbs breadcrumbs = new FoundationBreadcrumbs("id", items) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createLink(String id, int idx) { + return new Link(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + }; + tester.startComponentInPage(breadcrumbs); + tester.dumpPage(); + TagTester breadcrumbsContainer = tester.getTagByWicketId("breadcrumbsContainer"); + assertTrue(breadcrumbsContainer.getAttributeIs("class", "breadcrumbs")); + List breadcrumbsItems = tester.getTagsByWicketId("breadcrumbsItem"); + assertEquals(4, breadcrumbsItems.size()); + assertTrue(breadcrumbsItems.get(1).getAttributeContains("class", "unavailable")); + assertTrue(breadcrumbsItems.get(1).getAttributeContains("class", "current")); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/ButtonOptionsTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/ButtonOptionsTest.java new file mode 100644 index 0000000000..6a0dde514e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/ButtonOptionsTest.java @@ -0,0 +1,25 @@ +package org.wicketstuff.foundation.button; + +import org.junit.Test; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonExpansion; +import org.wicketstuff.foundation.button.ButtonOptions; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.button.ButtonSize; +import org.wicketstuff.foundation.button.ButtonState; + +public class ButtonOptionsTest { + + @Test + public void test() { + ButtonOptions options = new ButtonOptions(); + ButtonOptions options2 = new ButtonOptions(options); + options2.setFoundationButtonColor(ButtonColor.ALERT); + options2.setFoundationButtonExpansion(ButtonExpansion.EXPAND); + options2.setFoundationButtonRadius(ButtonRadius.ROUND); + options2.setFoundationButtonSize(ButtonSize.TINY); + options2.setFoundationButtonState(ButtonState.DISABLED); + options2.reset(); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationAjaxButtonTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationAjaxButtonTest.java new file mode 100644 index 0000000000..e8f2edbcb1 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationAjaxButtonTest.java @@ -0,0 +1,71 @@ +package org.wicketstuff.foundation.button; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.util.StringUtil; + +public class FoundationAjaxButtonTest { + + @Test + public void testBasic() { + testButton(new WicketTester(), new FoundationAjaxButton("btn"), new ArrayList()); + } + + @Test + public void testConstructors() { + WicketTester tester = new WicketTester(); + PageParameters params = new PageParameters(); + params.add("buttonType", "FoundationAjaxButton"); + FoundationButtonConstructorTestPage page = new FoundationButtonConstructorTestPage(params); + tester.startPage(page); + } + + @Test + public void testAdvancedSize() { + testButton(new WicketTester(), new FoundationAjaxButton("btn", new ButtonOptions(ButtonSize.TINY)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonSize.TINY.name()))); + } + + @Test + public void testAdvancedColor() { + testButton(new WicketTester(), new FoundationAjaxButton("btn", new ButtonOptions(ButtonColor.SUCCESS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonColor.SUCCESS.name()))); + } + + @Test + public void testAdvancedRadius() { + testButton(new WicketTester(), new FoundationAjaxButton("btn", new ButtonOptions(ButtonRadius.RADIUS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonRadius.RADIUS.name()))); + } + + @Test + public void testAdvancedState() { + testButton(new WicketTester(), new FoundationAjaxButton("btn", new ButtonOptions(ButtonState.DISABLED)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonState.DISABLED.name()))); + } + + @Test + public void testAdvancedExpansion() { + testButton(new WicketTester(), new FoundationAjaxButton("btn", new ButtonOptions(ButtonExpansion.EXPAND)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonExpansion.EXPAND.name()))); + } + + private void testButton(WicketTester tester, FoundationAjaxButton btn, List additionalCssClassesToVerify) { + FoundationButtonTestPage page = new FoundationButtonTestPage(btn); + tester.startPage(page); + TagTester tagTester = tester.getTagByWicketId(btn.getId()); + assertTrue(tagTester.getAttributeContains("class", "button")); + for (String clazz: additionalCssClassesToVerify) { + assertTrue(tagTester.getAttributeContains("class", clazz)); + } + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationAjaxLinkTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationAjaxLinkTest.java new file mode 100644 index 0000000000..855b8809a5 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationAjaxLinkTest.java @@ -0,0 +1,98 @@ +package org.wicketstuff.foundation.button; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.util.StringUtil; + +public class FoundationAjaxLinkTest { + + @Test + public void testBasic1() { + testButton(new WicketTester(), new FoundationTestAjaxLink("btn"), new ArrayList()); + } + + @Test + public void testBasic2() { + testButton(new WicketTester(), new FoundationTestAjaxLink("btn", Model.of("foo")), new ArrayList()); + } + + @Test + public void testBasic3() { + testButton(new WicketTester(), new FoundationTestAjaxLink("btn", Model.of("foo"), new ButtonOptions()), new ArrayList()); + } + + @Test + public void testAdvancedSize() { + testButton(new WicketTester(), new FoundationTestAjaxLink("btn", new ButtonOptions(ButtonSize.TINY)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonSize.TINY.name()))); + } + + @Test + public void testAdvancedColor() { + testButton(new WicketTester(), new FoundationTestAjaxLink("btn", new ButtonOptions(ButtonColor.SUCCESS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonColor.SUCCESS.name()))); + } + + @Test + public void testAdvancedRadius() { + testButton(new WicketTester(), new FoundationTestAjaxLink("btn", new ButtonOptions(ButtonRadius.RADIUS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonRadius.RADIUS.name()))); + } + + @Test + public void testAdvancedState() { + testButton(new WicketTester(), new FoundationTestAjaxLink("btn", new ButtonOptions(ButtonState.DISABLED)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonState.DISABLED.name()))); + } + + @Test + public void testAdvancedExpansion() { + testButton(new WicketTester(), new FoundationTestAjaxLink("btn", new ButtonOptions(ButtonExpansion.EXPAND)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonExpansion.EXPAND.name()))); + } + + private void testButton(WicketTester tester, FoundationAjaxLink btn, List additionalCssClassesToVerify) { + tester.startComponentInPage(btn); + TagTester tagTester = tester.getTagByWicketId(btn.getId()); + assertTrue(tagTester.getAttributeContains("class", "button")); + for (String clazz: additionalCssClassesToVerify) { + assertTrue(tagTester.getAttributeContains("class", clazz)); + } + } + + private static class FoundationTestAjaxLink extends FoundationAjaxLink { + + private static final long serialVersionUID = 1L; + + public FoundationTestAjaxLink(String id) { + super(id); + } + + public FoundationTestAjaxLink(String id, ButtonOptions options) { + super(id, options); + } + + public FoundationTestAjaxLink(String id, IModel model) { + super(id, model); + } + + public FoundationTestAjaxLink(String id, IModel model, ButtonOptions options) { + super(id, model, options); + } + + @Override + public void onClick(AjaxRequestTarget target) { + // NOP + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationAjaxSubmitLinkTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationAjaxSubmitLinkTest.java new file mode 100644 index 0000000000..a91a84567d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationAjaxSubmitLinkTest.java @@ -0,0 +1,61 @@ +package org.wicketstuff.foundation.button; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.util.StringUtil; + +public class FoundationAjaxSubmitLinkTest { + + @Test + public void testBasic() { + testButton(new WicketTester(), new FoundationAjaxSubmitLink("btn"), new ArrayList()); + } + + @Test + public void testAdvancedSize() { + testButton(new WicketTester(), new FoundationAjaxSubmitLink("btn", new ButtonOptions(ButtonSize.TINY)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonSize.TINY.name()))); + } + + @Test + public void testAdvancedColor() { + testButton(new WicketTester(), new FoundationAjaxSubmitLink("btn", new ButtonOptions(ButtonColor.SUCCESS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonColor.SUCCESS.name()))); + } + + @Test + public void testAdvancedRadius() { + testButton(new WicketTester(), new FoundationAjaxSubmitLink("btn", new ButtonOptions(ButtonRadius.RADIUS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonRadius.RADIUS.name()))); + } + + @Test + public void testAdvancedState() { + testButton(new WicketTester(), new FoundationAjaxSubmitLink("btn", new ButtonOptions(ButtonState.DISABLED)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonState.DISABLED.name()))); + } + + @Test + public void testAdvancedExpansion() { + testButton(new WicketTester(), new FoundationAjaxSubmitLink("btn", new ButtonOptions(ButtonExpansion.EXPAND)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonExpansion.EXPAND.name()))); + } + + private void testButton(WicketTester tester, FoundationAjaxSubmitLink btn, List additionalCssClassesToVerify) { + FoundationButtonTestPage page = new FoundationButtonTestPage(btn); + tester.startPage(page); + TagTester tagTester = tester.getTagByWicketId(btn.getId()); + assertTrue(tagTester.getAttributeContains("class", "button")); + for (String clazz: additionalCssClassesToVerify) { + assertTrue(tagTester.getAttributeContains("class", clazz)); + } + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationBookmarkablePageLinkTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationBookmarkablePageLinkTest.java new file mode 100644 index 0000000000..15cf2abe2b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationBookmarkablePageLinkTest.java @@ -0,0 +1,87 @@ +package org.wicketstuff.foundation.button; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.Page; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.util.StringUtil; + +public class FoundationBookmarkablePageLinkTest { + + @Test + public void testBasic() { + testButton(new WicketTester(), new FoundationTestBookmarkablePageLink( + "btn", FoundationButtonTestPage.class), new ArrayList()); + } + + @Test + public void testAdvancedSize() { + testButton(new WicketTester(), new FoundationTestBookmarkablePageLink("btn", FoundationButtonTestPage.class, + new ButtonOptions(ButtonSize.TINY)), Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonSize.TINY.name()))); + } + + @Test + public void testAdvancedColor() { + testButton(new WicketTester(), new FoundationTestBookmarkablePageLink("btn", FoundationButtonTestPage.class, new ButtonOptions(ButtonColor.SUCCESS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonColor.SUCCESS.name()))); + } + + @Test + public void testAdvancedRadius() { + testButton(new WicketTester(), new FoundationTestBookmarkablePageLink("btn", FoundationButtonTestPage.class, new ButtonOptions(ButtonRadius.RADIUS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonRadius.RADIUS.name()))); + } + + @Test + public void testAdvancedState() { + testButton(new WicketTester(), new FoundationTestBookmarkablePageLink("btn", FoundationButtonTestPage.class, new ButtonOptions(ButtonState.DISABLED)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonState.DISABLED.name()))); + } + + @Test + public void testAdvancedExpansion() { + testButton(new WicketTester(), new FoundationTestBookmarkablePageLink("btn", FoundationButtonTestPage.class, new ButtonOptions(ButtonExpansion.EXPAND)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonExpansion.EXPAND.name()))); + } + + @Test + public void testConstructors() { + FoundationBookmarkablePageLink link1 = new FoundationBookmarkablePageLink("id", FoundationButtonTestPage.class); + FoundationBookmarkablePageLink link2 = new FoundationBookmarkablePageLink("id", FoundationButtonTestPage.class, new ButtonOptions()); + FoundationBookmarkablePageLink link3 = new FoundationBookmarkablePageLink("id", FoundationButtonTestPage.class, Model.of(new ButtonOptions())); + FoundationBookmarkablePageLink link4 = new FoundationBookmarkablePageLink("id", FoundationButtonTestPage.class, new PageParameters(), new ButtonOptions()); + FoundationBookmarkablePageLink link5 = new FoundationBookmarkablePageLink("id", FoundationButtonTestPage.class, new PageParameters(), Model.of(new ButtonOptions())); + } + + private void testButton(WicketTester tester, FoundationTestBookmarkablePageLink btn, List additionalCssClassesToVerify) { + tester.startComponentInPage(btn); + TagTester tagTester = tester.getTagByWicketId(btn.getId()); + assertTrue(tagTester.getAttributeContains("class", "button")); + for (String clazz: additionalCssClassesToVerify) { + assertTrue(tagTester.getAttributeContains("class", clazz)); + } + } + + private static class FoundationTestBookmarkablePageLink extends FoundationBookmarkablePageLink { + + private static final long serialVersionUID = 1L; + + public FoundationTestBookmarkablePageLink(String id, + Class pageClass) { + super(id, pageClass); + } + + public FoundationTestBookmarkablePageLink(String id, + Class pageClass, ButtonOptions options) { + super(id, pageClass, options); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonConstructorTestPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonConstructorTestPage.html new file mode 100644 index 0000000000..005efaf844 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonConstructorTestPage.html @@ -0,0 +1,14 @@ + + + + +wicket-foundation + + +
    + + + +
    + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonConstructorTestPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonConstructorTestPage.java new file mode 100644 index 0000000000..5fb7951166 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonConstructorTestPage.java @@ -0,0 +1,31 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.string.StringValue; +import org.wicketstuff.foundation.button.ButtonOptions; +import org.wicketstuff.foundation.button.FoundationAjaxButton; +import org.wicketstuff.foundation.button.FoundationSubmitLink; + +public class FoundationButtonConstructorTestPage extends WebPage { + + private static final long serialVersionUID = 1L; + + public FoundationButtonConstructorTestPage(PageParameters params) { + Form form = new Form<>("form"); + add(form); + + StringValue sv = params.get("buttonType"); + if (sv.toString().equals("FoundationAjaxButton")) { + form.add(new FoundationAjaxButton("btn1", form, new ButtonOptions())); + form.add(new FoundationAjaxButton("btn2", Model.of("foobar"), new ButtonOptions())); + form.add(new FoundationAjaxButton("btn3", Model.of("foobar"), form, new ButtonOptions())); + } else { + form.add(new FoundationSubmitLink("btn1", form, new ButtonOptions())); + form.add(new FoundationSubmitLink("btn2", Model.of("foobar"), new ButtonOptions())); + form.add(new FoundationSubmitLink("btn3", Model.of("foobar"), form, new ButtonOptions())); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonTest.java new file mode 100644 index 0000000000..2d9c4df0de --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonTest.java @@ -0,0 +1,71 @@ +package org.wicketstuff.foundation.button; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.util.StringUtil; + +public class FoundationButtonTest { + + @Test + public void testBasic1() { + testButton(new WicketTester(), new FoundationButton("btn"), new ArrayList()); + } + + @Test + public void testBasic2() { + testButton(new WicketTester(), new FoundationButton("btn", Model.of("foo")), new ArrayList()); + } + + @Test + public void testBasic3() { + testButton(new WicketTester(), new FoundationButton("btn", Model.of("foo"), new ButtonOptions()), new ArrayList()); + } + + @Test + public void testAdvancedSize() { + testButton(new WicketTester(), new FoundationButton("btn", new ButtonOptions(ButtonSize.TINY)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonSize.TINY.name()))); + } + + @Test + public void testAdvancedColor() { + testButton(new WicketTester(), new FoundationButton("btn", new ButtonOptions(ButtonColor.SUCCESS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonColor.SUCCESS.name()))); + } + + @Test + public void testAdvancedRadius() { + testButton(new WicketTester(), new FoundationButton("btn", new ButtonOptions(ButtonRadius.RADIUS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonRadius.RADIUS.name()))); + } + + @Test + public void testAdvancedState() { + testButton(new WicketTester(), new FoundationButton("btn", new ButtonOptions(ButtonState.DISABLED)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonState.DISABLED.name()))); + } + + @Test + public void testAdvancedExpansion() { + testButton(new WicketTester(), new FoundationButton("btn", new ButtonOptions(ButtonExpansion.EXPAND)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonExpansion.EXPAND.name()))); + } + + private void testButton(WicketTester tester, FoundationButton btn, List additionalCssClassesToVerify) { + tester.startComponentInPage(btn); + TagTester tagTester = tester.getTagByWicketId(btn.getId()); + assertTrue(tagTester.getAttributeContains("class", "button")); + for (String clazz: additionalCssClassesToVerify) { + assertTrue(tagTester.getAttributeContains("class", clazz)); + } + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonTestPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonTestPage.html new file mode 100644 index 0000000000..331bd41e10 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonTestPage.html @@ -0,0 +1,12 @@ + + + + +wicket-foundation + + +
    + +
    + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonTestPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonTestPage.java new file mode 100644 index 0000000000..fe9674b2b2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationButtonTestPage.java @@ -0,0 +1,24 @@ +package org.wicketstuff.foundation.button; + +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.form.Form; +import org.wicketstuff.foundation.button.FoundationAjaxButton; +import org.wicketstuff.foundation.button.FoundationAjaxSubmitLink; + +public class FoundationButtonTestPage extends WebPage { + + private static final long serialVersionUID = 1L; + + public FoundationButtonTestPage(FoundationAjaxButton btn) { + Form form = new Form<>("form"); + add(form); + form.add(btn); + } + + public FoundationButtonTestPage(FoundationAjaxSubmitLink btn) { + Form form = new Form<>("form"); + add(form); + form.add(btn); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationLinkTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationLinkTest.java new file mode 100644 index 0000000000..718737384b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationLinkTest.java @@ -0,0 +1,103 @@ +package org.wicketstuff.foundation.button; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.util.StringUtil; + +public class FoundationLinkTest { + + @Test + public void testBasic() { + testButton(new WicketTester(), new FoundationTestLink("btn"), new ArrayList()); + } + + @Test + public void testAdvancedSize() { + testButton(new WicketTester(), new FoundationTestLink("btn", new ButtonOptions(ButtonSize.TINY)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonSize.TINY.name()))); + } + + @Test + public void testAdvancedColor() { + testButton(new WicketTester(), new FoundationTestLink("btn", new ButtonOptions(ButtonColor.SUCCESS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonColor.SUCCESS.name()))); + } + + @Test + public void testAdvancedRadius() { + testButton(new WicketTester(), new FoundationTestLink("btn", new ButtonOptions(ButtonRadius.RADIUS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonRadius.RADIUS.name()))); + } + + @Test + public void testAdvancedState() { + testButton(new WicketTester(), new FoundationTestLink("btn", new ButtonOptions(ButtonState.DISABLED)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonState.DISABLED.name()))); + } + + @Test + public void testAdvancedExpansion() { + testButton(new WicketTester(), new FoundationTestLink("btn", new ButtonOptions(ButtonExpansion.EXPAND)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonExpansion.EXPAND.name()))); + } + + @Test + public void testConstructors() { + FoundationLink link1 = new FoundationLink("id") { + @Override + public void onClick() { + } + }; + FoundationLink link2 = new FoundationLink("id", new ButtonOptions()) { + @Override + public void onClick() { + } + }; + FoundationLink link3 = new FoundationLink("id", Model.of("foo")) { + @Override + public void onClick() { + } + }; + FoundationLink link4 = new FoundationLink("id", Model.of("foo"), Model.of(new ButtonOptions())) { + @Override + public void onClick() { + } + }; + } + + private void testButton(WicketTester tester, FoundationLink btn, List additionalCssClassesToVerify) { + tester.startComponentInPage(btn); + TagTester tagTester = tester.getTagByWicketId(btn.getId()); + assertTrue(tagTester.getAttributeContains("class", "button")); + for (String clazz: additionalCssClassesToVerify) { + assertTrue(tagTester.getAttributeContains("class", clazz)); + } + } + + private static class FoundationTestLink extends FoundationLink { + + private static final long serialVersionUID = 1L; + + public FoundationTestLink(String id) { + super(id); + } + + public FoundationTestLink(String id, ButtonOptions options) { + super(id, options); + } + + @Override + public void onClick() { + // NOP + } + + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationSubmitLinkTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationSubmitLinkTest.java new file mode 100644 index 0000000000..f128ca1b8c --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/button/FoundationSubmitLinkTest.java @@ -0,0 +1,70 @@ +package org.wicketstuff.foundation.button; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.util.StringUtil; + +public class FoundationSubmitLinkTest { + + @Test + public void testBasic() { + testButton(new WicketTester(), new FoundationSubmitLink("btn"), new ArrayList()); + } + + @Test + public void testConstructors() { + WicketTester tester = new WicketTester(); + PageParameters params = new PageParameters(); + params.add("buttonType", "FoundationSubmitLink"); + FoundationButtonConstructorTestPage page = new FoundationButtonConstructorTestPage(params); + tester.startPage(page); + } + + @Test + public void testAdvancedSize() { + testButton(new WicketTester(), new FoundationSubmitLink("btn", new ButtonOptions(ButtonSize.TINY)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonSize.TINY.name()))); + } + + @Test + public void testAdvancedColor() { + testButton(new WicketTester(), new FoundationSubmitLink("btn", new ButtonOptions(ButtonColor.SUCCESS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonColor.SUCCESS.name()))); + } + + @Test + public void testAdvancedRadius() { + testButton(new WicketTester(), new FoundationSubmitLink("btn", new ButtonOptions(ButtonRadius.RADIUS)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonRadius.RADIUS.name()))); + } + + @Test + public void testAdvancedState() { + testButton(new WicketTester(), new FoundationSubmitLink("btn", new ButtonOptions(ButtonState.DISABLED)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonState.DISABLED.name()))); + } + + @Test + public void testAdvancedExpansion() { + testButton(new WicketTester(), new FoundationSubmitLink("btn", new ButtonOptions(ButtonExpansion.EXPAND)), + Arrays.asList(StringUtil.EnumNameToCssClassName(ButtonExpansion.EXPAND.name()))); + } + + private void testButton(WicketTester tester, FoundationSubmitLink btn, List additionalCssClassesToVerify) { + tester.startComponentInPage(btn); + TagTester tagTester = tester.getTagByWicketId(btn.getId()); + assertTrue(tagTester.getAttributeContains("class", "button")); + for (String clazz: additionalCssClassesToVerify) { + assertTrue(tagTester.getAttributeContains("class", clazz)); + } + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonBarTestPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonBarTestPage.html new file mode 100644 index 0000000000..2419f67b74 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonBarTestPage.html @@ -0,0 +1,13 @@ + + + + +wicket-foundation + + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonBarTestPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonBarTestPage.java new file mode 100644 index 0000000000..4a50697a6f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonBarTestPage.java @@ -0,0 +1,26 @@ +package org.wicketstuff.foundation.buttongroup; + +import java.util.ArrayList; + +import org.apache.wicket.markup.html.WebPage; +import org.wicketstuff.foundation.button.ButtonOptions; + +public class ButtonBarTestPage extends WebPage { + + private static final long serialVersionUID = 1L; + + public ButtonBarTestPage() { + FoundationButtonBarBorder border = new FoundationButtonBarBorder("border"); + add(border); + border.add(createBasicButtonGroup("first")); + border.add(createBasicButtonGroup("second")); + } + + private TestButtonGroupPanel createBasicButtonGroup(String id) { + ArrayList btnOptions = new ArrayList<>(); + btnOptions.add(new ButtonOptions()); + ButtonGroupOptions groupOptions = new ButtonGroupOptions(); + TestButtonGroupPanel group = new TestButtonGroupPanel(id, groupOptions, btnOptions); + return group; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonGroupPanelTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonGroupPanelTest.java new file mode 100644 index 0000000000..0659b62cdb --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonGroupPanelTest.java @@ -0,0 +1,90 @@ +package org.wicketstuff.foundation.buttongroup; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonOptions; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.util.StringUtil; + +public class ButtonGroupPanelTest { + + @Test + public void renderBasicTest() { + WicketTester tester = new WicketTester(); + tester.startComponentInPage(createBasicButtonGroup("buttons")); + TagTester tag = tester.getTagByWicketId("buttons"); + tag.getAttributeContains("class", "button-group"); + } + + @Test + public void renderAdvancedTest() { + WicketTester tester = new WicketTester(); + tester.startComponentInPage(createAdvancedButtonGroup("buttons")); + TagTester group = tester.getTagByWicketId("group"); + assertTrue(group.getAttributeContains("class", "button-group")); + assertTrue(group.getAttributeContains("class", StringUtil.EnumNameToCssClassName(ButtonRadius.ROUND.name()))); + List btnList = tester.getTagsByWicketId("btn"); + assertTrue(btnList.get(0).getAttributeContains("class", + "button")); + assertTrue(btnList.get(0).getAttributeContains("class", + StringUtil.EnumNameToCssClassName(ButtonColor.ALERT.name()))); + assertTrue(btnList.get(1).getAttributeContains("class", + "button")); + assertTrue(btnList.get(1).getAttributeContains("class", + StringUtil.EnumNameToCssClassName(ButtonColor.SECONDARY.name()))); + assertTrue(btnList.get(2).getAttributeContains("class", + "button")); + assertTrue(btnList.get(2).getAttributeContains("class", + StringUtil.EnumNameToCssClassName(ButtonColor.SUCCESS.name()))); + } + + @Test + public void renderButtonBarTest() { + WicketTester tester = new WicketTester(); + tester.startPage(ButtonBarTestPage.class); + tester.dumpPage(); + TagTester tag = tester.getTagByWicketId("border"); + tag.getAttributeContains("class", "button-bar"); + } + + @Test + public void renderStacked() { + WicketTester tester = new WicketTester(); + tester.startComponentInPage(createStackedButtonGroup("buttons")); + } + + private TestButtonGroupPanel createBasicButtonGroup(String id) { + ArrayList btnOptions = new ArrayList<>(); + btnOptions.add(new ButtonOptions()); + ButtonGroupOptions groupOptions = new ButtonGroupOptions(); + TestButtonGroupPanel group = new TestButtonGroupPanel(id, groupOptions, btnOptions); + return group; + } + + private TestButtonGroupPanel createAdvancedButtonGroup(String id) { + ArrayList btnOptions = new ArrayList<>(); + btnOptions.add(new ButtonOptions(ButtonColor.ALERT)); + btnOptions.add(new ButtonOptions(ButtonColor.SECONDARY)); + btnOptions.add(new ButtonOptions(ButtonColor.SUCCESS)); + ButtonGroupOptions groupOptions = new ButtonGroupOptions(ButtonRadius.ROUND); + TestButtonGroupPanel group = new TestButtonGroupPanel(id, groupOptions, btnOptions); + return group; + } + + private TestButtonGroupPanel createStackedButtonGroup(String id) { + ArrayList btnOptions = new ArrayList<>(); + btnOptions.add(new ButtonOptions(ButtonColor.ALERT)); + btnOptions.add(new ButtonOptions(ButtonColor.SECONDARY)); + btnOptions.add(new ButtonOptions(ButtonColor.SUCCESS)); + ButtonGroupOptions groupOptions = new ButtonGroupOptions(ButtonGroupStacking.STACK); + TestButtonGroupPanel group = new TestButtonGroupPanel(id, groupOptions, btnOptions); + return group; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonGroupTestPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonGroupTestPage.html new file mode 100644 index 0000000000..94d839d6dd --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonGroupTestPage.html @@ -0,0 +1,9 @@ + + + + +wicket-foundation + + + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonGroupTestPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonGroupTestPage.java new file mode 100644 index 0000000000..8dffadb36a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/ButtonGroupTestPage.java @@ -0,0 +1,9 @@ +package org.wicketstuff.foundation.buttongroup; + +import org.apache.wicket.markup.html.WebPage; + +public class ButtonGroupTestPage extends WebPage { + + private static final long serialVersionUID = 1L; + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/TestButtonGroupPanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/TestButtonGroupPanel.java new file mode 100644 index 0000000000..74d5877c8d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/buttongroup/TestButtonGroupPanel.java @@ -0,0 +1,32 @@ +package org.wicketstuff.foundation.buttongroup; + +import java.util.List; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.wicketstuff.foundation.button.ButtonOptions; +import org.wicketstuff.foundation.button.FoundationLink; + +class TestButtonGroupPanel extends FoundationButtonGroup { + + private static final long serialVersionUID = 1L; + + public TestButtonGroupPanel(String id, ButtonGroupOptions groupOptions, + List btnOptions) { + super(id, groupOptions, btnOptions); + } + + @Override + protected WebMarkupContainer createButton(int idx, String id, IModel optionsModel) { + return new FoundationLink(id, optionsModel.getObject()) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + setResponsePage(ButtonGroupTestPage.class); + } + + }; + } +} \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/dropdown/DropdownOptionsTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/dropdown/DropdownOptionsTest.java new file mode 100644 index 0000000000..219cc3b0a1 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/dropdown/DropdownOptionsTest.java @@ -0,0 +1,25 @@ +package org.wicketstuff.foundation.dropdown; + +import org.junit.Test; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonExpansion; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.button.ButtonSize; + +public class DropdownOptionsTest { + + @Test + public void test() { + DropdownOptions options = new DropdownOptions(); + DropdownOptions options2 = new DropdownOptions(options); + options2 = options2.setColor(ButtonColor.ALERT).setRadius(ButtonRadius.ROUND) + .setSize(ButtonSize.LARGE).setExpansion(ButtonExpansion.EXPAND); + DropdownOptions options3 = new DropdownOptions(options2.getColor()); + DropdownOptions options4 = new DropdownOptions(options2.getRadius()); + DropdownOptions options5 = new DropdownOptions(options2.getSize()); + DropdownOptions options6 = new DropdownOptions(options2.getExpansion()); + DropdownOptions options7 = new DropdownOptions(DropdownListStyle.LARGE); + DropdownOptions options8 = new DropdownOptions(DropdownListAlignment.RIGHT); + DropdownOptions options9 = new DropdownOptions(DropdownHover.HOVERABLE); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/dropdown/FoundationDropdownTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/dropdown/FoundationDropdownTest.java new file mode 100644 index 0000000000..c5276d5977 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/dropdown/FoundationDropdownTest.java @@ -0,0 +1,183 @@ +package org.wicketstuff.foundation.dropdown; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; + +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonExpansion; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.button.ButtonSize; + +public class FoundationDropdownTest { + + @Test + public void renderDropdownTest() { + WicketTester tester = new WicketTester(); + FoundationDropdown dropdown = new FoundationDropdown("id", "dropdown", new DropdownOptions(), Arrays.asList("foo", "bar", "baz")) { + + @Override + protected AbstractLink createDropdownLink(int idx, String id) { + return new Link(id) { + @Override + public void onClick() {} + }; + } + + }; + tester.startComponentInPage(dropdown); + tester.dumpPage(); + TagTester btnTag = tester.getTagByWicketId("btn"); + TagTester containerTag = tester.getTagByWicketId("container"); + assertEquals(btnTag.getAttribute("data-dropdown"), containerTag.getAttribute("id")); + assertEquals("a", btnTag.getName()); + assertTrue(containerTag.getMarkup().contains("data-dropdown-content")); + assertTrue(containerTag.getAttributeContains("class", "f-dropdown")); + assertEquals(3, tester.getTagsByWicketId("item").size()); + assertEquals(3, tester.getTagsByWicketId("link").size()); + assertEquals(3, tester.getTagsByWicketId("body").size()); + assertEquals(tester.getTagsByWicketId("body").get(0).getValue(), "foo"); + assertEquals(tester.getTagsByWicketId("body").get(1).getValue(), "bar"); + assertEquals(tester.getTagsByWicketId("body").get(2).getValue(), "baz"); + } + + @Test + public void renderDropdownLinkTest() { + WicketTester tester = new WicketTester(); + FoundationDropdown dropdown = new FoundationDropdown("id", "dropdown", new DropdownOptions(DropdownType.DROPDOWNLINK), Arrays.asList("foo", "bar", "baz")) { + + @Override + protected AbstractLink createDropdownLink(int idx, String id) { + return new Link(id) { + @Override + public void onClick() {} + }; + } + + }; + tester.startComponentInPage(dropdown); + tester.dumpPage(); + TagTester btnTag = tester.getTagByWicketId("btn"); + TagTester containerTag = tester.getTagByWicketId("container"); + assertEquals(btnTag.getAttribute("data-dropdown"), containerTag.getAttribute("id")); + assertEquals("a", btnTag.getName()); + assertEquals("button", btnTag.getAttribute("class")); + assertTrue(containerTag.getMarkup().contains("data-dropdown-content")); + assertTrue(containerTag.getAttributeContains("class", "f-dropdown")); + assertEquals(3, tester.getTagsByWicketId("item").size()); + assertEquals(3, tester.getTagsByWicketId("link").size()); + assertEquals(3, tester.getTagsByWicketId("body").size()); + assertEquals(tester.getTagsByWicketId("body").get(0).getValue(), "foo"); + assertEquals(tester.getTagsByWicketId("body").get(1).getValue(), "bar"); + assertEquals(tester.getTagsByWicketId("body").get(2).getValue(), "baz"); + } + + @Test + public void renderDropdownButtonTest() { + WicketTester tester = new WicketTester(); + FoundationDropdown dropdown = new FoundationDropdown("id", "dropdown", new DropdownOptions(DropdownType.DROPDOWNBUTTON), Arrays.asList("foo", "bar", "baz")) { + + @Override + protected AbstractLink createDropdownLink(int idx, String id) { + return new Link(id) { + @Override + public void onClick() {} + }; + } + + }; + tester.startComponentInPage(dropdown); + tester.dumpPage(); + TagTester btnTag = tester.getTagByWicketId("btn"); + TagTester containerTag = tester.getTagByWicketId("container"); + assertEquals(btnTag.getAttribute("data-dropdown"), containerTag.getAttribute("id")); + assertEquals("button", btnTag.getName()); + assertTrue(btnTag.getAttributeContains("class", "button")); + assertTrue(btnTag.getAttributeContains("class", "dropdown")); + assertTrue(containerTag.getMarkup().contains("data-dropdown-content")); + assertTrue(containerTag.getAttributeContains("class", "f-dropdown")); + assertEquals(3, tester.getTagsByWicketId("item").size()); + assertEquals(3, tester.getTagsByWicketId("link").size()); + assertEquals(3, tester.getTagsByWicketId("body").size()); + assertEquals(tester.getTagsByWicketId("body").get(0).getValue(), "foo"); + assertEquals(tester.getTagsByWicketId("body").get(1).getValue(), "bar"); + assertEquals(tester.getTagsByWicketId("body").get(2).getValue(), "baz"); + } + + @Test + public void renderDropdownButtonAdvancedTest() { + WicketTester tester = new WicketTester(); + + DropdownOptions options = new DropdownOptions(DropdownType.DROPDOWNBUTTON); + options.setColor(ButtonColor.ALERT); + options.setExpansion(ButtonExpansion.EXPAND); + options.setHover(DropdownHover.HOVERABLE); + options.setListAlignment(DropdownListAlignment.LEFT); + options.setListStyle(DropdownListStyle.LARGE); + options.setRadius(ButtonRadius.ROUND); + options.setSize(ButtonSize.LARGE); + + FoundationDropdown dropdown = new FoundationDropdown("id", "dropdown", options, Arrays.asList("foo", "bar", "baz")) { + + @Override + protected AbstractLink createDropdownLink(int idx, String id) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + + }; + tester.startComponentInPage(dropdown); + tester.dumpPage(); + TagTester btnTag = tester.getTagByWicketId("btn"); + TagTester containerTag = tester.getTagByWicketId("container"); + assertEquals(btnTag.getAttribute("data-dropdown"), + containerTag.getAttribute("id")); + assertEquals("button", btnTag.getName()); + assertTrue(btnTag.getAttributeContains("class", "button")); + assertTrue(btnTag.getAttributeContains("class", "dropdown")); + assertTrue(containerTag.getMarkup().contains("data-dropdown-content")); + assertTrue(containerTag.getAttributeContains("class", "f-dropdown")); + assertEquals(3, tester.getTagsByWicketId("item").size()); + assertEquals(3, tester.getTagsByWicketId("link").size()); + assertEquals(3, tester.getTagsByWicketId("body").size()); + assertEquals(tester.getTagsByWicketId("body").get(0).getValue(), "foo"); + assertEquals(tester.getTagsByWicketId("body").get(1).getValue(), "bar"); + assertEquals(tester.getTagsByWicketId("body").get(2).getValue(), "baz"); + + assertTrue(btnTag.getAttributeContains("class", "alert")); + assertTrue(btnTag.getAttributeContains("class", "round")); + assertTrue(btnTag.getAttributeContains("class", "large")); + assertTrue(btnTag.getAttributeContains("class", "expand")); + assertTrue(btnTag.getAttributeContains("data-options", "align:left")); + assertTrue(btnTag.getAttributeContains("data-options", "is_hover:true")); + assertTrue(containerTag.getAttributeContains("class", "large")); + } + + @Test + public void renderDropdownContentTest() { + WicketTester tester = new WicketTester(); + final String testContent = "frog"; + FoundationContentDropdown dropdown = new FoundationContentDropdown("id", "dropdown", new DropdownOptions(DropdownType.DROPDOWNCONTENT), testContent); + tester.startComponentInPage(dropdown); + tester.dumpPage(); + TagTester btnTag = tester.getTagByWicketId("btn"); + TagTester containerTag = tester.getTagByWicketId("content"); + assertEquals(btnTag.getAttribute("data-dropdown"), containerTag.getAttribute("id")); + assertEquals("a", btnTag.getName()); + assertTrue(containerTag.getMarkup().contains("data-dropdown-content")); + assertTrue(containerTag.getAttributeContains("class", "f-dropdown")); + assertEquals(0, tester.getTagsByWicketId("item").size()); + assertEquals(0, tester.getTagsByWicketId("link").size()); + assertEquals(0, tester.getTagsByWicketId("body").size()); + assertEquals(containerTag.getValue(), testContent); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/foundationpanel/FoundationBorderTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/foundationpanel/FoundationBorderTest.java new file mode 100644 index 0000000000..5fc07c8c8f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/foundationpanel/FoundationBorderTest.java @@ -0,0 +1,29 @@ +package org.wicketstuff.foundation.foundationpanel; + +import static org.junit.Assert.assertEquals; + +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; + +public class FoundationBorderTest { + + @Test + public void renderNormalTest() { + WicketTester tester = new WicketTester(); + FoundationPanelBorder border = new FoundationPanelBorder("foo", Model.of(PanelType.NORMAL)); + tester.startComponentInPage(border); + TagTester tagTester = tester.getTagByWicketId("wrapper"); + assertEquals("panel", tagTester.getAttribute("class")); + } + + @Test + public void renderCalloutTest() { + WicketTester tester = new WicketTester(); + FoundationPanelBorder border = new FoundationPanelBorder("foo", Model.of(PanelType.CALLOUT)); + tester.startComponentInPage(border); + TagTester tagTester = tester.getTagByWicketId("wrapper"); + assertEquals("panel callout radius", tagTester.getAttribute("class")); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/foundationpanel/FoundationPanelTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/foundationpanel/FoundationPanelTest.java new file mode 100644 index 0000000000..802f4a56cc --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/foundationpanel/FoundationPanelTest.java @@ -0,0 +1,39 @@ +package org.wicketstuff.foundation.foundationpanel; + +import static org.junit.Assert.assertEquals; + +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; + +public class FoundationPanelTest { + + @Test + public void renderNormalTest() { + WicketTester tester = new WicketTester(); + TestPanel panel = new TestPanel("panel", Model.of(PanelType.NORMAL)); + tester.startComponentInPage(panel); + TagTester tagTester = tester.getTagByWicketId("panel"); + assertEquals("panel", tagTester.getAttribute("class")); + } + + @Test + public void renderCalloutTest() { + WicketTester tester = new WicketTester(); + TestPanel panel = new TestPanel("panel", Model.of(PanelType.CALLOUT)); + tester.startComponentInPage(panel); + TagTester tagTester = tester.getTagByWicketId("panel"); + assertEquals("panel callout radius", tagTester.getAttribute("class")); + } + + private static class TestPanel extends FoundationPanel { + + private static final long serialVersionUID = 1L; + + public TestPanel(String id, IModel type) { + super(id, type); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/icon/FoundationIconTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/icon/FoundationIconTest.java new file mode 100644 index 0000000000..1918261cd4 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/icon/FoundationIconTest.java @@ -0,0 +1,30 @@ +package org.wicketstuff.foundation.icon; + +import static org.junit.Assert.assertTrue; + +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; + +public class FoundationIconTest { + + @Test + public void testBasic() { + WicketTester tester = new WicketTester(); + FoundationIcon foundationIcon = new FoundationIcon("id", IconType.ARROW_RIGHT); + tester.startComponentInPage(foundationIcon); + TagTester idTag = tester.getTagByWicketId("id"); + assertTrue(idTag.getAttributeIs("class", "fi-arrow-right")); + } + + @Test + public void testAdvanced() { + WicketTester tester = new WicketTester(); + FoundationIcon foundationIcon = new FoundationIcon("id", IconType.ARROW_RIGHT, IconSize.LARGE); + tester.startComponentInPage(foundationIcon); + TagTester idTag = tester.getTagByWicketId("id"); + assertTrue(idTag.getAttributeContains("class", "fi-arrow-right")); + assertTrue(idTag.getAttributeContains("class", "large")); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/FoundationIconBarTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/FoundationIconBarTest.java new file mode 100644 index 0000000000..0d322e65a4 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/FoundationIconBarTest.java @@ -0,0 +1,43 @@ +package org.wicketstuff.foundation.iconbar; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.request.resource.PackageResourceReference; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.icon.IconType; + +public class FoundationIconBarTest { + + @Test + public void testBasic() { + WicketTester tester = new WicketTester(); + List items = new ArrayList<>(); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-arrow-down.svg"), "Down")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-arrow-left.svg"), "Left")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-arrow-right.svg"), "Right")); + FoundationIconBar iconBar = new FoundationIconBar("id", items); + tester.startComponentInPage(iconBar); + } + @Test + public void testIcon() { + WicketTester tester = new WicketTester(); + List items = new ArrayList<>(); + items.add(new IconBarFontItem(IconType.ARROW_DOWN, "Down")); + items.add(new IconBarFontItem(IconType.ARROW_LEFT, "Left")); + items.add(new IconBarFontItem(IconType.ARROW_RIGHT, "Right")); + FoundationIconBar iconBar = new FoundationIconBar("id", items); + tester.startComponentInPage(iconBar); + } + @Test + public void testVertical() { + WicketTester tester = new WicketTester(); + List items = new ArrayList<>(); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-arrow-down.svg"), "Down")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-arrow-left.svg"), "Left")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-arrow-right.svg"), "Right")); + FoundationIconBar iconBar = new FoundationIconBar("id", new IconBarOptions(IconBarVerticalStyle.VERTICAL), items); + tester.startComponentInPage(iconBar); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/fi-arrow-down.svg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/fi-arrow-down.svg new file mode 100644 index 0000000000..53cb1a927e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/fi-arrow-down.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/fi-arrow-left.svg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/fi-arrow-left.svg new file mode 100644 index 0000000000..c0c4d72f23 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/fi-arrow-left.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/fi-arrow-right.svg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/fi-arrow-right.svg new file mode 100644 index 0000000000..9da35e9b45 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/iconbar/fi-arrow-right.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/inlinelist/FoundationInlineListTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/inlinelist/FoundationInlineListTest.java new file mode 100644 index 0000000000..2f350b1453 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/inlinelist/FoundationInlineListTest.java @@ -0,0 +1,47 @@ +package org.wicketstuff.foundation.inlinelist; + +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; + +public class FoundationInlineListTest { + + @Test + public void testBasic() { + WicketTester tester = new WicketTester(); + List titles = Arrays.asList("Foo", "Bar", "Baz"); + FoundationInlineList inlineList = new FoundationInlineList("id", titles) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createLink(String id, int idx) { + return new AjaxLink(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + } + + }; + } + + }; + tester.startComponentInPage(inlineList); + tester.dumpPage(); + List textTags = tester.getTagsByWicketId("text"); + assertEquals(3, textTags.size()); + assertEquals("Foo", textTags.get(0).getValue()); + assertEquals("Bar", textTags.get(1).getValue()); + assertEquals("Baz", textTags.get(2).getValue()); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/label/FoundationLabelTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/label/FoundationLabelTest.java new file mode 100644 index 0000000000..9798b82467 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/label/FoundationLabelTest.java @@ -0,0 +1,24 @@ +package org.wicketstuff.foundation.label; + +import static org.junit.Assert.assertTrue; + +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; + +public class FoundationLabelTest { + + @Test + public void test() { + WicketTester tester = new WicketTester(); + FoundationLabel label = new FoundationLabel("id", "hello", new LabelOptions(ButtonColor.SUCCESS, ButtonRadius.ROUND)); + tester.startComponentInPage(label); + tester.dumpPage(); + TagTester tag = tester.getTagByWicketId("id"); + assertTrue(tag.getAttributeContains("class", "label")); + assertTrue(tag.getAttributeContains("class", "success")); + assertTrue(tag.getAttributeContains("class", "round")); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSliderTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSliderTest.java new file mode 100644 index 0000000000..45ce45d87e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/FoundationOrbitSliderTest.java @@ -0,0 +1,51 @@ +package org.wicketstuff.foundation.orbitslider; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.model.util.ListModel; +import org.apache.wicket.request.resource.PackageResourceReference; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Assert; +import org.junit.Test; + +/** + * + * Unit test for orbit slider component. + * + */ +public class FoundationOrbitSliderTest { + + @Test + public void testFoundationOrbitSlider() { + WicketTester tester = new WicketTester(); + List items = new ArrayList<>(); + items.add(new OrbitSliderItem("1", new PackageResourceReference(this.getClass(), "andromeda-orbit.jpg"), "Caption 1")); + items.add(new OrbitSliderItem("2", new PackageResourceReference(this.getClass(), "launch-orbit.jpg"), "Caption 2")); + items.add(new OrbitSliderItem("3", new PackageResourceReference(this.getClass(), "satelite-orbit.jpg"), "Caption 3")); + FoundationOrbitSlider orbitSlider = new FoundationOrbitSlider("foobar", new ListModel<>(items)); + tester.startComponentInPage(orbitSlider); + tester.debugComponentTrees(); + tester.dumpPage(); + Assert.assertTrue(tester.getTagByWicketId("container").hasAttribute("data-orbit")); + Assert.assertEquals(3, tester.getTagsByWicketId("img").size()); + Assert.assertEquals(3, tester.getTagsByWicketId("captionContainer").size()); + Assert.assertEquals(3, tester.getTagsByWicketId("caption").size()); + } + + @Test + public void testFoundationOrbitContentSlider() { + WicketTester tester = new WicketTester(); + List items = new ArrayList<>(); + items.add(new OrbitSliderContent("1", "Heading 1", "Subheading 1")); + items.add(new OrbitSliderContent("2", "Heading 2", "Subheading 2")); + items.add(new OrbitSliderContent("3", "Heading 3", "Subheading 3")); + FoundationOrbitContentSlider orbitSlider = new FoundationOrbitContentSlider("foobar", new ListModel<>(items)); + tester.startComponentInPage(orbitSlider); + tester.debugComponentTrees(); + tester.dumpPage(); + Assert.assertTrue(tester.getTagByWicketId("container").hasAttribute("data-orbit")); + Assert.assertEquals(3, tester.getTagsByWicketId("heading").size()); + Assert.assertEquals(3, tester.getTagsByWicketId("subheading").size()); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/andromeda-orbit.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/andromeda-orbit.jpg new file mode 100644 index 0000000000..d110064eaa Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/andromeda-orbit.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/launch-orbit.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/launch-orbit.jpg new file mode 100644 index 0000000000..ddd7d427d4 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/launch-orbit.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/satelite-orbit.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/satelite-orbit.jpg new file mode 100644 index 0000000000..a718155e9e Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/orbitslider/satelite-orbit.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/pricingtable/FoundationPricingTableTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/pricingtable/FoundationPricingTableTest.java new file mode 100644 index 0000000000..dcf922d22f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/pricingtable/FoundationPricingTableTest.java @@ -0,0 +1,55 @@ +package org.wicketstuff.foundation.pricingtable; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Assert; +import org.junit.Test; + +/** + * + * Unit test for pricing table component. + * + */ +public class FoundationPricingTableTest { + + @Test + public void test() { + WicketTester tester = new WicketTester(); + List items = new ArrayList<>(); + items.add(new PricingTableItem(PricingTableItemType.TITLE, "Hammer")); + items.add(new PricingTableItem(PricingTableItemType.PRICE, "12€")); + items.add(new PricingTableItem(PricingTableItemType.DESCRIPTION, "A really good hammer")); + items.add(new PricingTableItem(PricingTableItemType.BULLET_ITEM, "Weight 3kg")); + items.add(new PricingTableItem(PricingTableItemType.CTA_BUTTON)); + FoundationPricingTable table = new FoundationPricingTable("table", new ListModel<>(items)) { + + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel model) { + return new PricingTableButtonPanel(id, Model.of("Buy now")) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + } + }; + } + + }; + tester.startComponentInPage(table); + tester.debugComponentTrees(); + tester.dumpPage(); + Assert.assertEquals("pricing-table", tester.getTagByWicketId("container").getAttribute("class")); + Assert.assertEquals(5, tester.getTagsByWicketId("item").size()); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/progressbar/FoundationProgressBarPanelTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/progressbar/FoundationProgressBarPanelTest.java new file mode 100644 index 0000000000..c87b8a1d49 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/progressbar/FoundationProgressBarPanelTest.java @@ -0,0 +1,40 @@ +package org.wicketstuff.foundation.progressbar; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; + +public class FoundationProgressBarPanelTest { + + @Test + public void testBasic() { + WicketTester tester = new WicketTester(); + FoundationProgressBar progress = new FoundationProgressBar("id", 100); + tester.startComponentInPage(progress); + TagTester progressContainerTag = tester.getTagByWicketId("progressContainer"); + assertEquals("progress", progressContainerTag.getAttribute("class")); + TagTester progressTag = tester.getTagByWicketId("progress"); + assertEquals("meter", progressTag.getAttribute("class")); + } + + @Test + public void testAdvanced() { + WicketTester tester = new WicketTester(); + ProgressBarOptions options = new ProgressBarOptions().setColor(ButtonColor.SUCCESS).setRadius(ButtonRadius.ROUND); + FoundationProgressBar progress = new FoundationProgressBar("id", options, 47); + tester.startComponentInPage(progress); + tester.dumpPage(); + TagTester progressContainerTag = tester.getTagByWicketId("progressContainer"); + assertTrue(progressContainerTag.getAttributeContains("class", "progress")); + assertTrue(progressContainerTag.getAttributeContains("class", "success")); + assertTrue(progressContainerTag.getAttributeContains("class", "round")); + TagTester progressTag = tester.getTagByWicketId("progress"); + assertEquals("meter", progressTag.getAttribute("class")); + assertEquals("width:47%", progressTag.getAttribute("style")); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/revealmodal/FoundationRevealModalTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/revealmodal/FoundationRevealModalTest.java new file mode 100644 index 0000000000..b22f899d40 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/revealmodal/FoundationRevealModalTest.java @@ -0,0 +1,23 @@ +package org.wicketstuff.foundation.revealmodal; + +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Assert; +import org.junit.Test; + +public class FoundationRevealModalTest { + + @Test + public void test() { + WicketTester tester = new WicketTester(); + FoundationRevealModal modal = new FoundationRevealModal("modal", Model.of("Click for modal"), Model.of("

    heading

    some text comes here

    ")); + tester.startComponentInPage(modal); + tester.debugComponentTrees(); + tester.dumpPage(); + String dataRevealId = tester.getTagByWicketId("openLink").getAttribute("data-reveal-id"); + String modalContentId = tester.getTagByWicketId("modalContent").getAttribute("id"); + Assert.assertEquals(dataRevealId, modalContentId); + Assert.assertEquals("reveal-modal", tester.getTagByWicketId("modalContent").getAttribute("class")); + Assert.assertTrue(tester.getTagByWicketId("modalContent").hasAttribute("data-reveal")); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/sidenav/FoundationSideNavTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/sidenav/FoundationSideNavTest.java new file mode 100644 index 0000000000..3bd63108cb --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/sidenav/FoundationSideNavTest.java @@ -0,0 +1,58 @@ +package org.wicketstuff.foundation.sidenav; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; + +public class FoundationSideNavTest { + + @Test + public void test() { + WicketTester tester = new WicketTester(); + List items= new ArrayList<>(); + items.add(new SideNavHeaderItem("Header")); + items.add(new SideNavLinkItem("Link 1", true)); + items.add(new SideNavLinkItem("Link 2")); + items.add(new SideNavLinkItem("Link 3")); + items.add(new SideNavDividerItem()); + items.add(new SideNavLinkItem("Link 4")); + FoundationSideNav sideNav = new FoundationSideNav("id", items) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createLink(String id, int idx) { + return new Link(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + }; + tester.startComponentInPage(sideNav); + tester.dumpPage(); + TagTester sideNavContainer = tester.getTagByWicketId("sideNavContainer"); + assertTrue(sideNavContainer.getAttributeIs("class", "side-nav")); + List sideNavItems = tester.getTagsByWicketId("sideNavItem"); + assertEquals(sideNavItems.size(), items.size()); + assertTrue(sideNavItems.get(0).getAttributeIs("class", "heading")); + assertTrue(sideNavItems.get(0).getValue().contains("Header")); + assertTrue(sideNavItems.get(1).getAttributeIs("class", "active")); + assertTrue(sideNavItems.get(1).getValue().contains("Link 1")); + assertTrue(sideNavItems.get(2).getValue().contains("Link 2")); + assertTrue(sideNavItems.get(3).getValue().contains("Link 3")); + assertTrue(sideNavItems.get(4).getAttributeIs("class", "divider")); + assertTrue(sideNavItems.get(5).getValue().contains("Link 4")); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/splitbutton/FoundationSplitButtonTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/splitbutton/FoundationSplitButtonTest.java new file mode 100644 index 0000000000..be99848fe4 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/splitbutton/FoundationSplitButtonTest.java @@ -0,0 +1,47 @@ +package org.wicketstuff.foundation.splitbutton; + +import java.util.Arrays; + +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; + +public class FoundationSplitButtonTest { + + @Test + public void testBasic() { + WicketTester tester = new WicketTester(); + FoundationSplitButton splitButton = new FoundationSplitButton("id", "button", Arrays.asList("link1", "link2", "link3")) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createButton(String id) { + return new Link(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + + @Override + public AbstractLink createDropdownLink(String id, int idx) { + return new Link(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + + }; + tester.startComponentInPage(splitButton); + tester.dumpPage(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/subnav/FoundationSubNavTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/subnav/FoundationSubNavTest.java new file mode 100644 index 0000000000..7e2f41ccd2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/subnav/FoundationSubNavTest.java @@ -0,0 +1,40 @@ +package org.wicketstuff.foundation.subnav; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; + +public class FoundationSubNavTest { + + @Test + public void test() { + WicketTester tester = new WicketTester(); + List items = new ArrayList<>(); + items.add(new SubNavItem("All", true)); + items.add(new SubNavItem("Active")); + items.add(new SubNavItem("Pending")); + items.add(new SubNavItem("Suspended")); + FoundationSubNav subNav = new FoundationSubNav("id", "Nav title", items) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createLink(String id, int idx) { + return new Link(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + }; + tester.startComponentInPage(subNav); + tester.dumpPage(); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/thumbnail/FoundationThumbnailTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/thumbnail/FoundationThumbnailTest.java new file mode 100644 index 0000000000..0892e53144 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/thumbnail/FoundationThumbnailTest.java @@ -0,0 +1,23 @@ +package org.wicketstuff.foundation.thumbnail; + +import org.apache.wicket.request.resource.PackageResourceReference; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Assert; +import org.junit.Test; + +public class FoundationThumbnailTest { + + @Test + public void test() { + WicketTester tester = new WicketTester(); + FoundationThumbnail thumb = new FoundationThumbnail("test", new PackageResourceReference(this.getClass(), "space.jpg"), + new PackageResourceReference(this.getClass(), "space-th-sm.jpg")); + tester.startComponentInPage(thumb); + tester.dumpPage(); + TagTester fullImageLink = tester.getTagByWicketId("fullImageLink"); + Assert.assertEquals("th", fullImageLink.getAttribute("class")); + Assert.assertEquals(1, tester.getTagsByWicketId("fullImageLink").size()); + Assert.assertEquals(1, tester.getTagsByWicketId("thumbnail").size()); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/thumbnail/space-th-sm.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/thumbnail/space-th-sm.jpg new file mode 100644 index 0000000000..7dfcea9f4e Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/thumbnail/space-th-sm.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/thumbnail/space.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/thumbnail/space.jpg new file mode 100644 index 0000000000..314a57cdba Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/thumbnail/space.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/tooltip/FoundationTooltipBehaviorTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/tooltip/FoundationTooltipBehaviorTest.java new file mode 100644 index 0000000000..f9c762cf3c --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/tooltip/FoundationTooltipBehaviorTest.java @@ -0,0 +1,51 @@ +package org.wicketstuff.foundation.tooltip; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.button.ButtonRadius; + +public class FoundationTooltipBehaviorTest { + + @Test + public void testBasic() { + WicketTester tester = new WicketTester(); + Label label = new Label("id", Model.of("Some content")); + FoundationTooltipBehavior tooltip = new FoundationTooltipBehavior("My tooltip"); + label.add(tooltip); + tester.startComponentInPage(label); + TagTester idTag = tester.getTagByWicketId("id"); + assertTrue(idTag.hasAttribute("data-tooltip")); + assertTrue(idTag.getAttributeIs("aria-haspopup", "true")); + assertTrue(idTag.getAttributeContains("class", "has-tip")); + assertTrue(idTag.getAttributeIs("title", "My tooltip")); + assertEquals("Some content", idTag.getValue()); + } + + @Test + public void testAdvanced() { + WicketTester tester = new WicketTester(); + Label label = new Label("id", Model.of("Some content")); + TooltipOptions options = new TooltipOptions(true).setPosition(TooltipPosition.TIP_RIGHT) + .setRadius(ButtonRadius.ROUND).setVisibility(TooltipVisibility.MEDIUM); + FoundationTooltipBehavior tooltip = new FoundationTooltipBehavior("My tooltip", options); + label.add(tooltip); + tester.startComponentInPage(label); + tester.dumpPage(); + TagTester idTag = tester.getTagByWicketId("id"); + assertTrue(idTag.hasAttribute("data-tooltip")); + assertTrue(idTag.getAttributeIs("aria-haspopup", "true")); + assertTrue(idTag.getAttributeContains("class", "has-tip")); + assertTrue(idTag.getAttributeIs("title", "My tooltip")); + assertEquals("Some content", idTag.getValue()); + assertTrue(idTag.getAttributeContains("class", "tip-right")); + assertTrue(idTag.getAttributeContains("class", "round")); + assertTrue(idTag.getAttributeContains("data-options", "disable_for_touch:true")); + assertTrue(idTag.getAttributeContains("data-options", "show_on:medium")); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/topbar/FoundationTopBarPanelTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/topbar/FoundationTopBarPanelTest.java new file mode 100644 index 0000000000..7c40bf586e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/topbar/FoundationTopBarPanelTest.java @@ -0,0 +1,194 @@ +package org.wicketstuff.foundation.topbar; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.EnumSet; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.markup.html.panel.EmptyPanel; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; + +public class FoundationTopBarPanelTest { + + @Test + public void testBasic() { + WicketTester tester = new WicketTester(); + + ArrayList leftItems = new ArrayList(); + leftItems.add(new SimpleTopBarItem("foo", "Foo")); + leftItems.add(new SimpleTopBarItem("bar", "Bar")); + + FoundationTopBar topBarPanel = new FoundationTopBar("id", new ArrayList(), leftItems) { + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new EmptyPanel(id); + } + @Override + public AbstractLink createLink(String id, String itemId) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + + tester.startComponentInPage(topBarPanel); +// tester.dumpPage(); + TagTester topBarContainer = tester.getTagByWicketId("topBarContainer"); + TagTester topBar = tester.getTagByWicketId("topBar"); + assertEquals("top-bar", topBar.getAttribute("class")); + assertTrue(topBar.hasAttribute("data-topbar")); + assertTrue(topBar.getAttributeIs("role", "navigation")); + tester.assertComponent("id:topBarContainer:topBar:leftContainer:item:1:link", Link.class); + tester.assertComponent("id:topBarContainer:topBar:leftContainer:item:2:link", Link.class); +// tester.debugComponentTrees(); + } + + @Test + public void testFixed() { + WicketTester tester = new WicketTester(); + TopBarOptions options = new TopBarOptions().setFixed(true); + + FoundationTopBar topBarPanel = new FoundationTopBar("id", options, new ArrayList(), new ArrayList()) { + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new EmptyPanel(id); + } + @Override + public AbstractLink createLink(String id, String itemId) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + + tester.startComponentInPage(topBarPanel); + TagTester topBarContainer = tester.getTagByWicketId("topBarContainer"); + assertTrue(topBarContainer.getAttributeContains("class", "fixed")); + TagTester topBar = tester.getTagByWicketId("topBar"); + } + + @Test + public void testPosition() { + WicketTester tester = new WicketTester(); + TopBarOptions options = new TopBarOptions().setClickable(true).setContainToGrid(true) + .setSticky(true).setStickySizes(EnumSet.of(TopBarStickySize.LARGE)); + + FoundationTopBar topBarPanel = new FoundationTopBar("id", options, new ArrayList(), new ArrayList()) { + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new EmptyPanel(id); + } + @Override + public AbstractLink createLink(String id, String itemId) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + + tester.startComponentInPage(topBarPanel); + //tester.dumpPage(); + TagTester topBarContainer = tester.getTagByWicketId("topBarContainer"); + assertTrue(topBarContainer.getAttributeContains("class", "contain-to-grid")); + assertTrue(topBarContainer.getAttributeContains("class", "sticky")); + TagTester topBar = tester.getTagByWicketId("topBar"); + assertTrue(topBar.getAttributeContains("data-options", "is_hover:false")); + assertTrue(topBar.getAttributeContains("data-options", "sticky_on:large")); + } + + @Test + public void testTitlePanel() { + WicketTester tester = new WicketTester(); + + FoundationTopBar topBarPanel = new FoundationTopBar("id", new ArrayList(), new ArrayList()) { + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new FoundationTopBarTitle(id, Model.of("Home"), Model.of(TopBarMenuLayout.TITLE_AND_ICON), Model.of("Menu")) { + @Override + public AbstractLink createTitleLink(String id) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + } + @Override + public AbstractLink createLink(String id, String itemId) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + + tester.startComponentInPage(topBarPanel); + //tester.dumpPage(); + TagTester titleContainer = tester.getTagByWicketId("titleContainer"); + assertEquals("title-area", titleContainer.getAttribute("class")); + TagTester titleLink = tester.getTagByWicketId("titleLink"); + tester.assertComponent("id:topBarContainer:topBar:titleContainer:titleLink", Link.class); + TagTester titleLabel = tester.getTagByWicketId("titleLabel"); + assertEquals("Home", titleLabel.getValue()); + TagTester menuContainer = tester.getTagByWicketId("menuContainer"); + assertEquals("toggle-topbar menu-icon", menuContainer.getAttribute("class")); + TagTester menuTitle = tester.getTagByWicketId("menuTitle"); + assertEquals("Menu", menuTitle.getValue()); + } + + @Test + public void testDropdown() { + WicketTester tester = new WicketTester(); + + ArrayList leftItems = new ArrayList(); + SimpleTopBarItem foo = new SimpleTopBarItem("foo", "Foo"); + SimpleTopBarItem bar = new SimpleTopBarItem("bar", "Bar"); + foo.addChild(bar); + bar.addChild(new SimpleTopBarItem("bar1", "Bar1")); + bar.addChild(new SimpleTopBarItem("bar2", "Bar2")); + leftItems.add(foo); + + FoundationTopBar topBarPanel = new FoundationTopBar("id", new ArrayList(), leftItems) { + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new EmptyPanel(id); + } + @Override + public AbstractLink createLink(String id, String itemId) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + + tester.startComponentInPage(topBarPanel); + tester.dumpPage(); + TagTester topBarContainer = tester.getTagByWicketId("topBarContainer"); + TagTester topBar = tester.getTagByWicketId("topBar"); + assertEquals("top-bar", topBar.getAttribute("class")); + assertTrue(topBar.hasAttribute("data-topbar")); + assertTrue(topBar.getAttributeIs("role", "navigation")); + tester.debugComponentTrees(); + tester.assertComponent("id:topBarContainer:topBar:leftContainer:item:1", TopBarRecursiveLinkPanel.class); + tester.assertComponent("id:topBarContainer:topBar:leftContainer:item:1:dropdown:item:1", TopBarRecursiveLinkPanel.class); + tester.assertComponent("id:topBarContainer:topBar:leftContainer:item:1:dropdown:item:1:dropdown:item:1", TopBarRecursiveLinkPanel.class); + tester.assertComponent("id:topBarContainer:topBar:leftContainer:item:1:dropdown:item:1:dropdown:item:2", TopBarRecursiveLinkPanel.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/util/AttributeTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/util/AttributeTest.java new file mode 100644 index 0000000000..1e32ba7808 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/util/AttributeTest.java @@ -0,0 +1,123 @@ +package org.wicketstuff.foundation.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.parser.XmlTag; +import org.junit.Test; + +public class AttributeTest { + + @Test + public void testSetClass() { + + final ComponentTag tag = new ComponentTag("div", XmlTag.TagType.OPEN_CLOSE); + assertEquals(null, tag.getAttribute("class")); + Attribute.setClass(tag, "pink"); + assertEquals("pink", tag.getAttribute("class")); + Attribute.setClass(tag, "blue"); + assertEquals("blue", tag.getAttribute("class")); + + } + + @Test + public void testAddClass() { + + final ComponentTag tag = new ComponentTag("div", XmlTag.TagType.OPEN_CLOSE); + assertEquals(null, tag.getAttribute("class")); + Attribute.addClass(tag, "pink"); + assertEquals("pink", tag.getAttribute("class")); + Attribute.addClass(tag, "blue"); + assertEquals("pink blue", tag.getAttribute("class")); + Attribute.addClass(tag, "blue"); + assertEquals("pink blue", tag.getAttribute("class")); + + } + + @Test + public void testHasClass() { + + final ComponentTag tag = new ComponentTag("div", XmlTag.TagType.OPEN_CLOSE); + Attribute.setClass(tag, "pink green blue"); + assertTrue(Attribute.hasClass(tag, "pink")); + assertTrue(Attribute.hasClass(tag, "green")); + assertTrue(Attribute.hasClass(tag, "blue")); + assertFalse(Attribute.hasClass(tag, "black")); + + } + + @Test + public void testRemoveClass() { + + final ComponentTag tag = new ComponentTag("div", XmlTag.TagType.OPEN_CLOSE); + Attribute.setClass(tag, "pink blue red"); + assertTrue(Attribute.hasClass(tag, "pink")); + assertTrue(Attribute.hasClass(tag, "blue")); + assertTrue(Attribute.hasClass(tag, "red")); + Attribute.removeClass(tag, "pink"); + assertFalse(Attribute.hasClass(tag, "pink")); + assertTrue(Attribute.hasClass(tag, "blue")); + assertTrue(Attribute.hasClass(tag, "red")); + Attribute.removeClass(tag, "red"); + assertTrue(Attribute.hasClass(tag, "blue")); + assertFalse(Attribute.hasClass(tag, "red")); + Attribute.removeClass(tag, "blue"); + assertFalse(Attribute.hasClass(tag, "blue")); + assertEquals("", tag.getAttribute("class")); + } + + @Test + public void testAddRemoveAttribute() { + final ComponentTag tag = new ComponentTag("div", XmlTag.TagType.OPEN_CLOSE); + Attribute.addAttribute(tag, "data-foobar"); + assertTrue(Attribute.hasAttribute(tag, "data-foobar")); + Attribute.removeAttribute(tag, "data-foobar"); + assertFalse(Attribute.hasAttribute(tag, "data-foobar")); + Attribute.addAttribute(tag, "data-dropdown", "123"); + assertEquals("123", Attribute.getAttribute(tag, "data-dropdown")); + Attribute.removeAttribute(tag, "data-dropdown"); + assertNull(Attribute.getAttribute(tag, "data-dropdown")); + } + + @Test + public void testAddRemoveDataOptions() { + final ComponentTag tag = new ComponentTag("div", XmlTag.TagType.OPEN_CLOSE); + Attribute.setDataOptions(tag, "color:red"); + assertEquals("color:red;", Attribute.getAttribute(tag, "data-options")); + Attribute.setDataOptions(tag, "color:brown"); + assertEquals("color:brown;", Attribute.getAttribute(tag, "data-options")); + Attribute.addDataOptions(tag, "weight:100"); + assertEquals("color:brown;weight:100;", Attribute.getAttribute(tag, "data-options")); + Attribute.addDataOptions(tag, "height:195"); + assertEquals("color:brown;weight:100;height:195;", Attribute.getAttribute(tag, "data-options")); + Attribute.removeDataOptions(tag, "weight:100"); + assertEquals("color:brown;height:195", Attribute.getAttribute(tag, "data-options")); + Attribute.removeDataOptions(tag, "height:195"); + assertEquals("color:brown", Attribute.getAttribute(tag, "data-options")); + assertTrue(Attribute.hasDataOptions(tag, "color:brown")); + } + + @Test + public void testRemoveToken() { + String data1 = "foo bar baz"; + String sep1 = " "; + String result1 = Attribute.removeToken(data1, "foo", sep1); + assertEquals("bar baz", result1); + String result2 = Attribute.removeToken(data1, "bar", sep1); + assertEquals("foo baz", result2); + String result3 = Attribute.removeToken(data1, "baz", sep1); + assertEquals("foo bar", result3); + String result4 = Attribute.removeToken(data1, "hello", sep1); + assertEquals("foo bar baz", result4); + String result5 = Attribute.removeToken(data1, null, sep1); + assertEquals("foo bar baz", result5); + + String data2 = "foo;bar;baz;"; + String sep2 = ";"; + String result6 = Attribute.removeToken(data2, "foo", sep2); + assertEquals("bar;baz", result6); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/util/StringUtilTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/util/StringUtilTest.java new file mode 100644 index 0000000000..ce2c99ceb0 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/util/StringUtilTest.java @@ -0,0 +1,25 @@ +package org.wicketstuff.foundation.util; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class StringUtilTest { + + @Test(expected=IllegalArgumentException.class) + public void testEnumNameToCssClassNameNull() { + + StringUtil.EnumNameToCssClassName(null); + + } + + @Test + public void testEnumNameToCssClassName() { + + assertEquals("show-for-xxlarge-up", StringUtil.EnumNameToCssClassName("SHOW_FOR_XXLARGE_UP")); + + assertEquals("abc123", StringUtil.EnumNameToCssClassName("ABC123")); + + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/HiddenByScreenSizeBehaviorTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/HiddenByScreenSizeBehaviorTest.java new file mode 100644 index 0000000000..8561467429 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/HiddenByScreenSizeBehaviorTest.java @@ -0,0 +1,33 @@ +package org.wicketstuff.foundation.visibility; + +import static org.junit.Assert.assertEquals; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Before; +import org.junit.Test; +import org.wicketstuff.foundation.visibility.FoundationHiddenByScreenSizeBehavior.HiddenByScreenSizeType; + +public class HiddenByScreenSizeBehaviorTest { + + private WebMarkupContainer container; + + private WicketTester tester; + + @Before + public void setup() { + tester = new WicketTester(); + container = new WebMarkupContainer("id"); + container.add(new FoundationHiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_MEDIUM_UP))); + } + + @Test + public void test() { + tester.startComponentInPage(container); + TagTester tagTester = tester.getTagByWicketId("id"); + assertEquals("hidden-for-medium-up", tagTester.getAttribute("class")); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/HideByScreenSizeBehaviorTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/HideByScreenSizeBehaviorTest.java new file mode 100644 index 0000000000..00ebe8e606 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/HideByScreenSizeBehaviorTest.java @@ -0,0 +1,33 @@ +package org.wicketstuff.foundation.visibility; + +import static org.junit.Assert.assertEquals; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Before; +import org.junit.Test; +import org.wicketstuff.foundation.visibility.FoundationHideByScreenSizeBehavior.HideByScreenSizeType; + +public class HideByScreenSizeBehaviorTest { + + private WebMarkupContainer container; + + private WicketTester tester; + + @Before + public void setup() { + tester = new WicketTester(); + container = new WebMarkupContainer("id"); + container.add(new FoundationHideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_MEDIUM_UP))); + } + + @Test + public void test() { + tester.startComponentInPage(container); + TagTester tagTester = tester.getTagByWicketId("id"); + assertEquals("hide-for-medium-up", tagTester.getAttribute("class")); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/ShowByOrientationBehaviorTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/ShowByOrientationBehaviorTest.java new file mode 100644 index 0000000000..6b80921b27 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/ShowByOrientationBehaviorTest.java @@ -0,0 +1,33 @@ +package org.wicketstuff.foundation.visibility; + +import static org.junit.Assert.assertEquals; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Before; +import org.junit.Test; +import org.wicketstuff.foundation.visibility.FoundationShowByOrientationBehavior.ShowByOrientationType; + +public class ShowByOrientationBehaviorTest { + + private WebMarkupContainer container; + + private WicketTester tester; + + @Before + public void setup() { + tester = new WicketTester(); + container = new WebMarkupContainer("id"); + container.add(new FoundationShowByOrientationBehavior(Model.of(ShowByOrientationType.SHOW_FOR_LANDSCAPE))); + } + + @Test + public void test() { + tester.startComponentInPage(container); + TagTester tagTester = tester.getTagByWicketId("id"); + assertEquals("show-for-landscape", tagTester.getAttribute("class")); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/ShowByScreenSizeBehaviorTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/ShowByScreenSizeBehaviorTest.java new file mode 100644 index 0000000000..90f0849216 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/ShowByScreenSizeBehaviorTest.java @@ -0,0 +1,33 @@ +package org.wicketstuff.foundation.visibility; + +import static org.junit.Assert.assertEquals; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Before; +import org.junit.Test; +import org.wicketstuff.foundation.visibility.FoundationShowByScreenSizeBehavior.ShowByScreenSizeType; + +public class ShowByScreenSizeBehaviorTest { + + private WebMarkupContainer container; + + private WicketTester tester; + + @Before + public void setup() { + tester = new WicketTester(); + container = new WebMarkupContainer("id"); + container.add(new FoundationShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_MEDIUM_UP))); + } + + @Test + public void test() { + tester.startComponentInPage(container); + TagTester tagTester = tester.getTagByWicketId("id"); + assertEquals("show-for-medium-up", tagTester.getAttribute("class")); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/TouchDetectionBehaviorTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/TouchDetectionBehaviorTest.java new file mode 100644 index 0000000000..8056fcab14 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/TouchDetectionBehaviorTest.java @@ -0,0 +1,33 @@ +package org.wicketstuff.foundation.visibility; + +import static org.junit.Assert.assertEquals; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Before; +import org.junit.Test; +import org.wicketstuff.foundation.visibility.FoundationTouchDetectionBehavior.TouchDetectionType; + +public class TouchDetectionBehaviorTest { + + private WebMarkupContainer container; + + private WicketTester tester; + + @Before + public void setup() { + tester = new WicketTester(); + container = new WebMarkupContainer("id"); + container.add(new FoundationTouchDetectionBehavior(Model.of(TouchDetectionType.SHOW_FOR_TOUCH))); + } + + @Test + public void test() { + tester.startComponentInPage(container); + TagTester tagTester = tester.getTagByWicketId("id"); + assertEquals("show-for-touch", tagTester.getAttribute("class")); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/VisibleForScreenSizeBehaviorTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/VisibleForScreenSizeBehaviorTest.java new file mode 100644 index 0000000000..a33ffe1725 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-core/src/test/java/org/wicketstuff/foundation/visibility/VisibleForScreenSizeBehaviorTest.java @@ -0,0 +1,33 @@ +package org.wicketstuff.foundation.visibility; + +import static org.junit.Assert.assertEquals; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.Model; +import org.apache.wicket.util.tester.TagTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Before; +import org.junit.Test; +import org.wicketstuff.foundation.visibility.FoundationVisibleForScreenSizeBehavior.VisibleForScreenSizeType; + +public class VisibleForScreenSizeBehaviorTest { + + private WebMarkupContainer container; + + private WicketTester tester; + + @Before + public void setup() { + tester = new WicketTester(); + container = new WebMarkupContainer("id"); + container.add(new FoundationVisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_MEDIUM_UP))); + } + + @Test + public void test() { + tester.startComponentInPage(container); + TagTester tagTester = tester.getTagByWicketId("id"); + assertEquals("visible-for-medium-up", tagTester.getAttribute("class")); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/pom.xml b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/pom.xml new file mode 100644 index 0000000000..0dbe890d04 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/pom.xml @@ -0,0 +1,36 @@ + + + + 4.0.0 + + + wicket-foundation-parent + org.wicketstuff.foundation + 7.0-SNAPSHOT + + + wicket-foundation-samples + war + + + + org.wicketstuff.foundation + wicket-foundation-core + ${project.version} + + + org.apache.wicket + wicket-core + + + junit + junit + + + org.eclipse.jetty.aggregate + jetty-all-server + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/AlertsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/AlertsPage.html new file mode 100644 index 0000000000..eaf160bbba --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/AlertsPage.html @@ -0,0 +1,99 @@ + + + + +wicket-foundation + + + + +
    +

    Alerts

    +

    Alerts are handy elements you can + drop into a form or inline on a page to communicate + success, warnings, failure or just information. + They'll conform to 100% of the container width you + put them in.

    + +
    +

    Basic

    + +

    You can create an alert box using minimal markup.

    +
    +
    + +

    HTML

    + +
    <div wicket:id="basic"></div> +
    +
    + +

    Java

    + +
    add(new FoundationAlert("basic", Model.of("This is standard alert."))); +
    +
    + +
    +
    +

    Rendered HTML

    + +
    + +

    +

    +
    + +

    Advanced

    + +

    You can add more classes to your alert box to change + its appearance.

    +
    +
    + +

    HTML

    + +
    <div wicket:id="successRadius"></div> +<div wicket:id="warningRound"></div> +<div wicket:id="infoRadius"></div> +<div wicket:id="alertRound"></div> +<div wicket:id="secondary"></div> +
    +
    + +

    Java

    + +
    add(new FoundationAlert("successRadius", Model.of("This is a success alert with a radius. "), + new AlertOptions(FoundationButtonColor.SUCCESS, FoundationButtonRadius.RADIUS))); +add(new FoundationAlert("warningRound", Model.of("This is a warning alert that is rounded. "), + new AlertOptions(FoundationButtonColor.WARNING, FoundationButtonRadius.ROUND))); +add(new FoundationAlert("infoRadius", Model.of("This is an info alert with a radius. "), + new AlertOptions(FoundationButtonColor.INFO, FoundationButtonRadius.RADIUS))); +add(new FoundationAlert("alertRound", Model.of("This is an alert - alert that is rounded. "), + new AlertOptions(FoundationButtonColor.ALERT, FoundationButtonRadius.ROUND))); +add(new FoundationAlert("secondary", Model.of("This is a secondary alert. "), + new AlertOptions(FoundationButtonColor.SECONDARY))); +
    +
    +
    +
    +

    Rendered HTML

    + +
    + +
    + +
    + +
    + +
    + +

    +

    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/AlertsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/AlertsPage.java new file mode 100644 index 0000000000..43509e863b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/AlertsPage.java @@ -0,0 +1,29 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.alert.AlertColor; +import org.wicketstuff.foundation.alert.AlertOptions; +import org.wicketstuff.foundation.alert.FoundationAlert; +import org.wicketstuff.foundation.button.ButtonRadius; + +public class AlertsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public AlertsPage(PageParameters params) { + super(params); + add(new FoundationAlert("basic", Model.of("This is standard alert."))); + + add(new FoundationAlert("successRadius", Model.of("This is a success alert with a radius. "), + new AlertOptions(AlertColor.SUCCESS, ButtonRadius.RADIUS))); + add(new FoundationAlert("warningRound", Model.of("This is a warning alert that is rounded. "), + new AlertOptions(AlertColor.WARNING, ButtonRadius.ROUND))); + add(new FoundationAlert("infoRadius", Model.of("This is an info alert with a radius. "), + new AlertOptions(AlertColor.INFO, ButtonRadius.RADIUS))); + add(new FoundationAlert("alertRound", Model.of("This is an alert - alert that is rounded. "), + new AlertOptions(AlertColor.ALERT, ButtonRadius.ROUND))); + add(new FoundationAlert("secondary", Model.of("This is a secondary alert. "), + new AlertOptions(AlertColor.SECONDARY))); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BasePage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BasePage.html new file mode 100644 index 0000000000..dd091feff4 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BasePage.html @@ -0,0 +1,10 @@ + + + + +wicket-foundation + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BasePage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BasePage.java new file mode 100644 index 0000000000..f776a01b90 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BasePage.java @@ -0,0 +1,33 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.Application; +import org.apache.wicket.markup.head.CssHeaderItem; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.head.JavaScriptHeaderItem; +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.resource.CssResourceReference; +import org.apache.wicket.request.resource.ResourceReference; + +public abstract class BasePage extends WebPage { + + private static final long serialVersionUID = 1L; + + private ResourceReference styleCssReference; + + public BasePage(final PageParameters params) { + super(params); + styleCssReference = new CssResourceReference(BasePage.class, "styles.css"); + } + + @Override + public void renderHead(IHeaderResponse response) { + super.renderHead(response); + response.render(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())); + response.render(CssHeaderItem.forReference(Foundation.getNormalizeCssReference())); + response.render(CssHeaderItem.forReference(Foundation.getFoundationCssReference())); + response.render(JavaScriptHeaderItem.forReference(Foundation.getFoundationJsReference())); + response.render(CssHeaderItem.forReference(styleCssReference)); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BlockGridPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BlockGridPage.html new file mode 100644 index 0000000000..2c17346911 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BlockGridPage.html @@ -0,0 +1,89 @@ + + + + +wicket-foundation + + + + +
    +

    Block grid

    +

    Block grids give you a way to evenly + split contents of a list within the grid. If you wanted to + create a row of five images or paragraphs that need to stay + evenly spaced no matter the screen size, the block grid is for + you.

    + +
    +

    Basic

    +

    + Use a simple + small-block-grid-# + class to code up the block grid and specify the number of items + in a row. +

    + +

    HTML

    +
    <div wicket:id="basic"></div> +
    +
    + +

    Java

    +
    add(new FoundationBlockGrid<String>("basic", new BlockGridOptions(BlockGridType.SMALL_BLOCK_GRID, 3), Arrays.asList("satelite.jpg", "space.jpg", "spacewalk.jpg")) { + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel<String> model) { + return new BlockGridImagePanel(id, new PackageResourceReference(this.getClass(), model.getObject())); + } +}); +
    +
    + +

    Rendered HTML

    +
    + +
    +

    Advanced

    +

    Use additional classes to specify a different number of + items in a row for each screen size.

    + +

    HTML

    +
    <div wicket:id="advanced"></div> +
    +
    + +

    Java

    +
    List<BlockGridOptions> optionsList = Arrays.asList(new BlockGridOptions(BlockGridType.SMALL_BLOCK_GRID, 2), + new BlockGridOptions(BlockGridType.MEDIUM_BLOCK_GRID, 3), new BlockGridOptions(BlockGridType.LARGE_BLOCK_GRID, 4)); +List<String> imageList = Arrays.asList("satelite.jpg", "space.jpg", "spacewalk.jpg", "satelite.jpg", "space.jpg", "spacewalk.jpg"); +add(new FoundationBlockGrid<String>("advanced", optionsList, imageList) { + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel<String> model) { + return new BlockGridImagePanel(id, new PackageResourceReference(this.getClass(), model.getObject())); + } +}); +
    +
    + +

    Rendered HTML

    +
    + +

    + If you use the + small-block-grid + only, the grid will keep its spacing and configuration no matter + the screen size. If you use + large-block-grid + only, the list items will stack on top of each other for small + devices. If you use both of those classes combined, you can + control the configuration and layout separately for each + breakpoint. +

    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BlockGridPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BlockGridPage.java new file mode 100644 index 0000000000..b6f93df4a9 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BlockGridPage.java @@ -0,0 +1,39 @@ +package org.wicketstuff.foundation; + +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.resource.PackageResourceReference; +import org.wicketstuff.foundation.blockgrid.BlockGridOptions; +import org.wicketstuff.foundation.blockgrid.BlockGridType; +import org.wicketstuff.foundation.blockgrid.FoundationBlockGrid; +import org.wicketstuff.foundation.blockgrid.FoundationBlockGridImageContent; + +public class BlockGridPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public BlockGridPage(PageParameters params) { + super(params); + add(new FoundationBlockGrid("basic", new BlockGridOptions(BlockGridType.SMALL_BLOCK_GRID, 3), Arrays.asList("satelite.jpg", "space.jpg", "spacewalk.jpg")) { + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel model) { + return new FoundationBlockGridImageContent(id, new PackageResourceReference(this.getClass(), model.getObject())); + } + }); + List optionsList = Arrays.asList(new BlockGridOptions(BlockGridType.SMALL_BLOCK_GRID, 2), + new BlockGridOptions(BlockGridType.MEDIUM_BLOCK_GRID, 3), new BlockGridOptions(BlockGridType.LARGE_BLOCK_GRID, 4)); + List imageList = Arrays.asList("satelite.jpg", "space.jpg", "spacewalk.jpg", "satelite.jpg", "space.jpg", "spacewalk.jpg"); + add(new FoundationBlockGrid("advanced", optionsList, imageList) { + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel model) { + return new FoundationBlockGridImageContent(id, new PackageResourceReference(this.getClass(), model.getObject())); + } + }); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BreadcrumbsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BreadcrumbsPage.html new file mode 100644 index 0000000000..2ae2ee3d1d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BreadcrumbsPage.html @@ -0,0 +1,105 @@ + + + + +wicket-foundation + + + + +
    +

    Breadcrumbs

    +

    Breadcrumbs come in handy to show a + navigation trail for users clicking through a site or app. + They'll fill out 100% of the width of their parent container.

    + +
    +

    Basic

    +
    +
    +

    HTML

    + +
    <nav wicket:id="basic"></nav> +
    +
    + +
    +
    +

    Java

    + +
    List<BreadcrumbsItem> basicItems = new ArrayList<>(); +basicItems.add(new BreadcrumbsItem("First")); +basicItems.add(new BreadcrumbsItem("Second")); +basicItems.add(new BreadcrumbsItem("Third")); +basicItems.add(new BreadcrumbsItem("Fourth")); +add(new FoundationBreadcrumbs("basic", basicItems) { + @Override + public AbstractLink createLink(String id, final int idx) { + return new AjaxLink<Void>(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%d');", idx)); + } + }; + } +}); +
    +
    + +
    +
    +

    Rendered HTML

    + +
    +
    +
    + +
    +

    Advanced

    +
    +
    +

    HTML

    + +
    <nav wicket:id="advanced"></nav> +
    +
    + +
    +
    +

    Java

    + +
    List<BreadcrumbsItem> advancedItems = new ArrayList<>(); +advancedItems.add(new BreadcrumbsItem("First")); +advancedItems.add(new BreadcrumbsItem("Second")); +advancedItems.add(new BreadcrumbsItem("Third")); +advancedItems.add(new BreadcrumbsItem("Fourth", true, false)); +advancedItems.add(new BreadcrumbsItem("Fifth", false, true)); +advancedItems.add(new BreadcrumbsItem("Sixth")); +add(new FoundationBreadcrumbs("advanced", advancedItems) { + @Override + public AbstractLink createLink(String id, final int idx) { + return new AjaxLink<Void>(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%d');", idx)); + } + }; + } +}); +
    +
    + +
    +
    +

    Rendered HTML

    + +
    +
    +
    + +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BreadcrumbsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BreadcrumbsPage.java new file mode 100644 index 0000000000..058a286092 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/BreadcrumbsPage.java @@ -0,0 +1,56 @@ +package org.wicketstuff.foundation; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.breadcrumbs.BreadcrumbsItem; +import org.wicketstuff.foundation.breadcrumbs.FoundationBreadcrumbs; + +public class BreadcrumbsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public BreadcrumbsPage(PageParameters params) { + super(params); + + List basicItems = new ArrayList<>(); + basicItems.add(new BreadcrumbsItem("First")); + basicItems.add(new BreadcrumbsItem("Second")); + basicItems.add(new BreadcrumbsItem("Third")); + basicItems.add(new BreadcrumbsItem("Fourth")); + add(new FoundationBreadcrumbs("basic", basicItems) { + @Override + public AbstractLink createLink(String id, final int idx) { + return new AjaxLink(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%d');", idx)); + } + }; + } + }); + + List advancedItems = new ArrayList<>(); + advancedItems.add(new BreadcrumbsItem("First")); + advancedItems.add(new BreadcrumbsItem("Second")); + advancedItems.add(new BreadcrumbsItem("Third")); + advancedItems.add(new BreadcrumbsItem("Fourth", true, false)); + advancedItems.add(new BreadcrumbsItem("Fifth", false, true)); + advancedItems.add(new BreadcrumbsItem("Sixth")); + add(new FoundationBreadcrumbs("advanced", advancedItems) { + @Override + public AbstractLink createLink(String id, final int idx) { + return new AjaxLink(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%d');", idx)); + } + }; + } + }); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonGroupPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonGroupPage.html new file mode 100644 index 0000000000..24daf2c22e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonGroupPage.html @@ -0,0 +1,169 @@ + + + + +wicket-foundation + + + + +
    +

    Button Groups

    +

    Button groups are containers for related action items. They're great when you need to display a group of actions in a bar. These build off the button styles and work perfectly with the grid.

    + +
    +

    Basic

    + +

    You can create a button group using minimal markup.

    + +

    HTML

    + +
    <div wicket:id="basic"><div> +
    +
    + +

    Java

    + +
    List<FoundationButtonOptions> btnOptions = Arrays.asList( + new FoundationButtonOptions(), new FoundationButtonOptions(), new FoundationButtonOptions()); +add(new ButtonGroupPanel("basic", new ButtonGroupOptions(), btnOptions) { + + private static final long serialVersionUID = 1L; + + @Override + protected WebMarkupContainer createButton(int idx, String id, + IModel<FoundationButtonOptions> optionsModel) { + return new FoundationLink<String>(id, Model.of(String.format("Button %d", idx+1)), optionsModel.getObject()) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + // NOP + } + }; + } +}); +
    +
    + +

    Rendered HTML

    + +
    + +
    +

    Advanced

    + +

    Additional classes can be added to your button group to change its appearance.

    + +

    HTML

    + +
    <div wicket:id="advanced"><div> +
    +
    + +

    Java

    + +
    List<FoundationButtonOptions> btnOptions = Arrays.asList( + new FoundationButtonOptions(FoundationButtonColor.ALERT), + new FoundationButtonOptions(FoundationButtonColor.ALERT), + new FoundationButtonOptions(FoundationButtonColor.ALERT)); +add(new ButtonGroupPanel("advanced", new ButtonGroupOptions(FoundationButtonRadius.ROUND), btnOptions) { + + private static final long serialVersionUID = 1L; + + @Override + protected WebMarkupContainer createButton(int idx, String id, + IModel<FoundationButtonOptions> optionsModel) { + return new FoundationLink<String>(id, Model.of(String.format("Button %d", idx+1)), optionsModel.getObject()) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + // NOP + } + }; + } +}); +
    +
    + +

    Rendered HTML

    + +
    + +
    +

    Stacking

    +

    You can change the orientation of a button group.

    + +

    HTML

    + +
    <div wicket:id="stack"><div> +
    +
    + +

    Java

    + +
    List<ButtonOptions> btnOptions = Arrays.asList(new ButtonOptions(), + new ButtonOptions(), new ButtonOptions()); +add(new ButtonGroupPanel("stack", new ButtonGroupOptions(ButtonGroupStacking.STACK), btnOptions) { + + private static final long serialVersionUID = 1L; + + @Override + protected WebMarkupContainer createButton(int idx, String id, + IModel<ButtonOptions> optionsModel) { + return new FoundationLink<String>(id, Model.of(String.format("Button %d", idx+1)), optionsModel.getObject()) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + // NOP + } + }; + } +}); +
    +
    + + +

    Rendered HTML

    + +
    + +
    +

    Button Bars

    +

    A button bar is a group of button groups, perfect for situations where you want groups of actions that are all related to a similar element or page.

    + +

    HTML

    + +
    <div wicket:id="buttonbar"> + <div wicket:id="first"><div> + <div wicket:id="second"><div> +<div> +
    +
    + +

    Java

    + +
    ButtonBarBorder buttonbar = new ButtonBarBorder("buttonbar"); +add(buttonbar); +buttonbar.add(createButtonGroup("first")); +buttonbar.add(createButtonGroup("second")); +
    +
    + +

    Rendered HTML

    + +
    +
    +
    +
    + +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonGroupPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonGroupPage.java new file mode 100644 index 0000000000..fe4ac684d6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonGroupPage.java @@ -0,0 +1,131 @@ +package org.wicketstuff.foundation; + +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonOptions; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.button.FoundationLink; +import org.wicketstuff.foundation.buttongroup.ButtonGroupOptions; +import org.wicketstuff.foundation.buttongroup.ButtonGroupStacking; +import org.wicketstuff.foundation.buttongroup.FoundationButtonBarBorder; +import org.wicketstuff.foundation.buttongroup.FoundationButtonGroup; + +public class ButtonGroupPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public ButtonGroupPage(PageParameters params) { + super(params); + createAndAddBasicButtonGroup(); + createAndAddAdvancedButtonGroup(); + createAndAddStackButtonGroup(); + createAndAddButtonBar(); + } + + private void createAndAddBasicButtonGroup() { + List btnOptions = Arrays.asList( + new ButtonOptions(), new ButtonOptions(), new ButtonOptions()); + add(new FoundationButtonGroup("basic", new ButtonGroupOptions(), btnOptions) { + + private static final long serialVersionUID = 1L; + + @Override + protected WebMarkupContainer createButton(int idx, String id, + IModel optionsModel) { + return new FoundationLink(id, Model.of(String.format("Button %d", idx+1)), optionsModel.getObject()) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + // NOP + } + }; + } + }); + } + + private void createAndAddAdvancedButtonGroup() { + List btnOptions = Arrays.asList( + new ButtonOptions(ButtonColor.ALERT), + new ButtonOptions(ButtonColor.ALERT), + new ButtonOptions(ButtonColor.ALERT)); + add(new FoundationButtonGroup("advanced", new ButtonGroupOptions(ButtonRadius.ROUND), btnOptions) { + + private static final long serialVersionUID = 1L; + + @Override + protected WebMarkupContainer createButton(int idx, String id, + IModel optionsModel) { + return new FoundationLink(id, Model.of(String.format("Button %d", idx+1)), optionsModel.getObject()) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + // NOP + } + }; + } + }); + } + + private void createAndAddStackButtonGroup() { + List btnOptions = Arrays.asList(new ButtonOptions(), + new ButtonOptions(), new ButtonOptions()); + add(new FoundationButtonGroup("stack", new ButtonGroupOptions(ButtonGroupStacking.STACK), btnOptions) { + + private static final long serialVersionUID = 1L; + + @Override + protected WebMarkupContainer createButton(int idx, String id, + IModel optionsModel) { + return new FoundationLink(id, Model.of(String.format("Button %d", idx+1)), optionsModel.getObject()) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + // NOP + } + }; + } + }); + } + + private void createAndAddButtonBar() { + FoundationButtonBarBorder buttonbar = new FoundationButtonBarBorder("buttonbar"); + add(buttonbar); + buttonbar.add(createButtonGroup("first")); + buttonbar.add(createButtonGroup("second")); + } + + private FoundationButtonGroup createButtonGroup(String id) { + List btnOptions = Arrays.asList( + new ButtonOptions(), new ButtonOptions(), new ButtonOptions()); + return new FoundationButtonGroup(id, new ButtonGroupOptions(), btnOptions) { + + private static final long serialVersionUID = 1L; + + @Override + protected WebMarkupContainer createButton(int idx, String id, + IModel optionsModel) { + return new FoundationLink(id, Model.of(String.format("Button %d", idx+1)), optionsModel.getObject()) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + // NOP + } + }; + } + }; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonsPage.html new file mode 100644 index 0000000000..88b211b0de --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonsPage.html @@ -0,0 +1,103 @@ + + + + +wicket-foundation + + + + +
    +

    Buttons

    +

    Buttons are convenient tools when you + need more traditional actions. To that end, Foundation has many + easy to use button styles that you can customize or override to + fit your needs.

    + +
    +

    Basic

    +

    You can create a button using minimal markup.

    +
    +
    +

    HTML

    + +
    <a wicket:id="btn"></a> +
    +
    + +

    Java

    + +
    add(new FoundationButton("btn", Model.of("Click"))); +
    +
    + +
    + +
    +

    Rendered HTML

    +
    + +
    +
    + + +
    +

    Advanced

    +

    Additional classes can be added to your component to change + its appearance.

    +
    +
    + +

    HTML

    +
    <!-- Size Classes --> +<a wicket:id="tiny"></a> +<!-- Color Classes --> +<a wicket:id="alert"></a> +<!-- Radius Classes --> +<a wicket:id="radius"></a> +<!-- Disabled Class --> +<a wicket:id="disabled"></a> +<!-- Expand Class --> +<a wicket:id="expand"></a> +
    +
    + +

    Java

    +
    add(new FoundationButton("tiny", Model.of("Tiny"), new FoundationButtonOptions(FoundationButtonSize.TINY))); +add(new FoundationButton("alert", Model.of("Alert"), new FoundationButtonOptions(FoundationButtonColor.ALERT))); +add(new FoundationButton("radius", Model.of("Radius"), new FoundationButtonOptions(FoundationButtonRadius.RADIUS))); +add(new FoundationButton("disabled", Model.of("Disabled"), new FoundationButtonOptions(FoundationButtonState.DISABLED))); +add(new FoundationButton("expand", Model.of("Expand"), new FoundationButtonOptions(FoundationButtonExpansion.EXPAND))); +
    +
    + +
    +
    +

    Rendered HTML

    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + +

    +

    +
    + + + +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonsPage.java new file mode 100644 index 0000000000..eac77c1250 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ButtonsPage.java @@ -0,0 +1,27 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonExpansion; +import org.wicketstuff.foundation.button.ButtonOptions; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.button.ButtonSize; +import org.wicketstuff.foundation.button.ButtonState; +import org.wicketstuff.foundation.button.FoundationButton; + +public class ButtonsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public ButtonsPage(PageParameters params) { + super(params); + add(new FoundationButton("btn", Model.of("Click"))); + add(new FoundationButton("tiny", Model.of("Tiny"), new ButtonOptions(ButtonSize.TINY))); + add(new FoundationButton("alert", Model.of("Alert"), new ButtonOptions(ButtonColor.ALERT))); + add(new FoundationButton("radius", Model.of("Radius"), new ButtonOptions(ButtonRadius.RADIUS))); + add(new FoundationButton("disabled", Model.of("Disabled"), new ButtonOptions(ButtonState.DISABLED))); + add(new FoundationButton("expand", Model.of("Expand"), new ButtonOptions(ButtonExpansion.EXPAND))); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/CatalogPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/CatalogPage.html new file mode 100644 index 0000000000..83b8e7715d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/CatalogPage.html @@ -0,0 +1,157 @@ + + + + +wicket-foundation + + + + +
    +

    Wicket-Foundation Samples Catalog

    +
    +
    +

    41/59 pages (69%) implemented (Foundation 5.5.1)

    +
    + +

    +

    + +
    + +

    Structure

    + + +
    3. Grid
    + +
    5. Interchange Responsive Content
    + + + +
    +
    +
    + +

    Navigation

    +
    1. Offcanvas
    + + + +
    5. Magellan Sticky Nav
    + + +
    8. Pagination
    +
    +
    +
    +

    + +

    +

    +
    + +

    Media

    + + +
    3. Clearing Lightbox
    +
    4. Flex Video
    +
    +
    +
    + +

    Forms

    +
    1. Forms
    +
    2. Switches
    +
    3. Range Sliders
    +
    4. Abide Validation
    +
    +
    +
    + +

    Buttons

    + + + + +
    +
    +
    +

    + +

    +

    +
    + +

    Typography

    +
    1. Type
    + + +
    4. Keystrokes
    +
    +
    +
    + +

    Callouts & Prompts

    + + + + +
    5. Joyride
    +
    +
    +
    + +

    Content

    + + + +
    4. Tables
    +
    5. Accordion
    +
    6. Tabs
    +
    7. Equalizer
    +
    +
    +
    +

    + +

    +

    + +
    + +

    Extras

    +
    1. Welcome to Foundation
    + +
    +
    +
    + + +
    +
    +

    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/CatalogPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/CatalogPage.java new file mode 100644 index 0000000000..23e926d843 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/CatalogPage.java @@ -0,0 +1,12 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.request.mapper.parameter.PageParameters; + +public class CatalogPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public CatalogPage(final PageParameters params) { + super(params); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownButtonsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownButtonsPage.html new file mode 100644 index 0000000000..eeaba6d40f --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownButtonsPage.html @@ -0,0 +1,106 @@ + + + + +wicket-foundation + + + + +
    +

    Dropdown Buttons

    +

    + Dropdown buttons are elements that, when tapped, reveal + additional content. We've simplified our dropdown + buttons by getting rid of the dedicated ones associated + with the various buttons styles. Instead, you'll use + our new dropdown plugin to + attach a dropdown to the button style of your choice. +

    + +
    +

    Basic

    + +

    You can create a dropdown using minimal markup.

    +
    +
    +

    HTML

    + +
    <div wicket:id="basic"></div> +
    +
    + +
    +
    +

    Java

    + +
    List<String> links = Arrays.asList("This is a link", "This is another", "Yet another"); +add(createDropdownButton("basic", "Dropdown Button", links, new DropdownOptions(DropdownType.DROPDOWNBUTTON))); + +private FoundationDropdown createDropdownButton(String id, String title, List<String> links, DropdownOptions options) { + return new FoundationDropdown(id, title, options, Collections.unmodifiableList(links)) { + @Override + protected WebMarkupContainer createDropdownLink(int idx, String id) { + return new Link<String>(id) { + @Override + public void onClick() {} + }; + } + }; +} +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    + +
    +

    Advanced

    + +

    Additional classes can be added to your dropdown + buttons to change their appearance.

    +
    +
    +

    HTML

    + +
    <div wicket:id="advanced"></div> +
    +
    + +
    +
    +

    Java

    + +
    List<String> advancedLinks = Arrays.asList("This is a link", "This is another", "Yet another"); +DropdownOptions options = new DropdownOptions(DropdownType.DROPDOWNBUTTON).setSize(ButtonSize.LARGE).setRadius(ButtonRadius.ROUND).setColor(ButtonColor.ALERT); +add(createDropdownButton("advanced", "Dropdown Button", advancedLinks, options)); + +private FoundationDropdown createDropdownButton(String id, String title, List<String> links, DropdownOptions options) { + return new FoundationDropdown(id, title, options, Collections.unmodifiableList(links)) { + @Override + protected WebMarkupContainer createDropdownLink(int idx, String id) { + return new Link<String>(id) { + @Override + public void onClick() {} + }; + } + }; +} +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownButtonsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownButtonsPage.java new file mode 100644 index 0000000000..c9f868b618 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownButtonsPage.java @@ -0,0 +1,42 @@ +package org.wicketstuff.foundation; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.button.ButtonSize; +import org.wicketstuff.foundation.dropdown.DropdownOptions; +import org.wicketstuff.foundation.dropdown.DropdownType; +import org.wicketstuff.foundation.dropdown.FoundationDropdown; + +public class DropdownButtonsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public DropdownButtonsPage(PageParameters params) { + super(params); + + List links = Arrays.asList("This is a link", "This is another", "Yet another"); + add(createDropdownButton("basic", "Dropdown Button", links, new DropdownOptions(DropdownType.DROPDOWNBUTTON))); + List advancedLinks = Arrays.asList("This is a link", "This is another", "Yet another"); + DropdownOptions options = new DropdownOptions(DropdownType.DROPDOWNBUTTON).setSize(ButtonSize.LARGE).setRadius(ButtonRadius.ROUND).setColor(ButtonColor.ALERT); + add(createDropdownButton("advanced", "Dropdown Button", advancedLinks, options)); + } + + private FoundationDropdown createDropdownButton(String id, String title, List links, DropdownOptions options) { + return new FoundationDropdown(id, title, options, Collections.unmodifiableList(links)) { + @Override + protected AbstractLink createDropdownLink(int idx, String id) { + return new Link(id) { + @Override + public void onClick() {} + }; + } + }; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownsPage.html new file mode 100644 index 0000000000..a6ff95067a --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownsPage.html @@ -0,0 +1,194 @@ + + + + +wicket-foundation + + + + +
    +

    Dropdowns

    +

    We removed the various dropdowns + within different UI elements for Foundation 5. Instead, + we created a universal dropdown plugin that will attach + dropdowns or popovers to whatever element you need.

    + +
    +

    Basic

    + +

    + You can create a dropdown using minimal markup. On + a small device, the tooltips are full-width and + bottom aligned. +

    +
    +
    +

    HTML

    + +
    <span wicket:id="basicDropdown"></span> | <span wicket:id="basicContentDropdown"></span> +
    +
    + +
    +
    +

    Java

    + +
    List<String> links = Arrays.asList("First link", "Second link", "Third link"); +FoundationDropdown basicDropdown = new FoundationDropdown("basicDropdown", "Has Dropdown", new DropdownOptions(), links) { + @Override + protected WebMarkupContainer createDropdownLink(int idx, String id) { + return new Link<String>(id) { + @Override + public void onClick() {} + }; + } +}; +add(basicDropdown); + +final String content = "<p>Some text that people will think is awesome! Some text that people will think is awesome! Some text that people will think is awesome!</p>"; +FoundationContentDropdown basicContentDropdown = new FoundationContentDropdown("basicContentDropdown", "Has Content Dropdown", new DropdownOptions(), content); +add(basicContentDropdown); +
    +
    + +
    +
    +

    HTML Rendered

    + + | + +
    +
    + +
    +

    Advanced

    + +

    Additional classes can be added to your dropdown to + change its appearance.

    +
    +
    +

    HTML

    + +
    <div wicket:id="advancedDropdownLink"></div> +
    +
    + +
    +
    +

    Java

    + +
    List<String> advancedLinks = Arrays.asList("This is a link", "This is another", "Yet another"); +FoundationDropdown advancedDropdownLink = new FoundationDropdown("advancedDropdownLink", "Link Dropdown", new DropdownOptions(DropdownType.DROPDOWNLINK), advancedLinks) { + @Override + protected WebMarkupContainer createDropdownLink(int idx, String id) { + return new Link<String>(id) { + @Override + public void onClick() {} + }; + } +}; +add(advancedDropdownLink); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    + +
    +

    Directions

    + +

    + You can now position dropdowns on the top, bottom, left, + or right of the target element. The default position is + bottom and you do not need to change anything + to get your tooltip positioned bottom. +

    +
    +
    +

    HTML

    + +
    <span wicket:id="directionTop"></span> +<span wicket:id="directionLeft"></span> +<span wicket:id="directionDown"></span> +<span wicket:id="directionRight"></span> +
    +
    + +
    +
    +

    Java

    + +
    List<String> directionLinks = Arrays.asList("This is a link", "This is another", "Yet another"); +add(createDirectionDropdown("directionTop", "Top", directionLinks, DropdownListAlignment.TOP)); +add(createDirectionDropdown("directionLeft", "Left", directionLinks, DropdownListAlignment.LEFT)); +add(createDirectionDropdown("directionDown", "Down", directionLinks, null)); +add(createDirectionDropdown("directionRight", "Right", directionLinks, DropdownListAlignment.RIGHT)); + +private FoundationDropdown createDirectionDropdown(String id, String title, List<String> links, DropdownListAlignment align) { + DropdownOptions options = new DropdownOptions(DropdownType.DROPDOWNLINK).setListAlignment(align); + return new FoundationDropdown(id, title, options, Collections.unmodifiableList(links)) { + @Override + protected WebMarkupContainer createDropdownLink(int idx, String id) { + return new Link<String>(id) { + @Override + public void onClick() {} + }; + } + }; +} +
    +
    + +
    +
    +

    Rendered HTML

    + + + + +
    +
    + +
    +
    +
    +

    HTML

    + +
    <div wicket:id="hoverDropdown"></div> +
    +
    + +
    +
    +

    Java

    + +
    List<String> hoverLinks = Arrays.asList("First link", "Second link", "Third link"); +FoundationDropdown hoverDropdown = new FoundationDropdown("hoverDropdown", "Has Hover Dropdown", new DropdownOptions(DropdownHover.HOVERABLE), hoverLinks) { + @Override + protected WebMarkupContainer createDropdownLink(int idx, String id) { + return new Link<String>(id) { + @Override + public void onClick() {} + }; + } +}; +add(hoverDropdown); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownsPage.java new file mode 100644 index 0000000000..92680598ed --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/DropdownsPage.java @@ -0,0 +1,85 @@ +package org.wicketstuff.foundation; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.dropdown.DropdownHover; +import org.wicketstuff.foundation.dropdown.DropdownListAlignment; +import org.wicketstuff.foundation.dropdown.DropdownOptions; +import org.wicketstuff.foundation.dropdown.DropdownType; +import org.wicketstuff.foundation.dropdown.FoundationContentDropdown; +import org.wicketstuff.foundation.dropdown.FoundationDropdown; + +public class DropdownsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public DropdownsPage(PageParameters params) { + super(params); + + List links = Arrays.asList("First link", "Second link", "Third link"); + FoundationDropdown basicDropdown = new FoundationDropdown("basicDropdown", "Has Dropdown", new DropdownOptions(), links) { + @Override + protected AbstractLink createDropdownLink(int idx, + String id) { + return new Link(id) { + @Override + public void onClick() {} + }; + } + }; + add(basicDropdown); + + final String content = "

    Some text that people will think is awesome! Some text that people will think is awesome! Some text that people will think is awesome!

    "; + FoundationContentDropdown basicContentDropdown = new FoundationContentDropdown("basicContentDropdown", "Has Content Dropdown", new DropdownOptions(), content); + add(basicContentDropdown); + + List advancedLinks = Arrays.asList("This is a link", "This is another", "Yet another"); + FoundationDropdown advancedDropdownLink = new FoundationDropdown("advancedDropdownLink", "Link Dropdown", new DropdownOptions(DropdownType.DROPDOWNLINK), advancedLinks) { + @Override + protected AbstractLink createDropdownLink(int idx, + String id) { + return new Link(id) { + @Override + public void onClick() {} + }; + } + }; + add(advancedDropdownLink); + + List directionLinks = Arrays.asList("This is a link", "This is another", "Yet another"); + add(createDirectionDropdown("directionTop", "Top", directionLinks, DropdownListAlignment.TOP)); + add(createDirectionDropdown("directionLeft", "Left", directionLinks, DropdownListAlignment.LEFT)); + add(createDirectionDropdown("directionDown", "Down", directionLinks, null)); + add(createDirectionDropdown("directionRight", "Right", directionLinks, DropdownListAlignment.RIGHT)); + + List hoverLinks = Arrays.asList("First link", "Second link", "Third link"); + FoundationDropdown hoverDropdown = new FoundationDropdown("hoverDropdown", "Has Hover Dropdown", new DropdownOptions(DropdownHover.HOVERABLE), hoverLinks) { + @Override + protected AbstractLink createDropdownLink(int idx, String id) { + return new Link(id) { + @Override + public void onClick() {} + }; + } + }; + add(hoverDropdown); + } + + private FoundationDropdown createDirectionDropdown(String id, String title, List links, DropdownListAlignment align) { + DropdownOptions options = new DropdownOptions(DropdownType.DROPDOWNLINK).setListAlignment(align); + return new FoundationDropdown(id, title, options, Collections.unmodifiableList(links)) { + @Override + protected AbstractLink createDropdownLink(int idx, String id) { + return new Link(id) { + @Override + public void onClick() {} + }; + } + }; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconAndTextPanel.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconAndTextPanel.html new file mode 100644 index 0000000000..fb6be78ba6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconAndTextPanel.html @@ -0,0 +1,15 @@ + + + + +wicket-foundation + + + +

    + + +

    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconAndTextPanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconAndTextPanel.java new file mode 100644 index 0000000000..1381547902 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconAndTextPanel.java @@ -0,0 +1,17 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.markup.html.basic.Label; +import org.wicketstuff.foundation.component.FoundationBasePanel; +import org.wicketstuff.foundation.icon.FoundationIcon; +import org.wicketstuff.foundation.icon.IconType; + +public class FoundationIconAndTextPanel extends FoundationBasePanel { + + private static final long serialVersionUID = 1L; + + public FoundationIconAndTextPanel(String id, IconType icon, String text) { + super(id); + add(new FoundationIcon("icon", icon)); + add(new Label("text", text)); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconsPage.html new file mode 100644 index 0000000000..69611ebbc0 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconsPage.html @@ -0,0 +1,46 @@ + + + + +wicket-foundation + + +
    +
    + +

    General Icons

    +
    + +

    Page Icons

    +
    + +

    Arrow Icons

    +
    + +

    People Icons

    +
    + +

    Device Icons

    +
    + +

    Text Editor Icons

    +
    + +

    Media Control Icons

    +
    + +

    Ecommerce Icons

    +
    + +

    Accessibility Icons

    +
    + +

    Social & Brand Icons

    +
    + +

    Miscellaneous Icons

    +
    +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconsPage.java new file mode 100644 index 0000000000..0ca43881a0 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/FoundationIconsPage.java @@ -0,0 +1,347 @@ +package org.wicketstuff.foundation; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.blockgrid.BlockGridOptions; +import org.wicketstuff.foundation.blockgrid.BlockGridType; +import org.wicketstuff.foundation.blockgrid.FoundationBlockGrid; +import org.wicketstuff.foundation.icon.IconType; +import org.wicketstuff.foundation.util.StringUtil; + +public class FoundationIconsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public FoundationIconsPage(PageParameters params) { + super(params); + + ArrayList optionsList = new ArrayList<>(); + optionsList.add(new BlockGridOptions(BlockGridType.SMALL_BLOCK_GRID, 2)); + optionsList.add(new BlockGridOptions(BlockGridType.LARGE_BLOCK_GRID, 4)); + + ArrayList generalIconsDataList = new ArrayList<>(); + generalIconsDataList.add(IconType.HEART); + generalIconsDataList.add(IconType.STAR); + generalIconsDataList.add(IconType.PLUS); + generalIconsDataList.add(IconType.MINUS); + generalIconsDataList.add(IconType.X); + generalIconsDataList.add(IconType.CHECK); + generalIconsDataList.add(IconType.UPLOAD); + generalIconsDataList.add(IconType.DOWNLOAD); + generalIconsDataList.add(IconType.WIDGET); + generalIconsDataList.add(IconType.MARKER); + generalIconsDataList.add(IconType.TRASH); + generalIconsDataList.add(IconType.PAPERCLIP); + generalIconsDataList.add(IconType.LOCK); + generalIconsDataList.add(IconType.UNLOCK); + generalIconsDataList.add(IconType.CALENDAR); + generalIconsDataList.add(IconType.CLOUD); + generalIconsDataList.add(IconType.MAGNIFYING_GLASS); + generalIconsDataList.add(IconType.ZOOM_OUT); + generalIconsDataList.add(IconType.ZOOM_IN); + generalIconsDataList.add(IconType.WRENCH); + generalIconsDataList.add(IconType.RSS); + generalIconsDataList.add(IconType.SHARE); + generalIconsDataList.add(IconType.FLAG); + generalIconsDataList.add(IconType.LIST_THUMBNAILS); + generalIconsDataList.add(IconType.LIST); + generalIconsDataList.add(IconType.THUMBNAILS); + generalIconsDataList.add(IconType.ANNOTATE); + generalIconsDataList.add(IconType.FOLDER); + generalIconsDataList.add(IconType.FOLDER_LOCK); + generalIconsDataList.add(IconType.FOLDER_ADD); + generalIconsDataList.add(IconType.CLOCK); + generalIconsDataList.add(IconType.PLAY_VIDEO); + generalIconsDataList.add(IconType.CROP); + generalIconsDataList.add(IconType.ARCHIVE); + generalIconsDataList.add(IconType.PENCIL); + generalIconsDataList.add(IconType.GRAPH_TREND); + generalIconsDataList.add(IconType.GRAPH_BAR); + generalIconsDataList.add(IconType.GRAPH_HORIZONTAL); + generalIconsDataList.add(IconType.GRAPH_PIE); + generalIconsDataList.add(IconType.CHECKBOX); + generalIconsDataList.add(IconType.MINUS_CIRCLE); + generalIconsDataList.add(IconType.X_CIRCLE); + generalIconsDataList.add(IconType.EYE); + generalIconsDataList.add(IconType.DATABASE); + generalIconsDataList.add(IconType.RESULTS); + generalIconsDataList.add(IconType.RESULTS_DEMOGRAPHICS); + generalIconsDataList.add(IconType.LIKE); + generalIconsDataList.add(IconType.DISLIKE); + generalIconsDataList.add(IconType.UPLOAD_CLOUD); + generalIconsDataList.add(IconType.CAMERA); + generalIconsDataList.add(IconType.ALERT); + generalIconsDataList.add(IconType.BOOKMARK); + generalIconsDataList.add(IconType.CONTRAST); + generalIconsDataList.add(IconType.MAIL); + generalIconsDataList.add(IconType.VIDEO); + generalIconsDataList.add(IconType.TELEPHONE); + generalIconsDataList.add(IconType.COMMENT); + generalIconsDataList.add(IconType.COMMENT_VIDEO); + generalIconsDataList.add(IconType.COMMENT_QUOTES); + generalIconsDataList.add(IconType.COMMENT_MINUS); + generalIconsDataList.add(IconType.MEGAPHONE); + generalIconsDataList.add(IconType.SOUND); + generalIconsDataList.add(IconType.ADDRESS_BOOK); + generalIconsDataList.add(IconType.BLUETOOTH); + generalIconsDataList.add(IconType.HTML5); + generalIconsDataList.add(IconType.CSS3); + generalIconsDataList.add(IconType.LAYOUT); + generalIconsDataList.add(IconType.WEB); + generalIconsDataList.add(IconType.FOUNDATION); + add(createBlockGrid("generalIcons", optionsList, generalIconsDataList)); + + ArrayList pageIconsDataList = new ArrayList<>(); + pageIconsDataList.add(IconType.PAGE); + pageIconsDataList.add(IconType.PAGE_CSV); + pageIconsDataList.add(IconType.PAGE_DOC); + pageIconsDataList.add(IconType.PAGE_PDF); + pageIconsDataList.add(IconType.PAGE_EXPORT); + pageIconsDataList.add(IconType.PAGE_EXPORT_CSV); + pageIconsDataList.add(IconType.PAGE_EXPORT_DOC); + pageIconsDataList.add(IconType.PAGE_EXPORT_PDF); + pageIconsDataList.add(IconType.PAGE_ADD); + pageIconsDataList.add(IconType.PAGE_REMOVE); + pageIconsDataList.add(IconType.PAGE_DELETE); + pageIconsDataList.add(IconType.PAGE_EDIT); + pageIconsDataList.add(IconType.PAGE_SEARCH); + pageIconsDataList.add(IconType.PAGE_COPY); + pageIconsDataList.add(IconType.PAGE_FILLED); + pageIconsDataList.add(IconType.PAGE_MULTIPLE); + add(createBlockGrid("pageIcons", optionsList, pageIconsDataList)); + + ArrayList arrowIconsDataList = new ArrayList<>(); + arrowIconsDataList.add(IconType.ARROW_UP); + arrowIconsDataList.add(IconType.ARROW_RIGHT); + arrowIconsDataList.add(IconType.ARROW_DOWN); + arrowIconsDataList.add(IconType.ARROW_LEFT); + arrowIconsDataList.add(IconType.ARROWS_OUT); + arrowIconsDataList.add(IconType.ARROWS_IN); + arrowIconsDataList.add(IconType.ARROWS_EXPAND); + arrowIconsDataList.add(IconType.ARROWS_COMPRESS); + add(createBlockGrid("arrowIcons", optionsList, arrowIconsDataList)); + + ArrayList peopleIconsDataList = new ArrayList<>(); + peopleIconsDataList.add(IconType.TORSO); + peopleIconsDataList.add(IconType.TORSO_FEMALE); + peopleIconsDataList.add(IconType.TORSOS); + peopleIconsDataList.add(IconType.TORSOS_FEMALE_MALE); + peopleIconsDataList.add(IconType.TORSOS_MALE_FEMALE); + peopleIconsDataList.add(IconType.TORSOS_ALL); + peopleIconsDataList.add(IconType.TORSOS_ALL_FEMALE); + peopleIconsDataList.add(IconType.TORSO_BUSINESS); + add(createBlockGrid("peopleIcons", optionsList, peopleIconsDataList)); + + ArrayList deviceIconsDataList = new ArrayList<>(); + deviceIconsDataList.add(IconType.MONITOR); + deviceIconsDataList.add(IconType.LAPTOP); + deviceIconsDataList.add(IconType.TABLET_PORTRAIT); + deviceIconsDataList.add(IconType.TABLET_LANDSCAPE); + deviceIconsDataList.add(IconType.MOBILE); + deviceIconsDataList.add(IconType.MOBILE_SIGNAL); + deviceIconsDataList.add(IconType.USB); + add(createBlockGrid("deviceIcons", optionsList, deviceIconsDataList)); + + ArrayList textEditorIconsDataList = new ArrayList<>(); + textEditorIconsDataList.add(IconType.BOLD); + textEditorIconsDataList.add(IconType.ITALIC); + textEditorIconsDataList.add(IconType.UNDERLINE); + textEditorIconsDataList.add(IconType.STRIKETHROUGH); + textEditorIconsDataList.add(IconType.TEXT_COLOR); + textEditorIconsDataList.add(IconType.BACKGROUND_COLOR); + textEditorIconsDataList.add(IconType.SUPERSCRIPT); + textEditorIconsDataList.add(IconType.SUBSCRIPT); + textEditorIconsDataList.add(IconType.ALIGN_LEFT); + textEditorIconsDataList.add(IconType.ALIGN_CENTER); + textEditorIconsDataList.add(IconType.ALIGN_RIGHT); + textEditorIconsDataList.add(IconType.ALIGN_JUSTIFY); + textEditorIconsDataList.add(IconType.LIST_NUMBERED); + textEditorIconsDataList.add(IconType.LIST_BULLET); + textEditorIconsDataList.add(IconType.INDENT_MORE); + textEditorIconsDataList.add(IconType.INDENT_LESS); + textEditorIconsDataList.add(IconType.PRINT); + textEditorIconsDataList.add(IconType.SAVE); + textEditorIconsDataList.add(IconType.PHOTO); + textEditorIconsDataList.add(IconType.FILTER); + textEditorIconsDataList.add(IconType.PAINT_BUCKET); + textEditorIconsDataList.add(IconType.LINK); + textEditorIconsDataList.add(IconType.UNLINK); + textEditorIconsDataList.add(IconType.QUOTE); + add(createBlockGrid("textEditorIcons", optionsList, textEditorIconsDataList)); + + ArrayList mediaControlIconsDataList = new ArrayList<>(); + mediaControlIconsDataList.add(IconType.PLAY); + mediaControlIconsDataList.add(IconType.STOP); + mediaControlIconsDataList.add(IconType.PAUSE); + mediaControlIconsDataList.add(IconType.PREVIOUS); + mediaControlIconsDataList.add(IconType.REWIND); + mediaControlIconsDataList.add(IconType.FAST_FORWARD); + mediaControlIconsDataList.add(IconType.NEXT); + mediaControlIconsDataList.add(IconType.RECORD); + mediaControlIconsDataList.add(IconType.PLAY_CIRCLE); + mediaControlIconsDataList.add(IconType.VOLUME_NONE); + mediaControlIconsDataList.add(IconType.VOLUME); + mediaControlIconsDataList.add(IconType.VOLUME_STRIKE); + mediaControlIconsDataList.add(IconType.LOOP); + mediaControlIconsDataList.add(IconType.SHUFFLE); + mediaControlIconsDataList.add(IconType.EJECT); + mediaControlIconsDataList.add(IconType.REWIND_TEN); + add(createBlockGrid("mediaControlIcons", optionsList, mediaControlIconsDataList)); + + ArrayList eCommerceIconsDataList = new ArrayList<>(); + eCommerceIconsDataList.add(IconType.DOLLAR); + eCommerceIconsDataList.add(IconType.EURO); + eCommerceIconsDataList.add(IconType.POUND); + eCommerceIconsDataList.add(IconType.YEN); + eCommerceIconsDataList.add(IconType.BITCOIN); + eCommerceIconsDataList.add(IconType.BITCOIN_CIRCLE); + eCommerceIconsDataList.add(IconType.CREDIT_CARD); + eCommerceIconsDataList.add(IconType.SHOPPING_CART); + eCommerceIconsDataList.add(IconType.BURST); + eCommerceIconsDataList.add(IconType.BURST_NEW); + eCommerceIconsDataList.add(IconType.BURST_SALE); + eCommerceIconsDataList.add(IconType.PAYPAL); + eCommerceIconsDataList.add(IconType.PRICE_TAG); + eCommerceIconsDataList.add(IconType.PRICETAG_MULTIPLE); + eCommerceIconsDataList.add(IconType.SHOPPING_BAG); + eCommerceIconsDataList.add(IconType.DOLLAR_BILL); + add(createBlockGrid("eCommerceIcons", optionsList, eCommerceIconsDataList)); + + ArrayList accessibilityIconsDataList = new ArrayList<>(); + accessibilityIconsDataList.add(IconType.WHEELCHAIR); + accessibilityIconsDataList.add(IconType.BRAILLE); + accessibilityIconsDataList.add(IconType.CLOSED_CAPTION); + accessibilityIconsDataList.add(IconType.BLIND); + accessibilityIconsDataList.add(IconType.ASL); + accessibilityIconsDataList.add(IconType.HEARING_AID); + accessibilityIconsDataList.add(IconType.GUIDE_DOG); + accessibilityIconsDataList.add(IconType.UNIVERSAL_ACCESS); + accessibilityIconsDataList.add(IconType.TELEPHONE_ACCESSIBLE); + accessibilityIconsDataList.add(IconType.ELEVATOR); + accessibilityIconsDataList.add(IconType.MALE); + accessibilityIconsDataList.add(IconType.FEMALE); + accessibilityIconsDataList.add(IconType.MALE_FEMALE); + accessibilityIconsDataList.add(IconType.MALE_SYMBOL); + accessibilityIconsDataList.add(IconType.FEMALE_SYMBOL); + add(createBlockGrid("accessibilityIcons", optionsList, accessibilityIconsDataList)); + + ArrayList socialIconsDataList = new ArrayList<>(); + socialIconsDataList.add(IconType.SOCIAL_500PX); + socialIconsDataList.add(IconType.SOCIAL_ADOBE); + socialIconsDataList.add(IconType.SOCIAL_AMAZON); + socialIconsDataList.add(IconType.SOCIAL_ANDROID); + socialIconsDataList.add(IconType.SOCIAL_APPLE); + socialIconsDataList.add(IconType.SOCIAL_BEHANCE); + socialIconsDataList.add(IconType.SOCIAL_BING); + socialIconsDataList.add(IconType.SOCIAL_BLOGGER); + socialIconsDataList.add(IconType.SOCIAL_DELICIOUS); + socialIconsDataList.add(IconType.SOCIAL_DESIGNER_NEWS); + socialIconsDataList.add(IconType.SOCIAL_DEVIANT_ART); + socialIconsDataList.add(IconType.SOCIAL_DIGG); + socialIconsDataList.add(IconType.SOCIAL_DRIBBBLE); + socialIconsDataList.add(IconType.SOCIAL_DRIVE); + socialIconsDataList.add(IconType.SOCIAL_DROPBOX); + socialIconsDataList.add(IconType.SOCIAL_EVERNOTE); + socialIconsDataList.add(IconType.SOCIAL_FACEBOOK); + socialIconsDataList.add(IconType.SOCIAL_FLICKR); + socialIconsDataList.add(IconType.SOCIAL_FORRST); + socialIconsDataList.add(IconType.SOCIAL_FOURSQUARE); + socialIconsDataList.add(IconType.SOCIAL_GAME_CENTER); + socialIconsDataList.add(IconType.SOCIAL_GITHUB); + socialIconsDataList.add(IconType.SOCIAL_GOOGLE_PLUS); + socialIconsDataList.add(IconType.SOCIAL_HACKER_NEWS); + socialIconsDataList.add(IconType.SOCIAL_HI5); + socialIconsDataList.add(IconType.SOCIAL_INSTAGRAM); + socialIconsDataList.add(IconType.SOCIAL_JOOMLA); + socialIconsDataList.add(IconType.SOCIAL_LASTFM); + socialIconsDataList.add(IconType.SOCIAL_MYSPACE); + socialIconsDataList.add(IconType.SOCIAL_ORKUT); + socialIconsDataList.add(IconType.SOCIAL_PATH); + socialIconsDataList.add(IconType.SOCIAL_PICASA); + socialIconsDataList.add(IconType.SOCIAL_PINTEREST); + socialIconsDataList.add(IconType.SOCIAL_RDIO); + socialIconsDataList.add(IconType.SOCIAL_REDDIT); + socialIconsDataList.add(IconType.SOCIAL_SKYPE); + socialIconsDataList.add(IconType.SOCIAL_SKILLSHARE); + socialIconsDataList.add(IconType.SOCIAL_SMASHING_MAG); + socialIconsDataList.add(IconType.SOCIAL_SNAPCHAT); + socialIconsDataList.add(IconType.SOCIAL_SPOTIFY); + socialIconsDataList.add(IconType.SOCIAL_SQUIDOO); + socialIconsDataList.add(IconType.SOCIAL_STACK_OVERFLOW); + socialIconsDataList.add(IconType.SOCIAL_STEAM); + socialIconsDataList.add(IconType.SOCIAL_STUMBLEUPON); + socialIconsDataList.add(IconType.SOCIAL_TREEHOUSE); + socialIconsDataList.add(IconType.SOCIAL_TUMBLR); + socialIconsDataList.add(IconType.SOCIAL_TWITTER); + socialIconsDataList.add(IconType.SOCIAL_VIMEO); + socialIconsDataList.add(IconType.SOCIAL_WINDOWS); + socialIconsDataList.add(IconType.SOCIAL_XBOX); + socialIconsDataList.add(IconType.SOCIAL_YAHOO); + socialIconsDataList.add(IconType.SOCIAL_YELP); + socialIconsDataList.add(IconType.SOCIAL_YOUTUBE); + socialIconsDataList.add(IconType.SOCIAL_ZERPLY); + socialIconsDataList.add(IconType.SOCIAL_ZURB); + add(createBlockGrid("socialIcons", optionsList, socialIconsDataList)); + + ArrayList miscIconsDataList = new ArrayList<>(); + miscIconsDataList.add(IconType.COMPASS); + miscIconsDataList.add(IconType.MUSIC); + miscIconsDataList.add(IconType.LIGHTBULB); + miscIconsDataList.add(IconType.BATTERY_FULL); + miscIconsDataList.add(IconType.BATTERY_HALF); + miscIconsDataList.add(IconType.BATTERY_EMPTY); + miscIconsDataList.add(IconType.PROJECTION_SCREEN); + miscIconsDataList.add(IconType.INFO); + miscIconsDataList.add(IconType.POWER); + miscIconsDataList.add(IconType.ASTERISK); + miscIconsDataList.add(IconType.AT_SIGN); + miscIconsDataList.add(IconType.KEY); + miscIconsDataList.add(IconType.TICKET); + miscIconsDataList.add(IconType.BOOK); + miscIconsDataList.add(IconType.BOOK_BOOKMARK); + miscIconsDataList.add(IconType.ANCHOR); + miscIconsDataList.add(IconType.PUZZLE); + miscIconsDataList.add(IconType.FOOT); + miscIconsDataList.add(IconType.PAW); + miscIconsDataList.add(IconType.MOUNTAINS); + miscIconsDataList.add(IconType.FIRST_AID); + miscIconsDataList.add(IconType.TROPHY); + miscIconsDataList.add(IconType.PROHIBITED); + miscIconsDataList.add(IconType.NO_DOGS); + miscIconsDataList.add(IconType.NO_SMOKING); + miscIconsDataList.add(IconType.SAFETY_CONE); + miscIconsDataList.add(IconType.SHIELD); + miscIconsDataList.add(IconType.CROWN); + miscIconsDataList.add(IconType.TARGET); + miscIconsDataList.add(IconType.TARGET_TWO); + miscIconsDataList.add(IconType.DIE_ONE); + miscIconsDataList.add(IconType.DIE_TWO); + miscIconsDataList.add(IconType.DIE_THREE); + miscIconsDataList.add(IconType.DIE_FOUR); + miscIconsDataList.add(IconType.DIE_FIVE); + miscIconsDataList.add(IconType.DIE_SIX); + miscIconsDataList.add(IconType.SKULL); + miscIconsDataList.add(IconType.MAP); + miscIconsDataList.add(IconType.CLIPBOARD); + miscIconsDataList.add(IconType.CLIPBOARD_PENCIL); + miscIconsDataList.add(IconType.CLIPBOARD_NOTES); + add(createBlockGrid("miscIcons", optionsList, miscIconsDataList)); + } + + FoundationBlockGrid createBlockGrid(String id, List optionsList, List dataList) { + return new FoundationBlockGrid(id, optionsList, dataList) { + + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel model) { + return new FoundationIconAndTextPanel(id, model.getObject(), StringUtil.EnumNameToCssClassName(model.getObject().name())); + } + }; + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/GridPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/GridPage.html new file mode 100644 index 0000000000..460a9a2f8b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/GridPage.html @@ -0,0 +1,462 @@ + + + + +wicket-foundation + + + + +
    +

    Grid

    +

    Create powerful multi-device layouts + quickly and easily with the default 12-column, nest-able + Foundation grid. If you're familiar with grid systems, + you'll feel right at home. If not, you'll learn quickly.

    +
    +

    Basic

    +

    + Start by adding an element with a class of + row + . This will create a horizontal block to contain vertical + columns. Then add divs with a + column + class within that row. You can use + column + or + columns + - the only difference is grammar. Specify the widths of each + column with the small-#, medium-#, and large-# classes. +

    +

    + Foundation is mobile-first. Code for small + screens first, and larger devices will inherit those styles. + Customize for larger screens as necessary. +

    +

    HTML

    + +
    <div class="row"> + <div class="small-2 large-4 columns">...</div> + <div class="small-4 large-4 columns">...</div> + <div class="small-6 large-4 columns">...</div> +</div> +<div class="row"> + <div class="large-3 columns">...</div> + <div class="large-6 columns">...</div> + <div class="large-3 columns">...</div> +</div> +<div class="row"> + <div class="small-6 large-2 columns">...</div> + <div class="small-6 large-8 columns">...</div> + <div class="small-12 large-2 columns">...</div> +</div> +<div class="row"> + <div class="small-3 columns">...</div> + <div class="small-9 columns">...</div> +</div> +<div class="row"> + <div class="large-4 columns">...</div> + <div class="large-8 columns">...</div> +</div> +<div class="row"> + <div class="small-6 large-5 columns">...</div> + <div class="small-6 large-7 columns">...</div> +</div> +<div class="row"> + <div class="large-6 columns">...</div> + <div class="large-6 columns">...</div> +</div>
    +
    + +

    Rendered HTML

    +
    +
    + 24 +
    +
    4
    +
    + 64 +
    +
    +
    +
    + full3 +
    +
    + full6 +
    +
    + full3 +
    +
    +
    +
    + 62 +
    +
    + 68 +
    +
    + full2 +
    +
    +
    +
    3
    +
    9
    +
    +
    +
    + full4 +
    +
    + full8 +
    +
    +
    +
    + 65 +
    +
    + 67 +
    +
    +
    +
    + full6 +
    +
    + full6 +
    +
    +
    +

    Small Grid

    +

    Small grids expand to large screens easier than large grids + cram into small screens.

    +

    HTML

    +
    <div class="row"> + <div class="small-2 columns">2 columns</div> + <div class="small-10 columns">10 columns</div> +</div> +<div class="row"> + <div class="small-3 columns">3 columns</div> + <div class="small-9 columns">9 columns</div> +</div> +
    +
    + +

    Rendered HTML

    +
    +
    2 columns
    +
    10 columns
    +
    +
    +
    3 columns
    +
    9 columns
    +
    +
    +

    Medium Grid

    +

    Medium sized screens will inherit styles from small, unless + you specify a different layout, using the medium grid classes.

    +
    <div class="row"> + <div class="medium-2 columns">2 columns</div> + <div class="medium-10 columns">10 columns</div> +</div> +<div class="row"> + <div class="medium-3 columns">3 columns</div> + <div class="medium-9 columns">9 columns</div> +</div> +
    +
    +

    Rendered HTML

    +
    +
    2 columns
    +
    10 columns
    +
    +
    +
    3 columns
    +
    9 columns
    +
    +
    +

    Advanced

    +

    You can nest the grids indefinitely, though at a certain + point it will get absurd.

    +

    HTML

    +
    <div class="row"> + <div class="small-8 columns">8 + <div class="row"> + <div class="small-8 columns">8 Nested + <div class="row"> + <div class="small-8 columns">8 Nested Again</div> + <div class="small-4 columns">4</div> + </div> + </div> + <div class="small-4 columns">4</div> + </div> + </div> + <div class="small-4 columns">4</div> +</div> +
    +
    +

    Rendered HTML

    +
    +
    + 8 +
    +
    + 8 Nested +
    +
    8 Nested Again
    +
    4
    +
    +
    +
    4
    +
    +
    +
    4
    +
    +
    +

    Offsets

    +

    + Move blocks up to 11 columns to the right by using classes like + .large-offset-1 + and + .small-offset-3 + . +

    +

    HTML

    +
    <div class="row"> + <div class="large-1 columns">1</div> + <div class="large-11 columns">11</div> +</div> +<div class="row"> + <div class="large-1 columns">1</div> + <div class="large-10 large-offset-1 columns">10, offset 1</div> +</div> +<div class="row"> + <div class="large-1 columns">1</div> + <div class="large-9 large-offset-2 columns">9, offset 2</div> +</div> +<div class="row"> + <div class="large-1 columns">1</div> + <div class="large-8 large-offset-3 columns">8, offset 3</div> +</div> +
    +
    +

    Rendered HTML

    +
    +
    1
    +
    11
    +
    +
    +
    1
    +
    10, offset 1
    +
    +
    +
    1
    +
    9, offset 2
    +
    +
    +
    1
    +
    8, offset 3
    +
    +
    +

    Incomplete Rows

    +

    + In order to work around browsers' different rounding + behaviors, Foundation will float the last column in a row to the + right so the edge aligns. If your row doesn't have a count + that adds up to 12 columns, you can tag the last column with a + class of + end + in order to override that behavior. +

    +

    HTML

    +
    <div class="row"> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns">3</div> +</div> +<div class="row"> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns end">3 end</div> +</div> +
    +
    +

    Rendered HTML

    +
    +
    3
    +
    3
    +
    3
    +
    +
    +
    3
    +
    3
    +
    3 end
    +
    +
    +

    Centered Columns

    +

    + Center your columns by adding a class of + small-centered + to your + column + . Large will inherit small centering by default, but you can + also center solely on large by applying a + large-centered + class. To uncenter on large screens use + large-uncentered + . +

    +

    HTML

    +
    <div class="row"> + <div class="small-3 small-centered columns">3 centered</div> +</div> +<div class="row"> + <div class="small-6 large-centered columns">6 centered</div> +</div> +<div class="row"> + <div class="small-9 small-centered large-uncentered columns">9 centered</div> +</div> +<div class="row"> + <div class="small-11 small-centered columns">11 centered</div> +</div> +
    +
    +

    Rendered HTML

    +
    +
    3 centered
    +
    +
    +
    6 centered, + large
    +
    +
    +
    9 + centered small
    +
    +
    +
    11 centered
    +
    +
    +

    Source Ordering

    +

    + Using these source ordering classes, you can shift columns + around between our breakpoints. This means if you place + sub-navigation below main content on small displays, you have + the option to position the sub-navigation on either the left or + right of the page for large displays. Prefix push/pull with the + size of the device you want to apply the styles to. + medium-push-# + , + large-push-# + is the syntax you'll use. Use + large-reset-order + to reset pushed or pulled columns to their original position on + large screens. +

    +

    HTML

    +
    <div class="row"> + <div class="small-10 small-push-2 columns">10</div> + <div class="small-2 small-pull-10 columns">2, last</div> +</div> +<div class="row"> + <div class="large-9 large-push-3 columns">9</div> + <div class="large-3 large-pull-9 columns">3, last</div> +</div> +<div class="row"> + <div class="large-8 large-push-4 columns">8</div> + <div class="large-4 large-pull-8 columns">4, last</div> +</div> +<div class="row"> + <div class="medium-7 small-5 small-push-7 medium-push-5 columns">7</div> + <div class="medium-5 small-7 small-pull-5 medium-pull-7 columns">5, last</div> +</div> +<div class="row"> + <div class="medium-6 medium-push-6 columns">6</div> + <div class="medium-6 medium-pull-6 columns">6, last</div> +</div> +
    +
    +

    Rendered HTML

    +
    +
    10
    +
    2, last
    +
    +
    +
    9
    +
    3, last
    +
    +
    +
    8
    +
    4, last
    +
    +
    +
    7
    +
    5, + last
    +
    +
    +
    6
    +
    6, last
    +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/GridPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/GridPage.java new file mode 100644 index 0000000000..6d026d624e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/GridPage.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.request.mapper.parameter.PageParameters; + +public class GridPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public GridPage(PageParameters params) { + super(params); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IconBarPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IconBarPage.html new file mode 100644 index 0000000000..6d3ce676df --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IconBarPage.html @@ -0,0 +1,158 @@ + + + + +wicket-foundation + + + + +
    +

    Icon Bar

    +

    An Icon Bar provides a menu to + quickly navigate an app. Use the Icon Bar horizontally + or vertically, with the labels below the icons or to the + right. Have it your way.

    + +
    +

    Basic

    + +

    + You can create an Icon Bar using minimal markup. + Specifying the number of items + one-up + through + six-up + will ensure the items are evenly spaced. +

    +
    +
    +

    HTML

    + +
    <div class="basic"></div> +
    +
    + +
    +
    +

    Java

    + +
    List<IconBarItem> items = new ArrayList<>(); +items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-bookmark.svg"), "Bookmark")); +items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-home.svg"), "Home")); +items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-info.svg"), "Info")); +items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-like.svg"), "Like")); +items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-mail.svg"), "Mail")); +FoundationIconBar iconBar = new FoundationIconBar("basic", items); +add(iconBar); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    + +
    +

    Vertical Icon Bar

    + +

    + It's easy. Just add a class of + .vertical + to make the Icon Bar stack up. For an Icon bar + that's horizontal on small screens but vertical on + larger use '.medium-vertical' and + 'large-vertical' to utilize those breakpoints. +

    +
    +
    +

    HTML

    + +
    <div class="vertical"></div> +<div class="largeVertical"></div> +
    +
    + +
    +
    +

    Java

    + +
    +private void createVertical() { + List<IconBarItem> items = new ArrayList<>(); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-bookmark.svg"), "Bookmark")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-home.svg"), "Home")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-info.svg"), "Info")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-like.svg"), "Like")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-mail.svg"), "Mail")); + IconBarOptions options = new IconBarOptions(IconBarVerticalStyle.VERTICAL); + FoundationIconBar iconBar = new FoundationIconBar("vertical", options, items); + add(iconBar); +} + +private void createLargeVertical() { + List<IconBarItem> items = new ArrayList<>(); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-bookmark.svg"), "Bookmark")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-home.svg"), "Home")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-info.svg"), "Info")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-like.svg"), "Like")); + IconBarOptions options = new IconBarOptions(IconBarVerticalStyle.LARGE_VERTICAL); + FoundationIconBar iconBar = new FoundationIconBar("largeVertical", options, items); + add(iconBar); +} +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    + +
    +

    Advanced

    +

    + Instead of images you can use Icon Fonts. This will help + you change the colors and size faster instead of having + to upload new images each time. Check + out our badass Icon Fonts here. +

    +
    +
    +

    HTML

    + +
    <div class="advanced"></div> +
    +
    + +
    +
    +

    Java

    + +
    List<IconBarItem> items = new ArrayList<>(); +items.add(new IconBarFontItem("fi-bookmark", "Bookmark")); +items.add(new IconBarFontItem("fi-home", "Home")); +items.add(new IconBarFontItem("fi-info", "Info")); +items.add(new IconBarFontItem("fi-like", "Like")); +items.add(new IconBarFontItem("fi-mail", "Mail")); +FoundationIconBar iconBar = new FoundationIconBar("advanced", items); +add(iconBar); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IconBarPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IconBarPage.java new file mode 100644 index 0000000000..22f086b589 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IconBarPage.java @@ -0,0 +1,72 @@ +package org.wicketstuff.foundation; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.resource.PackageResourceReference; +import org.wicketstuff.foundation.icon.IconType; +import org.wicketstuff.foundation.iconbar.FoundationIconBar; +import org.wicketstuff.foundation.iconbar.IconBarFontItem; +import org.wicketstuff.foundation.iconbar.IconBarItem; +import org.wicketstuff.foundation.iconbar.IconBarOptions; +import org.wicketstuff.foundation.iconbar.IconBarResourceItem; +import org.wicketstuff.foundation.iconbar.IconBarVerticalStyle; + +public class IconBarPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public IconBarPage(PageParameters params) { + super(params); + createBasic(); + createVertical(); + createLargeVertical(); + createAdvanced(); + } + + private void createBasic() { + List items = new ArrayList<>(); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-bookmark.svg"), "Bookmark")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-home.svg"), "Home")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-info.svg"), "Info")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-like.svg"), "Like")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-mail.svg"), "Mail")); + FoundationIconBar iconBar = new FoundationIconBar("basic", items); + add(iconBar); + } + + private void createVertical() { + List items = new ArrayList<>(); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-bookmark.svg"), "Bookmark")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-home.svg"), "Home")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-info.svg"), "Info")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-like.svg"), "Like")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-mail.svg"), "Mail")); + IconBarOptions options = new IconBarOptions(IconBarVerticalStyle.VERTICAL); + FoundationIconBar iconBar = new FoundationIconBar("vertical", options, items); + add(iconBar); + } + + private void createLargeVertical() { + List items = new ArrayList<>(); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-bookmark.svg"), "Bookmark")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-home.svg"), "Home")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-info.svg"), "Info")); + items.add(new IconBarResourceItem(new PackageResourceReference(this.getClass(), "fi-like.svg"), "Like")); + IconBarOptions options = new IconBarOptions(IconBarVerticalStyle.LARGE_VERTICAL); + FoundationIconBar iconBar = new FoundationIconBar("largeVertical", options, items); + add(iconBar); + } + + private void createAdvanced() { + List items = new ArrayList<>(); + items.add(new IconBarFontItem(IconType.BOOKMARK, "Bookmark")); + items.add(new IconBarFontItem(IconType.HOME, "Home")); + items.add(new IconBarFontItem(IconType.INFO, "Info")); + items.add(new IconBarFontItem(IconType.LIKE, "Like")); + items.add(new IconBarFontItem(IconType.MAIL, "Mail")); + FoundationIconBar iconBar = new FoundationIconBar("advanced", items); + add(iconBar); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IndexPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IndexPage.html new file mode 100644 index 0000000000..eca3289fb1 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IndexPage.html @@ -0,0 +1,160 @@ + + + + +wicket-foundation + + + +
    +
    +

    Welcome to Foundation

    +
    +
    + +
    +
    +
    +

    We’re stoked you want to try Foundation!

    +

    To get going, this file (index.html) includes some basic styles you can modify, play around with, or totally destroy to get going.

    +

    Once you've exhausted the fun in this document, you should check out:

    +
    +
    +

    Foundation Documentation
    Everything you need to know about using the framework.

    +
    +
    +

    Foundation on Github
    Latest code, issue reports, feature requests and more.

    +
    +
    +

    @foundationzurb
    Ping us on Twitter if you have questions. If you build something with this we'd love to see it (and send you a totally boss sticker).

    +
    +
    +
    +
    +
    + +
    +
    +
    Here’s your basic grid:
    + + +
    +
    +
    +

    This is a twelve column section in a row. Each of these includes a div.panel element so you can see where the columns are - it's not required at all for the grid.

    +
    +
    +
    +
    +
    +
    +

    Six columns

    +
    +
    +
    +
    +

    Six columns

    +
    +
    +
    +
    +
    +
    +

    Four columns

    +
    +
    +
    +
    +

    Four columns

    +
    +
    +
    +
    +

    Four columns

    +
    +
    +
    + +
    + +
    We bet you’ll need a form somewhere:
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    + +
    + +
    +
    + .com +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    + + + +
    +
    + + + +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    Try one of these buttons:
    +

    Simple Button
    + Radius Button
    + Round Button
    + Success Btn
    + Alert Btn
    + Secondary Btn

    +
    +
    So many components, girl!
    +

    A whole kitchen sink of goodies comes with Foundation. Checkout the docs to see them all, along with details on making them your own.

    + Go to Foundation Docs +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IndexPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IndexPage.java new file mode 100644 index 0000000000..c19955b8a8 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/IndexPage.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.request.mapper.parameter.PageParameters; + +public class IndexPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public IndexPage(final PageParameters parameters) { + super(parameters); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/InlineListsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/InlineListsPage.html new file mode 100644 index 0000000000..55fb47e7f0 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/InlineListsPage.html @@ -0,0 +1,54 @@ + + + + +wicket-foundation + + + + +
    +

    Inline Lists

    +

    This simple construct creates a + horizontal list of links, like in a footer. Use it when + you want more control than spaces between links.

    + +
    +

    Basic

    + +

    You can create an inline list using minimal markup.

    +
    +

    HTML

    + +
    <div wicket:id="basic"></div> +
    +
    + +

    Java

    + +
    List<String> titles = Arrays.asList("Link 1", "Link 2", "Link 3", "Link 4", "Link 5"); +FoundationInlineList inlineList = new FoundationInlineList("basic", titles) { + @Override + public AbstractLink createLink(String id, int idx) { + return new AjaxLink<Void>(id) { + + @Override + public void onClick(AjaxRequestTarget target) { + } + + }; + } +}; +add(inlineList); +
    +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/InlineListsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/InlineListsPage.java new file mode 100644 index 0000000000..cf100f1ae3 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/InlineListsPage.java @@ -0,0 +1,33 @@ +package org.wicketstuff.foundation; + +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.inlinelist.FoundationInlineList; + +public class InlineListsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public InlineListsPage(PageParameters params) { + super(params); + List titles = Arrays.asList("Link 1", "Link 2", "Link 3", "Link 4", "Link 5"); + FoundationInlineList inlineList = new FoundationInlineList("basic", titles) { + @Override + public AbstractLink createLink(String id, int idx) { + return new AjaxLink(id) { + + @Override + public void onClick(AjaxRequestTarget target) { + } + + }; + } + }; + add(inlineList); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/LabelPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/LabelPage.html new file mode 100644 index 0000000000..6563486c60 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/LabelPage.html @@ -0,0 +1,81 @@ + + + + +wicket-foundation + + + + +
    +

    Labels

    +

    Labels are useful inline styles + that can be dropped into body copy to call out certain + sections or to attach metadata. For example, you can + attach a label that notes when something was updated.

    + +
    +

    Basic

    + +

    You can create a label using minimal markup.

    +
    +
    +

    HTML

    + +
    <span wicket:id="basic"></span> +
    +
    + +
    +
    +

    Java

    + +
    add(new FoundationLabel("basic", "Regular label")); +
    +
    + +
    +
    +

    Rendered HTML

    + +
    +
    + +
    +

    Advanced

    + +

    Additional classes can be added to your labels to + change their appearance.

    +
    +
    +

    HTML

    + +
    <div wicket:id="radiusSecondary"></div> +<div wicket:id="roundAlert"></div> +<div wicket:id="success"></div> +
    +
    + +
    +
    +

    Java

    + +
    add(new FoundationLabel("radiusSecondary", "Radius Secondary Label", new LabelOptions(ButtonColor.SECONDARY, ButtonRadius.RADIUS))); +add(new FoundationLabel("roundAlert", "Round Alert Label", new LabelOptions(ButtonColor.ALERT, ButtonRadius.ROUND))); +add(new FoundationLabel("success", "Success Label", new LabelOptions(ButtonColor.SUCCESS))); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/LabelPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/LabelPage.java new file mode 100644 index 0000000000..0731c590ab --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/LabelPage.java @@ -0,0 +1,20 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.label.FoundationLabel; +import org.wicketstuff.foundation.label.LabelOptions; + +public class LabelPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public LabelPage(PageParameters params) { + super(params); + add(new FoundationLabel("basic", "Regular Label")); + add(new FoundationLabel("radiusSecondary", "Radius Secondary Label", new LabelOptions(ButtonColor.SECONDARY, ButtonRadius.RADIUS))); + add(new FoundationLabel("roundAlert", "Round Alert Label", new LabelOptions(ButtonColor.ALERT, ButtonRadius.ROUND))); + add(new FoundationLabel("success", "Success Label", new LabelOptions(ButtonColor.SUCCESS))); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ModalInModalPanel.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ModalInModalPanel.html new file mode 100644 index 0000000000..002803b671 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ModalInModalPanel.html @@ -0,0 +1,26 @@ + + + + +wicket-foundation + + + + +

    This is a modal.

    +

    + Reveal makes these very easy to summon and dismiss. The close button + is simply an anchor with a unicode character icon and a class of + close-reveal-modal + . Clicking anywhere outside the modal will also dismiss it. +

    +

    Finally, if your modal summons another Reveal modal, the plugin + will handle that for you gracefully.

    +

    + +

    + × + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ModalInModalPanel.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ModalInModalPanel.java new file mode 100644 index 0000000000..d43bd29604 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ModalInModalPanel.java @@ -0,0 +1,16 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.Model; +import org.wicketstuff.foundation.revealmodal.FoundationRevealModal; + +public class ModalInModalPanel extends Panel { + + private static final long serialVersionUID = 1L; + + public ModalInModalPanel(String id) { + super(id); + final String content = "

    This is a second modal.

    See? It just slides into place after the other first modal. Very handy when you need subsequent dialogs, or when a modal option impacts or requires another decision.

    ×"; + add(new FoundationRevealModal("secondModal", Model.of("Second Modal..."), Model.of(content))); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/OrbitSliderPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/OrbitSliderPage.html new file mode 100644 index 0000000000..df58fa28ab --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/OrbitSliderPage.html @@ -0,0 +1,140 @@ + + + + +wicket-foundation + + + + +
    +

    Orbit

    +

    Orbit is an easy, powerful, responsive + image slider that allows users to swipe on touch-enabled devices.

    + +
    +

    Deprecation Notice:

    + +

    + Orbit has been deprecated, meaning that it is no longer supported. + There's no need to worry though as we decided to leave it in + Foundation if you choose to continue using it. We explain it here. +

    +

    There are other great options if you need an image slider. A + lot of them have features based on Orbit and may have added one of + two more features.

    +

    + This image slider is really slick: Slick Carousel. It + has all the features Orbit has and can also be used as a carousel + for single image sliding. It's easy to set up and is well supported. +

    +

    Orbit is also not accessible to screen readers or assistive + devices.

    +
    +

    + +

    +

    How to Setup Orbit

    +

    + Orbit requires minimal HTML markup to function. Our Javascript takes + care of most of the heavy lifting for you. The only thing you need + to do is add a + <ul data-orbit></ul> + element to your page. You can then populate it with images, text, + and captions. Here's the markup required to implement a basic + Orbit slider on your page: +

    +

    HTML

    + +
    <div wicket:id="orbitSlider"></div> +
    + +

    Java

    + +
    items.add(new OrbitSliderItem("1", new PackageResourceReference(this.getClass(), "andromeda-orbit.jpg"), "Caption 1")); +items.add(new OrbitSliderItem("2", new PackageResourceReference(this.getClass(), "launch-orbit.jpg"), "Caption 2")); +items.add(new OrbitSliderItem("3", new PackageResourceReference(this.getClass(), "satelite-orbit.jpg"), "Caption 3")); +FoundationOrbitSlider orbitSlider = new FoundationOrbitSlider("orbitSlider", new ListModel<>(items)); +add(orbitSlider); +
    + +

    Rendered HTML

    + +
    + +
    +

    Content Sliders

    +

    Orbit can also be used with just content and no images.

    +
    +
    +

    HTML

    + +
    <div wicket:id="contentSlider"></div> +
    + +
    +
    +

    Java

    + +
    List<OrbitSliderContent> contents = new ArrayList<>(); +contents.add(new OrbitSliderContent("1", "Heading 1", "Subheading 1")); +contents.add(new OrbitSliderContent("2", "Heading 2", "Subheading 2")); +contents.add(new OrbitSliderContent("3", "Heading 3", "Subheading 3")); +FoundationOrbitContentSlider contentSlider = new FoundationOrbitContentSlider("contentSlider", new ListModel<>(contents)); +add(contentSlider); +
    + +
    +
    +

    Rendered HTML

    + +
    +
    +
    + +
    +

    Deep Linking

    +

    + To link to a particular slide in your Orbit slider you will need to + add a + data-orbit-slide + attribute to each slide. Then anywhere on your page you can use + data-orbit-link + to link to that slide. +

    +
    +
    +

    HTML

    + +
    <div wicket:id="orbitSlider"></div> +
    + +
    +
    +

    Java

    + +
    <div wicket:id="orbitSlider"></div> +
    + +
    +
    +

    Rendered HTML

    + + + +
    + +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/OrbitSliderPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/OrbitSliderPage.java new file mode 100644 index 0000000000..989ded724c --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/OrbitSliderPage.java @@ -0,0 +1,46 @@ +package org.wicketstuff.foundation; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.resource.PackageResourceReference; +import org.wicketstuff.foundation.orbitslider.FoundationOrbitContentSlider; +import org.wicketstuff.foundation.orbitslider.FoundationOrbitSlider; +import org.wicketstuff.foundation.orbitslider.FoundationOrbitSliderAjaxLink; +import org.wicketstuff.foundation.orbitslider.OrbitSliderContent; +import org.wicketstuff.foundation.orbitslider.OrbitSliderItem; + +public class OrbitSliderPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public OrbitSliderPage(PageParameters params) { + super(params); + List items = new ArrayList<>(); + items.add(new OrbitSliderItem("1", new PackageResourceReference(this.getClass(), "andromeda-orbit.jpg"), "Caption 1")); + items.add(new OrbitSliderItem("2", new PackageResourceReference(this.getClass(), "launch-orbit.jpg"), "Caption 2")); + items.add(new OrbitSliderItem("3", new PackageResourceReference(this.getClass(), "satelite-orbit.jpg"), "Caption 3")); + FoundationOrbitSlider orbitSlider = new FoundationOrbitSlider("orbitSlider", new ListModel<>(items)); + add(orbitSlider); + List contents = new ArrayList<>(); + contents.add(new OrbitSliderContent("1", "Heading 1", "Subheading 1")); + contents.add(new OrbitSliderContent("2", "Heading 2", "Subheading 2")); + contents.add(new OrbitSliderContent("3", "Heading 3", "Subheading 3")); + FoundationOrbitContentSlider contentSlider = new FoundationOrbitContentSlider("contentSlider", new ListModel<>(contents)); + add(contentSlider); + + add(new FoundationOrbitSliderAjaxLink("slide1", Model.of("slide1"))); + add(new FoundationOrbitSliderAjaxLink("slide2", Model.of("slide2"))); + add(new FoundationOrbitSliderAjaxLink("slide3", Model.of("slide3"))); + + List slides = new ArrayList<>(); + slides.add(new OrbitSliderContent("slide1", "This is heading 1", "This is subheading 1")); + slides.add(new OrbitSliderContent("slide2", "This is heading 2", "This is subheading 2")); + slides.add(new OrbitSliderContent("slide3", "This is heading 3", "This is subheading 3")); + FoundationOrbitContentSlider slider = new FoundationOrbitContentSlider("slider", new ListModel<>(slides)); + add(slider); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PanelsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PanelsPage.html new file mode 100644 index 0000000000..2fb964761d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PanelsPage.html @@ -0,0 +1,82 @@ + + + + +wicket-foundation + + + + +
    + +

    Panels

    +

    A panel is a simple, helpful Foundation + component that enables you to outline sections of your page + easily. This allows you to view your page sections as you add + content to them, or add emphasis to a section. The width is + controlled by the grid columns you put them inside.

    + +
    +

    Basic

    + +

    You can create a panel using minimal markup.

    +
    + +

    HTML

    + +
    <div wicket:id="regular"> + <h5>This is a regular panel.</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> +</div> +
    +
    + +

    Java

    + +
    +add(new FoundationPanelBorder("regular", Model.of(FoundationPanelType.NORMAL))); +
    +
    + +

    Rendered HTML

    +
    +
    This is a regular panel.
    +

    It has an easy to override visual style, and is + appropriately subdued.

    +
    + +

    +

    +
    +

    Advanced

    + +

    Additional classes can be added to your panels.

    +
    +

    HTML

    + +
    <div wicket:id="callout"> + <h5>This is a callout panel.</h5> + <p>It's a little ostentatious, but useful for important content.</p> +</div> +
    +
    + +

    Java

    + +
    +add(new FoundationPanelBorder("callout", Model.of(FoundationPanelType.CALLOUT))); +
    +
    + +

    Rendered HTML

    +
    +
    This is a callout panel.
    +

    It's a little ostentatious, but useful for important + content.

    +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PanelsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PanelsPage.java new file mode 100644 index 0000000000..9d89d4cda4 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PanelsPage.java @@ -0,0 +1,18 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.foundationpanel.FoundationPanelBorder; +import org.wicketstuff.foundation.foundationpanel.PanelType; + +public class PanelsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public PanelsPage(PageParameters params) { + super(params); + add(new FoundationPanelBorder("regular", Model.of(PanelType.NORMAL))); + add(new FoundationPanelBorder("callout", Model.of(PanelType.CALLOUT))); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PricingTablePage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PricingTablePage.html new file mode 100644 index 0000000000..536c50f8e2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PricingTablePage.html @@ -0,0 +1,74 @@ + + + + +wicket-foundation + + + +
    +

    Pricing Tables

    +

    If you're making a rockin' + marketing site for a subscription-based product, you're likely in + need of a pricing table. These tables fill 100% of their container + and are made from a simple unordered list.

    + +
    +

    Basic

    + +
      +
    • li.title: Creates the styles for a title.
    • +
    • li.price: Add a price that stands out.
    • +
    • li.description: If you need to describe the + plan, add this.
    • +
    • li.bullet-item: To call out features, use this + list item.
    • +
    • li.cta-button: To add a button inside a list + item, use this.
    • +
    +
    +
    + +

    HTML

    +
    <div wicket:id="basic"></div> +
    + +
    + +
    + +

    Java

    +
    List<PricingTableItem> items = new ArrayList<>(); +items.add(new PricingTableItem(PricingTableItemType.TITLE, "Hammer")); +items.add(new PricingTableItem(PricingTableItemType.PRICE, "12€")); +items.add(new PricingTableItem(PricingTableItemType.DESCRIPTION, "A really good hammer")); +items.add(new PricingTableItem(PricingTableItemType.BULLET_ITEM, "Weight 3kg")); +items.add(new PricingTableItem(PricingTableItemType.BULLET_ITEM, "Wooden handle")); +items.add(new PricingTableItem(PricingTableItemType.BULLET_ITEM, "Good grip")); +items.add(new PricingTableItem(PricingTableItemType.CTA_BUTTON)); +add(new FoundationPricingTable("pricingTable", new ListModel<>(items)) { + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel<PricingTableItem> model) { + return new PricingTableButtonPanel(id, Model.of("Buy now")) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript("alert('clicked');"); + } + }; + } +}); +
    + +
    + +
    +

    Rendered HTML

    + +
    + +
    +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PricingTablePage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PricingTablePage.java new file mode 100644 index 0000000000..fd7ef8b40b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/PricingTablePage.java @@ -0,0 +1,47 @@ +package org.wicketstuff.foundation; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.pricingtable.FoundationPricingTable; +import org.wicketstuff.foundation.pricingtable.PricingTableButtonPanel; +import org.wicketstuff.foundation.pricingtable.PricingTableItem; +import org.wicketstuff.foundation.pricingtable.PricingTableItemType; + +public class PricingTablePage extends BasePage { + + private static final long serialVersionUID = 1L; + + public PricingTablePage(PageParameters params) { + super(params); + List items = new ArrayList<>(); + items.add(new PricingTableItem(PricingTableItemType.TITLE, "Hammer")); + items.add(new PricingTableItem(PricingTableItemType.PRICE, "12€")); + items.add(new PricingTableItem(PricingTableItemType.DESCRIPTION, "A really good hammer")); + items.add(new PricingTableItem(PricingTableItemType.BULLET_ITEM, "Weight 3kg")); + items.add(new PricingTableItem(PricingTableItemType.BULLET_ITEM, "Wooden handle")); + items.add(new PricingTableItem(PricingTableItemType.BULLET_ITEM, "Good grip")); + items.add(new PricingTableItem(PricingTableItemType.CTA_BUTTON)); + add(new FoundationPricingTable("pricingTable", new ListModel<>(items)) { + @Override + public WebMarkupContainer createContent(int idx, String id, + IModel model) { + return new PricingTableButtonPanel(id, Model.of("Buy now")) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript("alert('clicked');"); + } + }; + } + }); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ProgressBarPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ProgressBarPage.html new file mode 100644 index 0000000000..a77d6c3581 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ProgressBarPage.html @@ -0,0 +1,69 @@ + + + + +wicket-foundation + + + + +
    +

    Progress Bars

    +

    A simple way to add progress bars to your + layouts. You only need two HTML elements to make them and + they're easy to customize.

    + +
    +

    Basic

    + +

    You can create a progress bar using minimal markup.

    +
    +
    + +

    HTML

    +
    <div wicket:id="basic"></div> +
    +
    + +

    Java

    +
    add(new FoundationProgressBarPanel("basic", 100)); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    + +
    +

    Advanced

    + +

    Additional classes can be added to your progress bar to change + its appearance.

    +
    +
    + + +

    HTML

    +
    <div wicket:id="advanced"></div> +
    +
    + +

    Java

    +
    ProgressBarOptions options = new ProgressBarOptions(ButtonColor.SUCCESS).setRadius(ButtonRadius.ROUND); +add(new FoundationProgressBarPanel("advanced", options, 80)); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ProgressBarPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ProgressBarPage.java new file mode 100644 index 0000000000..ed589414af --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ProgressBarPage.java @@ -0,0 +1,19 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.progressbar.FoundationProgressBar; +import org.wicketstuff.foundation.progressbar.ProgressBarOptions; + +public class ProgressBarPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public ProgressBarPage(PageParameters params) { + super(params); + add(new FoundationProgressBar("basic", 100)); + ProgressBarOptions options = new ProgressBarOptions(ButtonColor.SUCCESS).setRadius(ButtonRadius.ROUND); + add(new FoundationProgressBar("advanced", options, 80)); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/RevealModalPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/RevealModalPage.html new file mode 100644 index 0000000000..b6c223bedc --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/RevealModalPage.html @@ -0,0 +1,80 @@ + + + + +wicket-foundation + + + + +
    +

    Reveal Modal

    +

    Modal dialogs, or pop-up windows, are + handy for prototyping and production. Foundation includes Reveal our + jQuery modal plugin, to make this easy for you.

    + +
    +

    Basic

    + +

    You can create a reveal modal using minimal markup. The anchor + tag with the reveal-modal-id is what triggers the Reveal.

    +
    +
    +

    HTML

    +
    <div wicket:id="basic"></div> +
    +
    +
    +

    Java

    +
    final String content = "<h2>Awesome. I have it.</h2><p class=\"lead\">Your couch. It is mine.</p><p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p><a class=\"close-reveal-modal\">×</a>"; +add(new FoundationRevealModal("basic", Model.of("Click Me For A Modal"), Model.of(content))); +
    +
    +
    +

    Rendered HTML

    + +
    +
    +
    + +
    +

    Intermediate

    + +

    You can create a reveal modal with another inside it. You can + even put a video into a reveal.

    +
    +
    +

    HTML

    +
    <div wicket:id="modalInModal"></div> +<div wicket:id="video"></div> +
    +
    +
    +

    Java

    +
    final String videoContent = "<h2>This modal has video</h2><div class=\"flex-video widescreen vimeo\"><iframe width=\"1280\" height=\"720\" src=\"//www.youtube-nocookie.com/embed/wnXCopXXblE?rel=0\" frameborder=\"0\" allowfullscreen></iframe></div><p><a class=\"close-reveal-modal\">×</a>"; +add(new FoundationRevealModal("video", Model.of("Example Modal with Video..."), Model.of(videoContent))); + +add(new FoundationRevealModal("modalInModal", Model.of("Modal in a modal...")) { + + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createContentPanel(String id) { + return new ModalInModalPanel(id); + } +}); +
    +
    +
    +

    Rendered HTML

    + +
    + +
    +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/RevealModalPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/RevealModalPage.java new file mode 100644 index 0000000000..87ca4df973 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/RevealModalPage.java @@ -0,0 +1,31 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.revealmodal.FoundationRevealModal; + +public class RevealModalPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public RevealModalPage(PageParameters params) { + super(params); + + final String content = "

    Awesome. I have it.

    Your couch. It is mine.

    I'm a cool paragraph that lives inside of an even cooler modal. Wins!

    ×"; + add(new FoundationRevealModal("basic", Model.of("Click Me For A Modal"), Model.of(content))); + + final String videoContent = "

    This modal has video

    ×"; + add(new FoundationRevealModal("video", Model.of("Example Modal with Video..."), Model.of(videoContent))); + + add(new FoundationRevealModal("modalInModal", Model.of("Modal in a modal...")) { + + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createContentPanel(String id) { + return new ModalInModalPanel(id); + } + }); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SideNavPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SideNavPage.html new file mode 100644 index 0000000000..8dd398c828 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SideNavPage.html @@ -0,0 +1,98 @@ + + + + +wicket-foundation + + + + +

    +

    Side Nav

    +

    Side nav, like you see on the Foundation + docs, is a great way to provide navigation for your entire site, or + for sections of an individual page.

    + +
    +

    Basic

    + +

    You can create a side nav using minimal markup.

    +
    +
    + +

    HTML

    +
    <div wicket:id="basic"></div> +
    +
    + +

    Java

    +
    List<SideNavItem> basicItems = new ArrayList<>(); +basicItems.add(new SideNavLinkItem("Link 1")); +basicItems.add(new SideNavLinkItem("Link 2")); +basicItems.add(new SideNavLinkItem("Link 3")); +basicItems.add(new SideNavLinkItem("Link 4")); +add(new FoundationSideNav("basic", basicItems) { + @Override + public AbstractLink createLink(final String id, int idx) { + return new AjaxLink<Void>(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%s');", id)); + } + }; + } +}); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    + +

    Advanced

    + +

    Additional classes can be added to your side nav to change its + appearance.

    +
    +
    + +

    HTML

    +
    <div wicket:id="advanced"></div> +
    +
    + +

    Java

    +
    List<SideNavItem> advancedItems = new ArrayList<>(); +advancedItems.add(new SideNavHeaderItem("Header")); +advancedItems.add(new SideNavLinkItem("Link 1", true)); +advancedItems.add(new SideNavLinkItem("Link 2")); +advancedItems.add(new SideNavDividerItem()); +advancedItems.add(new SideNavLinkItem("Link 3")); +advancedItems.add(new SideNavLinkItem("Link 4")); +add(new FoundationSideNav("advanced", advancedItems) { + @Override + public AbstractLink createLink(final String id, final int idx) { + return new AjaxLink<Void>(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%d');", idx)); + } + }; + } +}); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SideNavPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SideNavPage.java new file mode 100644 index 0000000000..64329b0354 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SideNavPage.java @@ -0,0 +1,58 @@ +package org.wicketstuff.foundation; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.sidenav.FoundationSideNav; +import org.wicketstuff.foundation.sidenav.SideNavDividerItem; +import org.wicketstuff.foundation.sidenav.SideNavHeaderItem; +import org.wicketstuff.foundation.sidenav.SideNavItem; +import org.wicketstuff.foundation.sidenav.SideNavLinkItem; + +public class SideNavPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public SideNavPage(PageParameters params) { + super(params); + List basicItems = new ArrayList<>(); + basicItems.add(new SideNavLinkItem("Link 1")); + basicItems.add(new SideNavLinkItem("Link 2")); + basicItems.add(new SideNavLinkItem("Link 3")); + basicItems.add(new SideNavLinkItem("Link 4")); + add(new FoundationSideNav("basic", basicItems) { + @Override + public AbstractLink createLink(String id, final int idx) { + return new AjaxLink(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%d');", idx)); + } + }; + } + }); + + List advancedItems = new ArrayList<>(); + advancedItems.add(new SideNavHeaderItem("Header")); + advancedItems.add(new SideNavLinkItem("Link 1", true)); + advancedItems.add(new SideNavLinkItem("Link 2")); + advancedItems.add(new SideNavDividerItem()); + advancedItems.add(new SideNavLinkItem("Link 3")); + advancedItems.add(new SideNavLinkItem("Link 4")); + add(new FoundationSideNav("advanced", advancedItems) { + @Override + public AbstractLink createLink(final String id, final int idx) { + return new AjaxLink(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%d');", idx)); + } + }; + } + }); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SplitButtonsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SplitButtonsPage.html new file mode 100644 index 0000000000..eb0d070aa7 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SplitButtonsPage.html @@ -0,0 +1,125 @@ + + + + +wicket-foundation + + + +
    +

    Split Buttons

    +

    + We've simplified our split downdrop buttons by removing the + dedicated ones associated with a style of button. Instead, + you'll use our new dropdown plugin + to attach a split button to the button style of your choice. +

    + +
    +

    Basic

    + +

    You can create a split button using minimal markup.

    +
    +
    + +

    HTML

    +
    <div wicket:id="basic"></div> +
    +
    + +

    Java

    +
    add(new FoundationSplitButton("basic", "Split Button", Arrays.asList("This is a link", "This is another", "Yet another")) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createButton(String id) { + return new Link<Void>(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + + @Override + public AbstractLink createDropdownLink(String id, int idx) { + return new Link<Void>(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } +}); +
    +
    + +
    +
    +

    Rendered HTML

    + +
    +
    +
    + +
    +

    Advanced

    + +

    Additional classes can be added to your split buttons to + change its appearance.

    +
    +
    + +

    HTML

    +
    <div wicket:id="advanced"></div> +
    +
    + +

    Java

    +
    SplitButtonOptions options = new SplitButtonOptions(ButtonSize.SMALL).setColor(ButtonColor.ALERT).setRadius(ButtonRadius.ROUND); +add(new FoundationSplitButton("advanced", "Split Button", Arrays.asList("This is a link", "This is another", "Yet another"), options) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createButton(String id) { + return new Link<Void>(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + + @Override + public AbstractLink createDropdownLink(String id, int idx) { + return new Link<Void>(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } +}); +
    +
    + +
    +
    +

    HTML Rendered

    +
    +
    +
    +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SplitButtonsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SplitButtonsPage.java new file mode 100644 index 0000000000..51c6e8fce3 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SplitButtonsPage.java @@ -0,0 +1,80 @@ +package org.wicketstuff.foundation; + +import java.util.Arrays; + +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.button.ButtonColor; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.button.ButtonSize; +import org.wicketstuff.foundation.splitbutton.FoundationSplitButton; +import org.wicketstuff.foundation.splitbutton.SplitButtonOptions; + +public class SplitButtonsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public SplitButtonsPage(PageParameters params) { + super(params); + + add(new FoundationSplitButton("basic", "Split Button", Arrays.asList("This is a link", "This is another", "Yet another")) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createButton(String id) { + return new Link(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + + @Override + public AbstractLink createDropdownLink(String id, int idx) { + return new Link(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + }); + + SplitButtonOptions options = new SplitButtonOptions(ButtonSize.SMALL).setColor(ButtonColor.ALERT).setRadius(ButtonRadius.ROUND); + add(new FoundationSplitButton("advanced", "Split Button", Arrays.asList("This is a link", "This is another", "Yet another"), options) { + + private static final long serialVersionUID = 1L; + + @Override + public AbstractLink createButton(String id) { + return new Link(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + + @Override + public AbstractLink createDropdownLink(String id, int idx) { + return new Link(id) { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + } + }; + } + }); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SubNavPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SubNavPage.html new file mode 100644 index 0000000000..41e5becc02 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SubNavPage.html @@ -0,0 +1,76 @@ + + + + +wicket-foundation + + + +
    +

    Sub Nav

    +

    This simple sub nav is great for moving + between different states of a page. We use these frequently to show + iterations of something, typically by date, but they're also + handy for filters like these.

    + +
    +

    Basic

    +

    + Add a + .sub-nav + class to a + dl + element and fill it full of definitions. You can use the definition + title as a label at the beginning (useful for building filters on a + page). +

    +

    + Add a title to the beginning of your list with the + dt + element. Add an + .active + class to a + dd + element to give it the active style. +

    +
    +
    +

    HTML

    + +
    <div class="basic"></div> +
    +
    + +
    +
    +

    Java

    + +
    List<SubNavItem> items = new ArrayList<>(); +items.add(new SubNavItem("All", true)); +items.add(new SubNavItem("Active")); +items.add(new SubNavItem("Pending")); +items.add(new SubNavItem("Suspended")); +add(new FoundationSubNav("basic", "FILTER", items) { + @Override + public AbstractLink createLink(String id, final int idx) { + return new AjaxLink<Void>(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%d');", idx)); + } + }; + } +}); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SubNavPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SubNavPage.java new file mode 100644 index 0000000000..44f1129753 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/SubNavPage.java @@ -0,0 +1,36 @@ +package org.wicketstuff.foundation; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.subnav.FoundationSubNav; +import org.wicketstuff.foundation.subnav.SubNavItem; + +public class SubNavPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public SubNavPage(PageParameters params) { + super(params); + List items = new ArrayList<>(); + items.add(new SubNavItem("All", true)); + items.add(new SubNavItem("Active")); + items.add(new SubNavItem("Pending")); + items.add(new SubNavItem("Suspended")); + add(new FoundationSubNav("basic", "FILTER", items) { + @Override + public AbstractLink createLink(String id, final int idx) { + return new AjaxLink(id) { + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%d');", idx)); + } + }; + } + }); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ThumbnailsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ThumbnailsPage.html new file mode 100644 index 0000000000..3f495364a0 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ThumbnailsPage.html @@ -0,0 +1,50 @@ + + + + +wicket-foundation + + + + +
    +

    Thumbnails

    +

    + If you're going to use an image as an anchor, we've got you + covered. All you gotta do is wrap an + a.th + around your image and voilà! +

    + +
    + +

    Basic

    + +

    You can create a thumbnail image using minimal markup.

    +
    +
    +

    HTML

    + +
    <span wicket:id="thumbnail"></span> +
    +
    + +
    +
    +

    Java

    + +
    add(new FoundationThumbnail("thumbnail", new PackageResourceReference(this.getClass(), "space.jpg"), new PackageResourceReference(this.getClass(), "space-th-sm.jpg"))); +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ThumbnailsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ThumbnailsPage.java new file mode 100644 index 0000000000..101f524e42 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/ThumbnailsPage.java @@ -0,0 +1,16 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.resource.PackageResourceReference; +import org.wicketstuff.foundation.thumbnail.FoundationThumbnail; + +public class ThumbnailsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public ThumbnailsPage(PageParameters params) { + super(params); + add(new FoundationThumbnail("thumbnail", new PackageResourceReference(this.getClass(), "space.jpg"), + new PackageResourceReference(this.getClass(), "space-th-sm.jpg"))); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TooltipsPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TooltipsPage.html new file mode 100644 index 0000000000..e3140223db --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TooltipsPage.html @@ -0,0 +1,150 @@ + + + + +wicket-foundation + + + + +
    +

    Tooltips

    +

    + Tooltips are a quick way to provide extended + information on a term or action on a page. +

    + +
    +

    Basic

    + +

    You can create a tooltip using minimal markup.

    +
    +
    +

    HTML

    + +
    <span wicket:id="basic"></span> +
    +
    +
    +
    +

    Java

    + +
    Label basic = new Label("basic", Model.of("Hover on desktop or touch me on mobile!")); +basic.add(new FoundationTooltipBehavior("Tooltips are awesome, you should totally use them!")); +add(basic); +
    +
    +
    +
    +

    Rendered HTML

    + +
    +
    + +
    +

    Advanced

    + +

    Additional classes can be added to your tooltips to + change its appearance.

    + +
    +

    HTML

    + +
    <span wicket:id="advanced"></span> +
    +
    +
    +
    +

    Java

    + +
    Label advanced = new Label("advanced", Model.of("Hover on desktop or touch me on mobile!")); +TooltipOptions options = new TooltipOptions(TooltipPosition.TIP_TOP).setRadius(ButtonRadius.ROUND); +advanced.add(new FoundationTooltipBehavior("Tooltips are awesome, you should totally use them!", options)); +add(advanced); +
    +
    +
    + +

    Rendered HTML

    + +

    + +

    + +

    Visibility

    + +

    + You can now also add + show_on + to your + data-options + attribute to allow your tooltips to show on + small + , + medium + , or + large + when the page loads. They will show on all screen sizes + by default. +

    + +
    + +
    +

    HTML

    + +
    <span wicket:id="visibility"></span> +
    +
    +
    +
    +

    Java

    + +
    Label visibility = new Label("visibility", Model.of("This one shows tooltip only on large displays!")); +TooltipOptions visibilityOptions = new TooltipOptions(TooltipVisibility.LARGE); +visibility.add(new FoundationTooltipBehavior("Tooltips are awesome, you should totally use them!", visibilityOptions)); +add(visibility); +
    +
    +
    +
    +

    Rendered HTML

    + +
    +
    + +

     

    +

    Disable for touch events

    + +

    If you don't want tooltips to interfere with a + touch event, you can disable them for those devices, + like so:

    + +
    +

    HTML

    + +
    <span wicket:id="disableForTouch"></span> +
    +
    +
    +
    +

    Java

    + +
    Label disableForTouch = new Label("disableForTouch", Model.of("This one's tooltip is disabled for touch devices!")); +TooltipOptions touchOptions = new TooltipOptions(true); +disableForTouch.add(new FoundationTooltipBehavior("Tooltips are awesome, you should totally use them!", touchOptions)); +add(disableForTouch); +
    +
    +
    + + +
    +

    Rendered HTML

    + +
    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TooltipsPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TooltipsPage.java new file mode 100644 index 0000000000..986f88b9b8 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TooltipsPage.java @@ -0,0 +1,38 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.button.ButtonRadius; +import org.wicketstuff.foundation.tooltip.FoundationTooltipBehavior; +import org.wicketstuff.foundation.tooltip.TooltipOptions; +import org.wicketstuff.foundation.tooltip.TooltipPosition; +import org.wicketstuff.foundation.tooltip.TooltipVisibility; + +public class TooltipsPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public TooltipsPage(PageParameters params) { + super(params); + + Label basic = new Label("basic", Model.of("Hover on desktop or touch me on mobile!")); + basic.add(new FoundationTooltipBehavior("Tooltips are awesome, you should totally use them!")); + add(basic); + + Label advanced = new Label("advanced", Model.of("Hover on desktop or touch me on mobile!")); + TooltipOptions options = new TooltipOptions(TooltipPosition.TIP_TOP).setRadius(ButtonRadius.ROUND); + advanced.add(new FoundationTooltipBehavior("Tooltips are awesome, you should totally use them!", options)); + add(advanced); + + Label visibility = new Label("visibility", Model.of("This one shows tooltip only on large displays!")); + TooltipOptions visibilityOptions = new TooltipOptions(TooltipVisibility.LARGE); + visibility.add(new FoundationTooltipBehavior("Tooltips are awesome, you should totally use them!", visibilityOptions)); + add(visibility); + + Label disableForTouch = new Label("disableForTouch", Model.of("This one's tooltip is disabled for touch devices!")); + TooltipOptions touchOptions = new TooltipOptions(true); + disableForTouch.add(new FoundationTooltipBehavior("Tooltips are awesome, you should totally use them!", touchOptions)); + add(disableForTouch); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TopBarPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TopBarPage.html new file mode 100644 index 0000000000..9660bbaa59 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TopBarPage.html @@ -0,0 +1,340 @@ + + + + +wicket-foundation + + + + +
    +

    Top Bar

    +

    The Foundation Top Bar gives you + a great way to display a complex navigation bar on + small, medium or large screens.

    + +
    +

    Build With HTML + Classes

    +

    + The top bar is a pretty complex piece of magical UI + goodness. We rely on many presentational classes to + define its look and feel, and there's a lot + happening in the JS. The top bar is hoverable by + default, but you can change it to use click events + instead by adding + data-options="is_hover: false" + to the + <nav> + element. +

    + +
    +

    HTML

    + +
    <div wicket:id="basic"></div> +
    +
    +
    + +
    +

    Java

    + +
    List<TopBarItem> rightItems = new ArrayList<>(); +rightItems.add(new SimpleTopBarItem("rightButtonActive", "Right Button Active", true, false)); +SimpleTopBarItem rightButtonDropdown = new SimpleTopBarItem("rightButtonDropdown", "Right Button Dropdown"); +rightButtonDropdown.addChild(new SimpleTopBarItem("firstLinkInDropdown", "First link in dropdown")); +rightButtonDropdown.addChild(new SimpleTopBarItem("activeLinkInDropdown", "Active link in dropdown", true, false)); +rightItems.add(rightButtonDropdown); + +List<TopBarItem> leftItems = new ArrayList<>(); +leftItems.add(new SimpleTopBarItem("leftButton", "Left Button")); + +add(new FoundationTopBarPanel("basic", rightItems, leftItems) { + + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new FoundationTopBarTitlePanel(id, Model.of("My Site"), Model.of(TopBarMenuLayout.TITLE_AND_ICON), Model.of("Menu")) { + @Override + public AbstractLink createTitleLink(String id) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + } + + @Override + public AbstractLink createLink(String id, final String itemId) { + return new AjaxLink<Void>(id) { + + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%s');", itemId)); + } + + }; + } +}); +
    +
    +
    + +
    +

    Rendered HTML

    +
    +
    +
    +
    +
    + +
    +

    Positioning the Bar

    +

    + The top bar is built with a single + nav + element with a class of + top-bar + . It will take on full-browser width by default. To make + the top bar stay fixed as you scroll, wrap it in + div class="fixed" + . If you want your navigation to be set to your grid + width, wrap it in + div class="contain-to-grid" + . You may use + fixed + and + contain-to-grid + together in the wrapping div ( + div class="contain-to-grid fixed + ). +

    +
    +

    Fixed navigation

    + +
    +

    HTML

    + +
    <div wicket:id="fixed"></div> +
    +
    +
    + +
    +

    Java

    + +
    add(new FoundationTopBarPanel("fixed", new TopBarOptions().setFixed(true), new ArrayList<TopBarItem>(), new ArrayList<TopBarItem>()) { + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new EmptyPanel(id); + } + @Override + public AbstractLink createLink(String id, String itemId) { + return new Link<Void>(id) { + @Override + public void onClick() { + } + }; + } +}); +
    +
    +
    + + +
    +

    Sticky Top Bar

    +

    + You may also wrap your top bar in + div class="sticky" + and put it anywhere within your markup. When the + navigation hits the top of the browser, it will act like + the fixed top bar and stick to the top as users continue + to scroll. Note: If you are using SCSS, + you can control the default + sticky + class by adjusting the + $topbar-sticky-class + variable. Make sure the JS variable for + sticky_class matches whatever class you + use in the variable. + +

    + +
    +

    HTML

    + +
    <div wicket:id="sticky"></div> +
    +
    +
    + +
    +

    Java

    + +
    add(new FoundationTopBarPanel("sticky", new TopBarOptions().setSticky(true), new ArrayList<TopBarItem>(), new ArrayList<TopBarItem>()) { + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new EmptyPanel(id); + } + @Override + public AbstractLink createLink(String id, String itemId) { + return new Link<Void>(id) { + @Override + public void onClick() { + } + }; + } +}); +
    +
    +
    + + +
    +
    +
    + +
    +

    Sticky conditions

    +

    + You can also add + sticky_on + to your + data-options + attribute to allow your sticky bar to work on + small + , + medium + , or + large + when the page loads. This works in conjunction with the + sticky class wrapper to target sticky for small, medium, + or large. It will be sticky on all screen sizes by + default. +

    + +
    +

    HTML

    + +
    <div wicket:id="sticky"></div> +
    +
    +
    + +
    +

    Java

    + +
    TopBarOptions stickyConditionsOptions = new TopBarOptions(); +stickyConditionsOptions.setSticky(true); +stickyConditionsOptions.setStickySizes(EnumSet.of(TopBarStickySize.LARGE)); +add(new FoundationTopBarPanel("stickyConditions", stickyConditionsOptions, new ArrayList<TopBarItem>(), new ArrayList<TopBarItem>()) { + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new EmptyPanel(id); + } + @Override + public AbstractLink createLink(String id, String itemId) { + return new Link<Void>(id) { + @Override + public void onClick() { + } + }; + } +}); +
    +
    +
    + + + +
    +

    + +

    +

    Clickable Top Bar

    +

    You can now make the top bar clickable by adding a + data-attribute to the nav element. Here's an + example:

    + +
    +

    HTML

    + +
    <div wicket:id="sticky"></div> +
    +
    +
    + +
    +

    Java

    + +
    List<TopBarItem> clickableRightItems = new ArrayList<>(); +clickableRightItems.add(new SimpleTopBarItem("rightButtonActive", "Right Button Active", true, false)); +SimpleTopBarItem clickableRightDropdown = new SimpleTopBarItem("clickableRightDropdown", "Right Button Dropdown"); +clickableRightDropdown.addChild(new SimpleTopBarItem("firstLinkInDropdown", "First link in dropdown")); +clickableRightDropdown.addChild(new SimpleTopBarItem("activeLinkInDropdown", "Active link in dropdown", true, false)); +clickableRightItems.add(rightButtonDropdown); + +add(new FoundationTopBarPanel("clickable", new TopBarOptions().setClickable(true), rightItems, new ArrayList<TopBarItem>()) { + + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new FoundationTopBarTitlePanel(id, Model.of("My Site"), Model.of(TopBarMenuLayout.TITLE_AND_ICON), Model.of("Menu")) { + @Override + public AbstractLink createTitleLink(String id) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + } + + @Override + public AbstractLink createLink(String id, final String itemId) { + return new AjaxLink<Void>(id) { + + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%s');", itemId)); + } + + }; + } +}); +
    +
    +
    + +
    +

    Rendered HTML

    +
    +
    + +
    +
    +
    + +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TopBarPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TopBarPage.java new file mode 100644 index 0000000000..f2142ec169 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TopBarPage.java @@ -0,0 +1,161 @@ +package org.wicketstuff.foundation; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.link.AbstractLink; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.topbar.FoundationTopBar; +import org.wicketstuff.foundation.topbar.FoundationTopBarTitle; +import org.wicketstuff.foundation.topbar.SimpleTopBarItem; +import org.wicketstuff.foundation.topbar.TopBarItem; +import org.wicketstuff.foundation.topbar.TopBarMenuLayout; +import org.wicketstuff.foundation.topbar.TopBarOptions; + +public class TopBarPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public TopBarPage(PageParameters params) { + super(params); + + // basic + + List rightItems = new ArrayList<>(); + rightItems.add(new SimpleTopBarItem("rightButtonActive", "Right Button Active", true, false)); + SimpleTopBarItem rightButtonDropdown = new SimpleTopBarItem("rightButtonDropdown", "Right Button Dropdown"); + rightButtonDropdown.addChild(new SimpleTopBarItem("firstLinkInDropdown", "First link in dropdown")); + rightButtonDropdown.addChild(new SimpleTopBarItem("activeLinkInDropdown", "Active link in dropdown", true, false)); + rightItems.add(rightButtonDropdown); + + List leftItems = new ArrayList<>(); + leftItems.add(new SimpleTopBarItem("leftButton", "Left Button")); + + add(new FoundationTopBar("basic", rightItems, leftItems) { + + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new FoundationTopBarTitle(id, Model.of("My Site"), Model.of(TopBarMenuLayout.TITLE_AND_ICON), Model.of("Menu")) { + @Override + public AbstractLink createTitleLink(String id) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + } + + @Override + public AbstractLink createLink(String id, final String itemId) { + return new AjaxLink(id) { + + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%s');", itemId)); + } + + }; + } + }); + + // fixed + +// add(new FoundationTopBarPanel("fixed", new TopBarOptions().setFixed(true), new ArrayList(), new ArrayList()) { +// @Override +// public WebMarkupContainer createTitleContainer(String id) { +// return new EmptyPanel(id); +// } +// @Override +// public WebMarkupContainer createLink(String id, String itemId) { +// return new Link(id) { +// @Override +// public void onClick() { +// } +// }; +// } +// }); + + // sticky + +// add(new FoundationTopBarPanel("sticky", new TopBarOptions().setSticky(true), new ArrayList(), new ArrayList()) { +// @Override +// public WebMarkupContainer createTitleContainer(String id) { +// return new EmptyPanel(id); +// } +// @Override +// public WebMarkupContainer createLink(String id, String itemId) { +// return new Link(id) { +// @Override +// public void onClick() { +// } +// }; +// } +// }); + + // sticky options + +// TopBarOptions stickyConditionsOptions = new TopBarOptions(); +// stickyConditionsOptions.setSticky(true); +// stickyConditionsOptions.setStickySizes(EnumSet.of(TopBarStickySize.LARGE)); +// add(new FoundationTopBarPanel("stickyConditions", stickyConditionsOptions, new ArrayList(), new ArrayList()) { +// @Override +// public WebMarkupContainer createTitleContainer(String id) { +// return new EmptyPanel(id); +// } +// @Override +// public WebMarkupContainer createLink(String id, String itemId) { +// return new Link(id) { +// @Override +// public void onClick() { +// } +// }; +// } +// }); + + // clickable + + List clickableRightItems = new ArrayList<>(); + clickableRightItems.add(new SimpleTopBarItem("rightButtonActive", "Right Button Active", true, false)); + SimpleTopBarItem clickableRightDropdown = new SimpleTopBarItem("clickableRightDropdown", "Right Button Dropdown"); + clickableRightDropdown.addChild(new SimpleTopBarItem("firstLinkInDropdown", "First link in dropdown")); + clickableRightDropdown.addChild(new SimpleTopBarItem("activeLinkInDropdown", "Active link in dropdown", true, false)); + clickableRightItems.add(rightButtonDropdown); + + add(new FoundationTopBar("clickable", new TopBarOptions().setClickable(true), rightItems, new ArrayList()) { + + @Override + public WebMarkupContainer createTitleContainer(String id) { + return new FoundationTopBarTitle(id, Model.of("My Site"), Model.of(TopBarMenuLayout.TITLE_AND_ICON), Model.of("Menu")) { + @Override + public AbstractLink createTitleLink(String id) { + return new Link(id) { + @Override + public void onClick() { + } + }; + } + }; + } + + @Override + public AbstractLink createLink(String id, final String itemId) { + return new AjaxLink(id) { + + @Override + public void onClick(AjaxRequestTarget target) { + target.appendJavaScript(String.format("alert('%s');", itemId)); + } + + }; + } + }); + + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TypePage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TypePage.html new file mode 100644 index 0000000000..b83fe4d7ec --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TypePage.html @@ -0,0 +1,499 @@ + + + + +wicket-foundation + + + + +
    +

    Typography

    +

    Typography in Foundation 5 is meant + to make your life easier by providing clean, attractive, + simple default styles for all of the most basic + typographical elements.

    + +
    +

    Headers

    +

    Foundation includes styles for all of the header elements + that are balanced and based on a modular scale (though + modular-scale is not a dependency of Foundation).

    +
    +
    +

    HTML

    + +
    <h1>h1. This is a very large header.</h1> +<h2>h2. This is a large header.</h2> +<h3>h3. This is a medium header.</h3> +<h4>h4. This is a moderate header.</h4> +<h5>h5. This is a small header.</h5> +<h6>h6. This is a tiny header.</h6> +
    +
    + +
    +
    +

    Rendered HTML

    +
    +

    h1. This is a very large header.

    +

    h2. This is a large header.

    +

    h3. This is a medium header.

    +

    h4. This is a moderate header.

    +
    h5. This is a small header.
    +
    h6. This is a tiny header.
    +
    +
    +
    + +
    +

    Subheaders

    +

    Lighten up your headers by adding a class of .subheader + to any header element.

    +
    +
    +

    HTML

    + +
    <h1 class="subheader">h1.subheader</h1> +<h2 class="subheader">h2.subheader</h2> +<h3 class="subheader">h3.subheader</h3> +<h4 class="subheader">h4.subheader</h4> +<h5 class="subheader">h5.subheader</h5> +<h6 class="subheader">h6.subheader</h6> +
    +
    + +
    +
    +

    Rendered HTML

    +
    + +

    h1.subheader

    +

    h2.subheader

    +

    h3.subheader

    +

    h4.subheader

    +
    h5.subheader
    +
    h6.subheader
    + +
    +
    +
    + +
    +

    Small Header Segments

    +

    + By inserting a + small + element into a header Foundation will scale the header font + size down for an inline element, allowing you to use this + for subtitles or other secondary header text. +

    +
    +
    +

    HTML

    + +
    <h1>h1. <small>Small segment header.</small></h1> +<h2>h2. <small>Small segment header.</small></h2> +<h3>h3. <small>Small segment header.</small></h3> +<h4>h4. <small>Small segment header.</small></h4> +<h5>h5. <small>Small segment header.</small></h5> +<h6>h6. <small>Small segment header.</small></h6> +
    +
    + +
    +
    +

    Rendered HTML

    +
    +

    + h1. Small segment header. +

    +

    + h2. Small segment header. +

    +

    + h3. Small segment header. +

    +

    + h4. Small segment header. +

    +
    + h5. Small segment header. +
    +
    + h6. Small segment header. +
    +
    +
    +
    + +
    +

    Paragraphs

    +

    + This is a paragraph. Paragraphs are preset with a font size, + line height and spacing to match the overall vertical + rhythm. To show what a paragraph looks like this needs a + little more content -- so, did you know that there + are storms occurring on Jupiter that are larger than the + Earth? Pretty cool. Wrap + strong + around type to make it bold! You can also + use + em + to italicize your words. +

    +

    HTML

    + +
    <p>This is a paragraph. Paragraphs are preset with a font size, line height and spacing to match the overall vertical rhythm. To show what a paragraph looks like this needs a little more content so, did you know that there are storms occurring on Jupiter that are larger than the Earth? Pretty cool. Wrap strong around type to <strong>make it bold!</strong>. You can also use em to <em>italicize your words</em>.</p> +
    +
    + +
    + +

    + Links are very standard, and the color + is preset to the Foundation primary color. +

    +

    HTML

    + +
    <p>Links are very standard, and the <a href="http://www.youtube.com/watch?v=zT2aVoUkSDg">color is preset</a> to the Foundation primary color.</p> +
    +
    + +
    +

    Lists

    +

    Lists are helpful for, well, lists of things. Didn't + see that coming did you! There are baked-in styles for a + number of different unordered list styles, as well as + ordered and definition lists.

    +
    +
    +

    HTML

    +
    <ul class="disc"> + <li>List item with a much longer description or more content.</li> + <li>List item</li> + <li>List item + <ul> + <li>Nested list item</li> + <li>Nested list item</li> + <li>Nested list item</li> + </ul> + </li> + <li>List item</li> + <li>List item</li> + <li>List item</li> +</ul> +
    +
    + +
    +
    +

    Rendered HTML

    +
      +
    • List item with a much longer description or + more content.
    • +
    • List item
    • +
    • List item +
        +
      • Nested list item
      • +
      • Nested list item
      • +
      • Nested list item
      • +
      +
    • +
    • List item
    • +
    • List item
    • +
    • List item
    • +
    +
    +
    + +
    +
    +

    HTML

    + +
    <ul class="circle"> + <li>List item with a much longer description or more content.</li> + <li>List item</li> + <li>List item + <ul> + <li>Nested List Item</li> + <li>Nested List Item</li> + <li>Nested List Item</li> + </ul> + </li> + <li>List item</li> + <li>List item</li> + <li>List item</li> +</ul> +
    +
    + +
    +
    +

    Rendered HTML

    +
      +
    • List item with a much longer description or + more content.
    • +
    • List item
    • +
    • List item +
        +
      • Nested List Item
      • +
      • Nested List Item
      • +
      • Nested List Item
      • +
      +
    • +
    • List item
    • +
    • List item
    • +
    • List item
    • +
    +
    +
    + +
    +
    +

    HTML

    + +
    <ul class="square"> + <li>List item with a much longer description or more content.</li> + <li>List item</li> + <li>List item + <ul> + <li>Nested List Item</li> + <li>Nested List Item</li> + <li>Nested List Item</li> + </ul> + </li> + <li>List item</li> + <li>List item</li> + <li>List item</li> +</ul> +
    +
    + +
    +
    +

    Rendered HTML

    +
      +
    • List item with a much longer description or + more content.
    • +
    • List item
    • +
    • List item +
        +
      • Nested List Item
      • +
      • Nested List Item
      • +
      • Nested List Item
      • +
      +
    • +
    • List item
    • +
    • List item
    • +
    • List item
    • +
    +
    +
    + +
    +
    +

    HTML

    + +
    <ul class="no-bullet"> + <li>List item with a much longer description or more content.</li> + <li>List item</li> + <li>List item + <ul> + <li>Nested List Item</li> + <li>Nested List Item</li> + <li>Nested List Item</li> + </ul> + </li> + <li>List item</li> + <li>List item</li> + <li>List item</li> +</ul> +
    +
    +
    + +
    +
    +

    Rendered HTML

    +
      +
    • List item with a much longer description or + more content.
    • +
    • List item
    • +
    • List item +
        +
      • Nested List Item
      • +
      • Nested List Item
      • +
      • Nested List Item
      • +
      +
    • +
    • List item
    • +
    • List item
    • +
    • List item
    • +
    +
    +
    + +
    +
    +

    HTML

    + +
    <ol> + <li>List item with a much longer description or more content.</li> + <li>List item</li> + <li>List item + <ol> + <li>Nested List Item</li> + <li>Nested List Item</li> + <li>Nested List Item</li> + </ol> + </li> + <li>List item</li> + <li>List item</li> + <li>List item</li> +</ol> +
    +
    + +
    +
    +

    Rendered HTML

    +
      +
    1. List item with a much longer description or + more content.
    2. +
    3. List item
    4. +
    5. List item +
        +
      1. Nested List Item
      2. +
      3. Nested List Item
      4. +
      5. Nested List Item
      6. +
      +
    6. +
    7. List item
    8. +
    9. List item
    10. +
    11. List item
    12. +
    +
    +
    + +
    +
    +

    HTML

    + +
    <dl> + <dt>Definition Title</dt> + <dd>Definition Cras justo odio, dapibus ac facilisis in, egestas eget quam. Nullam id dolor id nibh ultricies vehicula ut id elit.</dd> +</dl> +
    +
    + +
    +
    +

    Rendered HTML

    +
    +
    Definition Title
    +
    Definition Cras justo odio, dapibus ac + facilisis in, egestas eget quam. Nullam id dolor + id nibh ultricies vehicula ut id elit.
    +
    +
    +
    + +
    +

    + +

    +

    Blockquotes

    +

    Sometimes other people say smart things, and you may want + to mention that through a blockquote callout. We've got + you covered.

    +
    +
    +

    HTML

    + +
    <blockquote>Those people who think they know everything are a great annoyance to those of us who do.<cite>Isaac Asimov</cite></blockquote> +
    +
    + +
    +
    +

    Rendered HTML

    +
    + Those people who think they know everything are a + great annoyance to those of us who do.Isaac + Asimov +
    +
    +
    + +
    +

    V-Cards

    +

    + Here's a handy microformat-friendly list to address + all your needs. +

    +
    +
    +

    HTML

    + +
    <ul class="vcard"> + <li class="fn">Gaius Baltar</li> + <li class="street-address">123 Colonial Ave.</li> + <li class="locality">Caprica City</li> + <li><span class="state">Caprica</span>, <span class="zip">12345</span></li> + <li class="email"><a href="#">[email protected]</a></li> +</ul> +
    +
    + +
    + +
    + + +

    Foundation includes print styles developed by HTML5 + Boilerplate to give you some basic print-specific styles. + These are activated when you print through a media query. It + includes:

    +
      +
    • Clearing out backgrounds, box shadows and text + shadows
    • +
    • Appending link URLs after the anchor text
    • +
    • Bordering blockquotes and pre elements
    • +
    • Page cleanup and window minimization
    • +
    +

    + On top of that, Foundation includes a couple of simple + classes you can use to control elements printing, or not + printing. Simply attach + .show-for-print + to an element to only show when printing, and + .hide-for-print + to hide something when printing. +

    +
    + +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TypePage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TypePage.java new file mode 100644 index 0000000000..cd4120480d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/TypePage.java @@ -0,0 +1,12 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.request.mapper.parameter.PageParameters; + +public class TypePage extends BasePage { + + private static final long serialVersionUID = 1L; + + public TypePage(PageParameters params) { + super(params); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/VisibilityPage.html b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/VisibilityPage.html new file mode 100644 index 0000000000..3017a3aeb5 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/VisibilityPage.html @@ -0,0 +1,222 @@ + + + + +wicket-foundation + + + +
    +

    Visibility Classes

    +

    Visibility classes let you show or hide elements based on screen size or device orientation. You can use visibility classes to control which elements users see depending on their browsing environment.

    + +

    Show by Screen Size

    +

    In this example, we use the show visibility classes to show certain strings of text based on the device on which users view a page. If their browser meets the class's conditions, the element will be shown. If not, it will be hidden.

    +

    HTML

    + +
    <p wicket:id="showByScreenSize"> + <strong wicket:id="showForSmallOnly"></strong> + <strong wicket:id="showForMediumUp"></strong> + <strong wicket:id="showForMediumOnly"></strong> + <strong wicket:id="showForLargeUp"></strong> + <strong wicket:id="showForLargeOnly"></strong> + <strong wicket:id="showForXlargeUp"></strong> + <strong wicket:id="showForXlargeOnly"></strong> + <strong wicket:id="showForXxlargeUp"></strong> +</p>
    +
    + +

    Java

    + +
    FoundationPanelBorder showByScreenSize = new FoundationPanelBorder("showByScreenSize", Model.of(FoundationPanelType.NORMAL)); +add(showByScreenSize); +Label showForSmallOnly = new Label("showForSmallOnly", Model.of("This text is shown only on a small screen.")); +showByScreenSize.add(showForSmallOnly); +showForSmallOnly.add(new ShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_SMALL_ONLY))); +... +
    +
    + +

    Rendered HTML

    +
    + + + + + + + + +
    + +

    Hide by Screen Size

    +

    This example shows the opposite: It uses the hide visibility classes to state which elements should disappear based on your device's screen size or orientation. Users will see elements on every browser except those that meet these conditions.

    +

    HTML

    + +
    <p wicket:id="hideByScreenSize"> + <strong wicket:id="hideForSmallOnly"></strong> + <strong wicket:id="hideForMediumUp"></strong> + <strong wicket:id="hideForMediumOnly"></strong> + <strong wicket:id="hideForLargeUp"></strong> + <strong wicket:id="hideForLargeOnly"></strong> + <strong wicket:id="hideForXlargeUp"></strong> + <strong wicket:id="hideForXlargeOnly"></strong> + <strong wicket:id="hideForXxlargeUp"></strong> +</p>
    +
    + +

    Java

    + +
    FoundationPanelBorder hideByScreenSize = new FoundationPanelBorder("hideByScreenSize", Model.of(FoundationPanelType.NORMAL)); +add(hideByScreenSize); +Label hideForSmallOnly = new Label("hideForSmallOnly", Model.of("You are not on a small screen.")); +hideByScreenSize.add(hideForSmallOnly); +hideForSmallOnly.add(new HideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_SMALL_ONLY))); +... +
    +
    + +

    Rendered HTML

    +
    + + + + + + + + +
    +

    Orientation Detection

    +

    This straightforward example shows how two strings of text determine whether or not an element is visible in different orientations. This will change on mobile devices when you rotate the device. On desktop, the orientation is almost always reported as landscape.

    +

    HTML

    + +
    <p wicket:id="orientationDetection"> + <strong wicket:id="showForLandscape"></strong> + <strong wicket:id="showForPortrait"></strong> +</p>
    +
    + + +

    Java

    + +
    FoundationPanelBorder orientationDetection = new FoundationPanelBorder("orientationDetection", Model.of(FoundationPanelType.NORMAL)); +add(orientationDetection); +Label showForLandscape = new Label("showForLandscape", Model.of("You are in landscape orientation.")); +orientationDetection.add(showForLandscape); +showForLandscape.add(new ShowByOrientationBehavior(Model.of(ShowByOrientationType.SHOW_FOR_LANDSCAPE))); +... +
    +
    + +

    Rendered HTML

    +
    + + +
    +

    Touch Detection

    +

    There are also visibility classes to hide or show content based on whether a device supports touch (as determined by Modernizr).

    +

    HTML

    + +
    <p wicket:id="touchDetection"> + <strong wicket:id="showForTouch"></strong> + <strong wicket:id="hideForTouch"></strong> +</p>
    +
    + +

    Java

    + +
    FoundationPanelBorder touchDetection = new FoundationPanelBorder("touchDetection", Model.of(FoundationPanelType.NORMAL)); +add(touchDetection); +Label showForTouch = new Label("showForTouch", Model.of("You are on a touch-enabled device.")); +touchDetection.add(showForTouch); +showForTouch.add(new TouchDetectionBehavior(Model.of(TouchDetectionType.SHOW_FOR_TOUCH))); +... +
    +
    + +

    Rendered HTML

    +
    + You are on a touch-enabled device. + You are not on a touch-enabled device. +
    +

    Accessibility

    +

    Finally, if you want to hide some content but still make it accessible for screen readers, use the hidden visibility classes. Do not confuse these classes with hide visibility classes. Use these classes in conjunction with the hide and show visibility classes to control complex layouts while offering accessibility for those using screen readers.

    +

    HTML

    + +
    <p wicket:id="hiddenFor"> + <strong wicket:id="hiddenForSmallOnly"></strong> + <strong wicket:id="hiddenForMediumUp"></strong> + <strong wicket:id="hiddenForMediumOnly"></strong> + <strong wicket:id="hiddenForLargeUp"></strong> + <strong wicket:id="hiddenForLargeOnly"></strong> + <strong wicket:id="hiddenForXlargeUp"></strong> + <strong wicket:id="hiddenForXlargeOnly"></strong> + <strong wicket:id="hiddenForXxlargeUp"></strong> +</p>
    +
    + +

    Java

    + +
    FoundationPanelBorder hiddenFor = new FoundationPanelBorder("hiddenFor", Model.of(FoundationPanelType.NORMAL)); +add(hiddenFor); +Label hiddenForSmallOnly = new Label("hiddenForSmallOnly", Model.of("You are not on a small screen.")); +hiddenFor.add(hiddenForSmallOnly); +hiddenForSmallOnly.add(new HiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_SMALL_ONLY))); +... +
    +
    + +

    Rendered HTML

    +
    + + + + + + + + +
    +

    To reverse the rules defined by hidden, use the visible visibility classes.

    +

    HTML

    + +
    <p wicket:id="visibleFor"> + <strong class="visibleForSmallOnly"></strong> + <strong class="visibleForMediumUp"></strong> + <strong class="visibleForMediumOnly"></strong> + <strong class="visibleForLargeUp"></strong> + <strong class="visibleForLargeOnly"></strong> + <strong class="visibleForXlargeUp"></strong> + <strong class="visibleForXlargeOnly"></strong> + <strong class="visibleForXxlargeUp"></strong> +</p>
    +
    + +

    Java

    + +
    FoundationPanelBorder visibleFor = new FoundationPanelBorder("visibleFor", Model.of(FoundationPanelType.NORMAL)); +add(visibleFor); +Label visibleForSmallOnly = new Label("visibleForSmallOnly", Model.of("This text is visible only on a small screen.")); +visibleFor.add(visibleForSmallOnly); +visibleForSmallOnly.add(new VisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_SMALL_ONLY))); +... +
    +
    + +

    Rendered HTML

    +
    + + + + + + + + +
    +
    +
    +
    + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/VisibilityPage.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/VisibilityPage.java new file mode 100644 index 0000000000..e33dcf0410 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/VisibilityPage.java @@ -0,0 +1,204 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.wicketstuff.foundation.foundationpanel.FoundationPanelBorder; +import org.wicketstuff.foundation.foundationpanel.PanelType; +import org.wicketstuff.foundation.visibility.FoundationHiddenByScreenSizeBehavior; +import org.wicketstuff.foundation.visibility.FoundationHiddenByScreenSizeBehavior.HiddenByScreenSizeType; +import org.wicketstuff.foundation.visibility.FoundationHideByScreenSizeBehavior; +import org.wicketstuff.foundation.visibility.FoundationHideByScreenSizeBehavior.HideByScreenSizeType; +import org.wicketstuff.foundation.visibility.FoundationShowByOrientationBehavior; +import org.wicketstuff.foundation.visibility.FoundationShowByOrientationBehavior.ShowByOrientationType; +import org.wicketstuff.foundation.visibility.FoundationShowByScreenSizeBehavior; +import org.wicketstuff.foundation.visibility.FoundationShowByScreenSizeBehavior.ShowByScreenSizeType; +import org.wicketstuff.foundation.visibility.FoundationTouchDetectionBehavior; +import org.wicketstuff.foundation.visibility.FoundationTouchDetectionBehavior.TouchDetectionType; +import org.wicketstuff.foundation.visibility.FoundationVisibleForScreenSizeBehavior; +import org.wicketstuff.foundation.visibility.FoundationVisibleForScreenSizeBehavior.VisibleForScreenSizeType; + +public class VisibilityPage extends BasePage { + + private static final long serialVersionUID = 1L; + + public VisibilityPage(PageParameters params) { + super(params); + + // show by screen size + + FoundationPanelBorder showByScreenSize = new FoundationPanelBorder("showByScreenSize", Model.of(PanelType.NORMAL)); + add(showByScreenSize); + + Label showForSmallOnly = new Label("showForSmallOnly", Model.of("This text is shown only on a small screen.")); + showByScreenSize.add(showForSmallOnly); + showForSmallOnly.add(new FoundationShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_SMALL_ONLY))); + + Label showForMediumUp = new Label("showForMediumUp", Model.of("This text is shown on medium screens and up.")); + showByScreenSize.add(showForMediumUp); + showForMediumUp.add(new FoundationShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_MEDIUM_UP))); + + Label showForMediumOnly = new Label("showForMediumOnly", Model.of("This text is shown only on a medium screen.")); + showByScreenSize.add(showForMediumOnly); + showForMediumOnly.add(new FoundationShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_MEDIUM_ONLY))); + + Label showForLargeUp = new Label("showForLargeUp", Model.of("This text is shown on large screens and up.")); + showByScreenSize.add(showForLargeUp); + showForLargeUp.add(new FoundationShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_LARGE_UP))); + + Label showForLargeOnly = new Label("showForLargeOnly", Model.of("This text is shown only on a large screen.")); + showByScreenSize.add(showForLargeOnly); + showForLargeOnly.add(new FoundationShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_LARGE_ONLY))); + + Label showForXlargeUp = new Label("showForXlargeUp", Model.of("This text is shown on xlarge screens and up.")); + showByScreenSize.add(showForXlargeUp); + showForXlargeUp.add(new FoundationShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_XLARGE_UP))); + + Label showForXlargeOnly = new Label("showForXlargeOnly", Model.of("This text is shown only on an xlarge screen.")); + showByScreenSize.add(showForXlargeOnly); + showForXlargeOnly.add(new FoundationShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_XLARGE_ONLY))); + + Label showForXxlargeUp = new Label("showForXxlargeUp", Model.of("This text is shown on xxlarge screens and up.")); + showByScreenSize.add(showForXxlargeUp); + showForXxlargeUp.add(new FoundationShowByScreenSizeBehavior(Model.of(ShowByScreenSizeType.SHOW_FOR_XXLARGE_UP))); + + // hide by screen size + + FoundationPanelBorder hideByScreenSize = new FoundationPanelBorder("hideByScreenSize", Model.of(PanelType.NORMAL)); + add(hideByScreenSize); + + Label hideForSmallOnly = new Label("hideForSmallOnly", Model.of("You are not on a small screen.")); + hideByScreenSize.add(hideForSmallOnly); + hideForSmallOnly.add(new FoundationHideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_SMALL_ONLY))); + + Label hideForMediumUp = new Label("hideForMediumUp", Model.of("You are not on a medium, large, xlarge, or xxlarge screen.")); + hideByScreenSize.add(hideForMediumUp); + hideForMediumUp.add(new FoundationHideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_MEDIUM_UP))); + + Label hideForMediumOnly = new Label("hideForMediumOnly", Model.of("You are not on a medium screen.")); + hideByScreenSize.add(hideForMediumOnly); + hideForMediumOnly.add(new FoundationHideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_MEDIUM_ONLY))); + + Label hideForLargeUp = new Label("hideForLargeUp", Model.of("You are not on a large, xlarge, or xxlarge screen.")); + hideByScreenSize.add(hideForLargeUp); + hideForLargeUp.add(new FoundationHideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_LARGE_UP))); + + Label hideForLargeOnly = new Label("hideForLargeOnly", Model.of("You are not on a large screen.")); + hideByScreenSize.add(hideForLargeOnly); + hideForLargeOnly.add(new FoundationHideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_LARGE_ONLY))); + + Label hideForXlargeUp = new Label("hideForXlargeUp", Model.of("You are not on an xlarge screen and up.")); + hideByScreenSize.add(hideForXlargeUp); + hideForXlargeUp.add(new FoundationHideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_XLARGE_UP))); + + Label hideForXlargeOnly = new Label("hideForXlargeOnly", Model.of("You are not on an xlarge screen.")); + hideByScreenSize.add(hideForXlargeOnly); + hideForXlargeOnly.add(new FoundationHideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_XLARGE_ONLY))); + + Label hideForXxlargeUp = new Label("hideForXxlargeUp", Model.of("You are not on an xxlarge screen.")); + hideByScreenSize.add(hideForXxlargeUp); + hideForXxlargeUp.add(new FoundationHideByScreenSizeBehavior(Model.of(HideByScreenSizeType.HIDE_FOR_XXLARGE_UP))); + + // orientation detection + + FoundationPanelBorder orientationDetection = new FoundationPanelBorder("orientationDetection", Model.of(PanelType.NORMAL)); + add(orientationDetection); + + Label showForLandscape = new Label("showForLandscape", Model.of("You are in landscape orientation.")); + orientationDetection.add(showForLandscape); + showForLandscape.add(new FoundationShowByOrientationBehavior(Model.of(ShowByOrientationType.SHOW_FOR_LANDSCAPE))); + + Label showForPortrait = new Label("showForPortrait", Model.of("You are in portrait orientation.")); + orientationDetection.add(showForPortrait); + showForPortrait.add(new FoundationShowByOrientationBehavior(Model.of(ShowByOrientationType.SHOW_FOR_PORTRAIT))); + + // touch detection + + FoundationPanelBorder touchDetection = new FoundationPanelBorder("touchDetection", Model.of(PanelType.NORMAL)); + add(touchDetection); + + Label showForTouch = new Label("showForTouch", Model.of("You are on a touch-enabled device.")); + touchDetection.add(showForTouch); + showForTouch.add(new FoundationTouchDetectionBehavior(Model.of(TouchDetectionType.SHOW_FOR_TOUCH))); + + Label hideForTouch = new Label("hideForTouch", Model.of("You are not on a touch-enabled device.")); + touchDetection.add(hideForTouch); + hideForTouch.add(new FoundationTouchDetectionBehavior(Model.of(TouchDetectionType.HIDE_FOR_TOUCH))); + + // accessibility - hidden by screen size + + FoundationPanelBorder hiddenFor = new FoundationPanelBorder("hiddenFor", Model.of(PanelType.NORMAL)); + add(hiddenFor); + + Label hiddenForSmallOnly = new Label("hiddenForSmallOnly", Model.of("You are not on a small screen.")); + hiddenFor.add(hiddenForSmallOnly); + hiddenForSmallOnly.add(new FoundationHiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_SMALL_ONLY))); + + Label hiddenForMediumUp = new Label("hiddenForMediumUp", Model.of("You are not on a medium, large, xlarge, or xxlarge screen.")); + hiddenFor.add(hiddenForMediumUp); + hiddenForMediumUp.add(new FoundationHiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_MEDIUM_UP))); + + Label hiddenForMediumOnly = new Label("hiddenForMediumOnly", Model.of("You are not on a medium screen.")); + hiddenFor.add(hiddenForMediumOnly); + hiddenForMediumOnly.add(new FoundationHiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_MEDIUM_ONLY))); + + Label hiddenForLargeUp = new Label("hiddenForLargeUp", Model.of("You are not on a large, xlarge, or xxlarge screen.")); + hiddenFor.add(hiddenForLargeUp); + hiddenForLargeUp.add(new FoundationHiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_LARGE_UP))); + + Label hiddenForLargeOnly = new Label("hiddenForLargeOnly", Model.of("You are not on a large screen.")); + hiddenFor.add(hiddenForLargeOnly); + hiddenForLargeOnly.add(new FoundationHiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_LARGE_ONLY))); + + Label hiddenForXlargeUp = new Label("hiddenForXlargeUp", Model.of("You are not on an xlarge screen and up.")); + hiddenFor.add(hiddenForXlargeUp); + hiddenForXlargeUp.add(new FoundationHiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_XLARGE_UP))); + + Label hiddenForXlargeOnly = new Label("hiddenForXlargeOnly", Model.of("You are not on an xlarge screen.")); + hiddenFor.add(hiddenForXlargeOnly); + hiddenForXlargeOnly.add(new FoundationHiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_XLARGE_ONLY))); + + Label hiddenForXxlargeUp = new Label("hiddenForXxlargeUp", Model.of("You are not on an xxlarge screen.")); + hiddenFor.add(hiddenForXxlargeUp); + hiddenForXxlargeUp.add(new FoundationHiddenByScreenSizeBehavior(Model.of(HiddenByScreenSizeType.HIDDEN_FOR_XXLARGE_UP))); + + // accessibility - visible by screen size + + FoundationPanelBorder visibleFor = new FoundationPanelBorder("visibleFor", Model.of(PanelType.NORMAL)); + add(visibleFor); + + Label visibleForSmallOnly = new Label("visibleForSmallOnly", Model.of("This text is visible only on a small screen.")); + visibleFor.add(visibleForSmallOnly); + visibleForSmallOnly.add(new FoundationVisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_SMALL_ONLY))); + + Label visibleForMediumUp = new Label("visibleForMediumUp", Model.of("This text is visible on medium screens and up.")); + visibleFor.add(visibleForMediumUp); + visibleForMediumUp.add(new FoundationVisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_MEDIUM_UP))); + + Label visibleForMediumOnly = new Label("visibleForMediumOnly", Model.of("This text is visible only on a medium screen.")); + visibleFor.add(visibleForMediumOnly); + visibleForMediumOnly.add(new FoundationVisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_MEDIUM_ONLY))); + + Label visibleForLargeUp = new Label("visibleForLargeUp", Model.of("This text is visible on large screens and up.")); + visibleFor.add(visibleForLargeUp); + visibleForLargeUp.add(new FoundationVisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_LARGE_UP))); + + Label visibleForLargeOnly = new Label("visibleForLargeOnly", Model.of("This text is visible only on a large screen.")); + visibleFor.add(visibleForLargeOnly); + visibleForLargeOnly.add(new FoundationVisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_LARGE_ONLY))); + + Label visibleForXlargeUp = new Label("visibleForXlargeUp", Model.of("This text is visible on xlarge screens and up.")); + visibleFor.add(visibleForXlargeUp); + visibleForXlargeUp.add(new FoundationVisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_XLARGE_UP))); + + Label visibleForXlargeOnly = new Label("visibleForXlargeOnly", Model.of("This text is visible only on an xlarge screen.")); + visibleFor.add(visibleForXlargeOnly); + visibleForXlargeOnly.add(new FoundationVisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_XLARGE_ONLY))); + + Label visibleForXxlargeUp = new Label("visibleForXxlargeUp", Model.of("This text is visible on xxlarge screens and up.")); + visibleFor.add(visibleForXxlargeUp); + visibleForXxlargeUp.add(new FoundationVisibleForScreenSizeBehavior(Model.of(VisibleForScreenSizeType.VISIBLE_FOR_XXLARGE_UP))); + + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/WicketApplication.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/WicketApplication.java new file mode 100644 index 0000000000..0ac87ff2b8 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/WicketApplication.java @@ -0,0 +1,32 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.protocol.http.WebApplication; + +/** + * Application object for your web application. + * If you want to run this application without deploying, run the Start class. + * + * @see org.wicketstuff.foundation.Start#main(String[]) + */ +public class WicketApplication extends WebApplication +{ + /** + * @see org.apache.wicket.Application#getHomePage() + */ + @Override + public Class getHomePage() + { + return CatalogPage.class; + } + + /** + * @see org.apache.wicket.Application#init() + */ + @Override + public void init() + { + super.init(); + this.getMarkupSettings().setStripWicketTags(true); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/andromeda-orbit.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/andromeda-orbit.jpg new file mode 100644 index 0000000000..7550080e4b Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/andromeda-orbit.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/comet-th.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/comet-th.jpg new file mode 100644 index 0000000000..4f1b0d8fdb Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/comet-th.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/earth-th.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/earth-th.jpg new file mode 100644 index 0000000000..d0d0435500 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/earth-th.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-bookmark.svg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-bookmark.svg new file mode 100644 index 0000000000..d2ca515756 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-bookmark.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-home.svg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-home.svg new file mode 100644 index 0000000000..94b0b9b9a6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-home.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-info.svg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-info.svg new file mode 100644 index 0000000000..94ad4069de --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-info.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-like.svg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-like.svg new file mode 100644 index 0000000000..5639e629c7 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-like.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-mail.svg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-mail.svg new file mode 100644 index 0000000000..da03bd7cbf --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/fi-mail.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/launch-orbit.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/launch-orbit.jpg new file mode 100644 index 0000000000..f4cadb16f7 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/launch-orbit.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/launch-th.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/launch-th.jpg new file mode 100644 index 0000000000..90013336b0 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/launch-th.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/satelite-orbit.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/satelite-orbit.jpg new file mode 100644 index 0000000000..6d59829d46 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/satelite-orbit.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/satelite-th.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/satelite-th.jpg new file mode 100644 index 0000000000..332851cabf Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/satelite-th.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/satelite.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/satelite.jpg new file mode 100644 index 0000000000..eacd813e70 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/satelite.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/space-th-sm.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/space-th-sm.jpg new file mode 100644 index 0000000000..7dfcea9f4e Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/space-th-sm.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/space-th.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/space-th.jpg new file mode 100644 index 0000000000..315d026569 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/space-th.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/space.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/space.jpg new file mode 100644 index 0000000000..6ac8a97437 Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/space.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/spacewalk-th.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/spacewalk-th.jpg new file mode 100644 index 0000000000..6764f2a84a Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/spacewalk-th.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/spacewalk.jpg b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/spacewalk.jpg new file mode 100644 index 0000000000..d2ad2af7ae Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/spacewalk.jpg differ diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/styles.css b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/styles.css new file mode 100644 index 0000000000..ec16cb24f4 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/java/org/wicketstuff/foundation/styles.css @@ -0,0 +1,45 @@ +pre code { + display: block; + padding: 0.5em; + background: #FAFAFA; + color: #333; +} + +pre .tag, pre .tag .title, pre .rules .property, pre .django .tag .keyword { + color: #000080; + font-weight: normal; +} + +pre .attribute, pre .variable, pre .lisp .body { + color: #008080; +} + +pre .string, pre .tag .value, pre .phpdoc, pre .tex .formula { + color: #d14; +} + +.row { + max-width: 80rem; +} + +.row.display { + background: #eee; + font-size: 11px; + margin-bottom: 10px; + line-height: 2rem; + border: solid 1px #c6c6c6; + margin-left: 0 !important; + margin-right: 0 !important; +} + +.row.display .columns:nth-child(2),.row.display .columns.small-centered,.row.display .columns.large-centered { + background: #e1e1e1; +} + +.verticalPadding30 { + padding-bottom: 30px; +} + +.verticalPadding50 { + padding-bottom: 50px; +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/resources/log4j.properties b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/resources/log4j.properties new file mode 100644 index 0000000000..05cd58a3bb --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/resources/log4j.properties @@ -0,0 +1,12 @@ +log4j.appender.Stdout=org.apache.log4j.ConsoleAppender +log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n + +log4j.rootLogger=INFO,Stdout + +log4j.logger.org.apache.wicket=INFO +log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO +log4j.logger.org.apache.wicket.version=INFO +log4j.logger.org.apache.wicket.RequestCycle=INFO + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/webapp/WEB-INF/web.xml b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..a5e8eca39c --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,32 @@ + + + + foundation-samples + + + + + wicket.foundation-samples + org.apache.wicket.protocol.http.WicketFilter + + applicationClassName + org.wicketstuff.foundation.WicketApplication + + + + + wicket.foundation-samples + /* + + diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/AbstractPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/AbstractPageTest.java new file mode 100644 index 0000000000..4a6e0e341b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/AbstractPageTest.java @@ -0,0 +1,17 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Before; +import org.wicketstuff.foundation.WicketApplication; + +public class AbstractPageTest { + + protected WicketTester tester; + + @Before + public void setUp() + { + tester = new WicketTester(new WicketApplication()); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/AlertsPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/AlertsPageTest.java new file mode 100644 index 0000000000..385cd25df8 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/AlertsPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.AlertsPage; + +public class AlertsPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(AlertsPage.class); + tester.assertRenderedPage(AlertsPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/BlockGridPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/BlockGridPageTest.java new file mode 100644 index 0000000000..31b65dfc59 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/BlockGridPageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.BlockGridPage; + +public class BlockGridPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(BlockGridPage.class); + tester.assertRenderedPage(BlockGridPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/BreadcrumbsPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/BreadcrumbsPageTest.java new file mode 100644 index 0000000000..730b4fc109 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/BreadcrumbsPageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.BreadcrumbsPage; + +public class BreadcrumbsPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(BreadcrumbsPage.class); + tester.assertRenderedPage(BreadcrumbsPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ButtonGroupPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ButtonGroupPageTest.java new file mode 100644 index 0000000000..2b7882c73e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ButtonGroupPageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.ButtonGroupPage; + +public class ButtonGroupPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(ButtonGroupPage.class); + tester.assertRenderedPage(ButtonGroupPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ButtonsPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ButtonsPageTest.java new file mode 100644 index 0000000000..7d91a6e4b6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ButtonsPageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.ButtonsPage; + +public class ButtonsPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(ButtonsPage.class); + tester.assertRenderedPage(ButtonsPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/CatalogPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/CatalogPageTest.java new file mode 100644 index 0000000000..213b272a42 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/CatalogPageTest.java @@ -0,0 +1,16 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.CatalogPage; + +public class CatalogPageTest extends AbstractPageTest +{ + + @Test + public void homepageRendersSuccessfully() + { + tester.startPage(CatalogPage.class); + tester.assertRenderedPage(CatalogPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/DropdownButtonPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/DropdownButtonPageTest.java new file mode 100644 index 0000000000..df44492f93 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/DropdownButtonPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.DropdownButtonsPage; + +public class DropdownButtonPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(DropdownButtonsPage.class); + tester.assertRenderedPage(DropdownButtonsPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/DropdownsPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/DropdownsPageTest.java new file mode 100644 index 0000000000..1ec29ad64e --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/DropdownsPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.DropdownsPage; + +public class DropdownsPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(DropdownsPage.class); + tester.assertRenderedPage(DropdownsPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/FoundationIconsPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/FoundationIconsPageTest.java new file mode 100644 index 0000000000..2244cae328 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/FoundationIconsPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.FoundationIconsPage; + +public class FoundationIconsPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(FoundationIconsPage.class); + tester.assertRenderedPage(FoundationIconsPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/GridPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/GridPageTest.java new file mode 100644 index 0000000000..d1a0e1f475 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/GridPageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.GridPage; + +public class GridPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(GridPage.class); + tester.assertRenderedPage(GridPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/IndexPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/IndexPageTest.java new file mode 100644 index 0000000000..a8a8b967f6 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/IndexPageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.IndexPage; + +public class IndexPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(IndexPage.class); + tester.assertRenderedPage(IndexPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/InlineListsPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/InlineListsPageTest.java new file mode 100644 index 0000000000..6b4b157dcb --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/InlineListsPageTest.java @@ -0,0 +1,16 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; +import org.wicketstuff.foundation.InlineListsPage; + +public class InlineListsPageTest { + + @Test + public void render(){ + WicketTester tester = new WicketTester(); + tester.startPage(InlineListsPage.class); + tester.assertRenderedPage(InlineListsPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/OrbitSliderPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/OrbitSliderPageTest.java new file mode 100644 index 0000000000..e04cad9300 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/OrbitSliderPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.OrbitSliderPage; + +public class OrbitSliderPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(OrbitSliderPage.class); + tester.assertRenderedPage(OrbitSliderPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/PanelsPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/PanelsPageTest.java new file mode 100644 index 0000000000..a5a5dc9ea2 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/PanelsPageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.PanelsPage; + +public class PanelsPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(PanelsPage.class); + tester.assertRenderedPage(PanelsPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/PricingTablePageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/PricingTablePageTest.java new file mode 100644 index 0000000000..967b1fb3e8 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/PricingTablePageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.PricingTablePage; + +public class PricingTablePageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(PricingTablePage.class); + tester.assertRenderedPage(PricingTablePage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ProgressBarPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ProgressBarPageTest.java new file mode 100644 index 0000000000..42d6c36b90 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ProgressBarPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.ProgressBarPage; + +public class ProgressBarPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(ProgressBarPage.class); + tester.assertRenderedPage(ProgressBarPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/RevealModalPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/RevealModalPageTest.java new file mode 100644 index 0000000000..fd836a78da --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/RevealModalPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.RevealModalPage; + +public class RevealModalPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(RevealModalPage.class); + tester.assertRenderedPage(RevealModalPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/SideNavPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/SideNavPageTest.java new file mode 100644 index 0000000000..cba770098d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/SideNavPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.SideNavPage; + +public class SideNavPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(SideNavPage.class); + tester.assertRenderedPage(SideNavPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/Start.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/Start.java new file mode 100644 index 0000000000..7fd1fdc682 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/Start.java @@ -0,0 +1,76 @@ +package org.wicketstuff.foundation; + +import org.apache.wicket.util.time.Duration; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.bio.SocketConnector; +import org.eclipse.jetty.server.ssl.SslSocketConnector; +import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.jetty.util.ssl.SslContextFactory; +import org.eclipse.jetty.webapp.WebAppContext; + +public class Start { + public static void main(String[] args) throws Exception { + int timeout = (int) Duration.ONE_HOUR.getMilliseconds(); + + Server server = new Server(); + SocketConnector connector = new SocketConnector(); + + // Set some timeout options to make debugging easier. + connector.setMaxIdleTime(timeout); + connector.setSoLingerTime(-1); + connector.setPort(8080); + server.addConnector(connector); + + Resource keystore = Resource.newClassPathResource("/keystore"); + if (keystore != null && keystore.exists()) { + // if a keystore for a SSL certificate is available, start a SSL + // connector on port 8443. + // By default, the quickstart comes with a Apache Wicket Quickstart + // Certificate that expires about half way september 2021. Do not + // use this certificate anywhere important as the passwords are + // available in the source. + + connector.setConfidentialPort(8443); + + SslContextFactory factory = new SslContextFactory(); + factory.setKeyStoreResource(keystore); + factory.setKeyStorePassword("wicket"); + factory.setTrustStoreResource(keystore); + factory.setKeyManagerPassword("wicket"); + SslSocketConnector sslConnector = new SslSocketConnector(factory); + sslConnector.setMaxIdleTime(timeout); + sslConnector.setPort(8443); + sslConnector.setAcceptors(4); + server.addConnector(sslConnector); + + System.out.println("SSL access to the quickstart has been enabled on port 8443"); + System.out.println("You can access the application using SSL on https://localhost:8443"); + System.out.println(); + } + + WebAppContext bb = new WebAppContext(); + bb.setServer(server); + bb.setContextPath("/"); + bb.setWar("src/main/webapp"); + + // START JMX SERVER + // MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); + // MBeanContainer mBeanContainer = new MBeanContainer(mBeanServer); + // server.getContainer().addEventListener(mBeanContainer); + // mBeanContainer.start(); + + server.setHandler(bb); + + try { + System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP"); + server.start(); + System.in.read(); + System.out.println(">>> STOPPING EMBEDDED JETTY SERVER"); + server.stop(); + server.join(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/SubNavPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/SubNavPageTest.java new file mode 100644 index 0000000000..48fa3ac5d9 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/SubNavPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.SubNavPage; + +public class SubNavPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(SubNavPage.class); + tester.assertRenderedPage(SubNavPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ThumbnailsPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ThumbnailsPageTest.java new file mode 100644 index 0000000000..3a75f56ea9 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/ThumbnailsPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.ThumbnailsPage; + +public class ThumbnailsPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(ThumbnailsPage.class); + tester.assertRenderedPage(ThumbnailsPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/TooltipsPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/TooltipsPageTest.java new file mode 100644 index 0000000000..f3d76fbb66 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/TooltipsPageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.TooltipsPage; + +public class TooltipsPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(TooltipsPage.class); + tester.assertRenderedPage(TooltipsPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/TopBarPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/TopBarPageTest.java new file mode 100644 index 0000000000..8688a3fd65 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/TopBarPageTest.java @@ -0,0 +1,13 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.TopBarPage; + +public class TopBarPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(TopBarPage.class); + tester.assertRenderedPage(TopBarPage.class); + } +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/TypePageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/TypePageTest.java new file mode 100644 index 0000000000..250c24135b --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/TypePageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.TypePage; + +public class TypePageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(TypePage.class); + tester.assertRenderedPage(TypePage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/VisibilityPageTest.java b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/VisibilityPageTest.java new file mode 100644 index 0000000000..3ada148403 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/java/org/wicketstuff/foundation/VisibilityPageTest.java @@ -0,0 +1,14 @@ +package org.wicketstuff.foundation; + +import org.junit.Test; +import org.wicketstuff.foundation.VisibilityPage; + +public class VisibilityPageTest extends AbstractPageTest { + + @Test + public void test() { + tester.startPage(VisibilityPage.class); + tester.assertRenderedPage(VisibilityPage.class); + } + +} diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty-http.xml b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty-http.xml new file mode 100644 index 0000000000..9f3256b15c --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty-http.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty-https.xml b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty-https.xml new file mode 100644 index 0000000000..58f7d53d2d --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty-https.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + http/1.1 + + + + + + + + + + + + + 30000 + + + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty-ssl.xml b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty-ssl.xml new file mode 100644 index 0000000000..49e558bb47 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty-ssl.xml @@ -0,0 +1,36 @@ + + + + + + + + + / + + + + + + SSL_RSA_WITH_DES_CBC_SHA + SSL_DHE_RSA_WITH_DES_CBC_SHA + SSL_DHE_DSS_WITH_DES_CBC_SHA + SSL_RSA_EXPORT_WITH_RC4_40_MD5 + SSL_RSA_EXPORT_WITH_DES40_CBC_SHA + SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA + SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty.xml b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty.xml new file mode 100644 index 0000000000..1a6293b405 --- /dev/null +++ b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/jetty/jetty.xml @@ -0,0 +1,23 @@ + + + + + + + + https + + + + 32768 + 8192 + 8192 + true + false + 512 + + + + + + \ No newline at end of file diff --git a/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/resources/keystore b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/resources/keystore new file mode 100644 index 0000000000..30bbc90ccf Binary files /dev/null and b/jdk-1.7-parent/wicket-foundation/wicket-foundation-samples/src/test/resources/keystore differ