diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..04ab9a8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/web/dist +/web/tmp + +# dependencies +/web/node_modules +/web/bower_components + +# misc +/web/.sass-cache +/web/connect.lock +/web/coverage/* +/web/libpeerconnection.log +/web/npm-debug.log +/web/testem.log + +.* +!.editorconfig +!.ember-cli +!.jshintrc +!.travis.yml +!.watchmanconfig +!.gitignore +!.gitkeep +*.iml diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 0000000..1620a16 --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,7 @@ +.* +!.gitignore +!.gitosc +!.gitkeep +*.iml +target/ +bin/ diff --git a/server/.gitosc/ISSUE_TEMPLATE.en.md b/server/.gitosc/ISSUE_TEMPLATE.en.md new file mode 100644 index 0000000..42d7134 --- /dev/null +++ b/server/.gitosc/ISSUE_TEMPLATE.en.md @@ -0,0 +1,14 @@ +## What was the cause of the issue? + + + +## Steps to reproduce + + + +## Error information + + + + + diff --git a/server/.gitosc/PULL_REQUEST_TEMPLATE.en.md b/server/.gitosc/PULL_REQUEST_TEMPLATE.en.md new file mode 100644 index 0000000..e66a974 --- /dev/null +++ b/server/.gitosc/PULL_REQUEST_TEMPLATE.en.md @@ -0,0 +1,17 @@ +## Which issue is associated with the pull request? + + + +## Describe modification + + + +## Test case + + + +## Screenshots + + + + diff --git a/server/README.md b/server/README.md new file mode 100644 index 0000000..f9b99f3 --- /dev/null +++ b/server/README.md @@ -0,0 +1 @@ +#flaginfo-web-parent diff --git a/server/crm/README.md b/server/crm/README.md new file mode 100644 index 0000000..7ac333e --- /dev/null +++ b/server/crm/README.md @@ -0,0 +1 @@ +# Ambition Admin API diff --git a/server/crm/deploy b/server/crm/deploy new file mode 100755 index 0000000..f9e05e4 --- /dev/null +++ b/server/crm/deploy @@ -0,0 +1,32 @@ +#!/bin/bash + +# get real path of softlink +get_real_path() { + local f="$1" + while [ -h "$f" ]; do + ls=`ls -ld "$f"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + f="$link" + else + f=`dirname "$f"`/"$link" + fi + done + eval "$2"="'$f'" +} + +get_real_path "$0" prg_path +echo "Script Path [$prg_path]" +PROJECT_HOME=$(dirname $prg_path) +echo "Project Home [$PROJECT_HOME]" +cd "$PROJECT_HOME" +mvn clean package -Pprod -DskipTests + +sleep 3 +SERVICE_HOME=/data/program/ambition/admin-api +echo "Service Home [$SERVICE_HOME]" + +$SERVICE_HOME/bin/stop.sh +mv $SERVICE_HOME/lib/main.jar $SERVICE_HOME/main_prev.jar +mv $PROJECT_HOME/target/admin-api.jar $SERVICE_HOME/lib/main.jar +$SERVICE_HOME/bin/start.sh diff --git a/server/crm/pom.xml b/server/crm/pom.xml new file mode 100644 index 0000000..1255b97 --- /dev/null +++ b/server/crm/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + crm + Ambition CRM + jar + + + com.pudonghot.ambition + web-parent + 0.0.1-SNAPSHOT + ../web-parent + + + + admin-api + com.pudonghot.ambition.admin.AmbitionAdminCloud + + + + + com.pudonghot.ambition + util + + + com.pudonghot.ambition + mapper + + + com.pudonghot.ambition + file-disk + + + me.chyxion.tigon + tigon-service-support + + + me.chyxion.tigon + tigon-shiro-spring-boot + + + commons-io + commons-io + + + + org.springframework + spring-test + test + + + org.springframework.boot + spring-boot-test + test + + + junit + junit + test + + + + + + dev + + true + + + + prod + + + diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/AmbitionAdminCloud.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/AmbitionAdminCloud.java new file mode 100644 index 0000000..233026a --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/AmbitionAdminCloud.java @@ -0,0 +1,26 @@ +package com.pudonghot.ambition.admin; + +import org.springframework.boot.SpringApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 05, 2017 14:40:30 + */ +@EnableAutoConfiguration(exclude = { + RedisAutoConfiguration.class, + DataSourceAutoConfiguration.class}) +@ComponentScan("com.pudonghot.ambition.admin") +public class AmbitionAdminCloud { + + /** + * @param args start args + */ + public static void main(String[] args) { + SpringApplication.run(AmbitionAdminCloud.class, args); + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/auth/AuthCallbackSupport.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/auth/AuthCallbackSupport.java new file mode 100644 index 0000000..cb906dc --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/auth/AuthCallbackSupport.java @@ -0,0 +1,107 @@ +package com.pudonghot.ambition.admin.auth; + +import lombok.extern.slf4j.Slf4j; +import com.pudonghot.ambition.model.Admin; +import me.chyxion.tigon.model.ViewModel; +import org.apache.shiro.session.Session; +import org.apache.shiro.subject.Subject; +import me.chyxion.tigon.shiro.model.AuthUser; +import javax.servlet.http.HttpServletRequest; +import me.chyxion.tigon.shiro.AuthCallback; +import org.springframework.stereotype.Service; +import me.chyxion.tigon.shiro.model.AuthInfo; +import org.apache.shiro.web.subject.WebSubject; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.AuthenticationException; +import com.pudonghot.ambition.admin.service.AdminLoginLogService; +import com.pudonghot.ambition.util.HttpServletRequestUtils; +import org.springframework.beans.factory.annotation.Autowired; +import com.pudonghot.ambition.admin.service.AdminAuthFailedLogService; +import com.pudonghot.ambition.form.create.AdminLoginLogFormForCreate; +import com.pudonghot.ambition.form.create.AdminAuthFailedLogFormForCreate; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Apr 7, 2015 4:24:08 PM + */ +@Slf4j +@Service +public class AuthCallbackSupport implements AuthCallback { + @Autowired + private AdminLoginLogService authLogService; + @Autowired + private AdminAuthFailedLogService authLogFailedService; + + /** + * {@inheritDoc} + */ + @Override + public void onSuccessfulLogin(AuthenticationToken token, + AuthenticationInfo info, Subject subject) { + + WebSubject ws = (WebSubject) subject; + Session session = ws.getSession(false); + HttpServletRequest request = (HttpServletRequest) ws.getServletRequest(); + + AuthUser> authUser = new AuthUser>(); + String ip = HttpServletRequestUtils.getClientIP(request); + authUser.setAttr("ip", ip); + String userAgent = request.getHeader("User-Agent"); + authUser.setAttr("userAgent", userAgent); + ViewModel user = (ViewModel) ((AuthInfo) info).getExtra(); + final String userId = user.getData().getId(); + authUser.setUserId(userId); + authUser.setUser(user); + log.info("Save Auth User [{}] To Session [{}].", user, session.getId()); + authUser.save(session); + + AdminLoginLogFormForCreate alForm = new AdminLoginLogFormForCreate(); + alForm.setAdminId(userId); + alForm.setIp(ip); + alForm.setUserAgent(userAgent); + alForm.setCreatedBy(userId); + authLogService.create(alForm); + // HttpServletResponse response = (HttpServletResponse) ws.getServletResponse(); + log.info("User [{}] Logined.", userId); + + } + + /** + * {@inheritDoc} + */ + @Override + public void onFailedLogin(AuthenticationToken token, + AuthenticationException ae, Subject subject) { + String loginId = (String) token.getPrincipal(); + String password = new String((char[]) token.getCredentials()); + log.info("Login Id [{}] Password [{}] Login Failed.", loginId, password); + + WebSubject ws = (WebSubject) subject; + HttpServletRequest request = (HttpServletRequest) ws.getServletRequest(); + AdminAuthFailedLogFormForCreate form = new AdminAuthFailedLogFormForCreate(); + form.setLoginId(loginId); + form.setPassword(password); + form.setIp(HttpServletRequestUtils.getClientIP(request)); + form.setUserAgent(request.getHeader("User-Agent")); + authLogFailedService.create(form); + } + + /** + * {@inheritDoc} + */ + @Override + public void beforeLogout(Subject subject) { + final WebSubject ws = (WebSubject) subject; + final Session session = ws.getSession(false); + if (session != null) { + log.warn("Session [{}] Logout.", session); + } + else { + log.warn("No Session Found In Subject [{}], Ignore.", subject); + } + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/auth/AuthRealmSupport.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/auth/AuthRealmSupport.java new file mode 100644 index 0000000..be950c7 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/auth/AuthRealmSupport.java @@ -0,0 +1,53 @@ +package com.pudonghot.ambition.admin.auth; + +import me.chyxion.tigon.model.ViewModel; +import me.chyxion.tigon.shiro.AuthRealm; +import com.pudonghot.ambition.model.Admin; +import org.springframework.stereotype.Service; +import me.chyxion.tigon.shiro.model.Credential; +import com.pudonghot.ambition.admin.service.AdminService; +import org.apache.shiro.authc.LockedAccountException; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Apr 7, 2015 4:14:20 PM + */ +@Service +public class AuthRealmSupport extends AuthRealm { + + @Autowired + private AdminService userService; + + /** + * {@inheritDoc} + */ + @Override + public Credential credential(Object principal) { + Credential credential = null; + final ViewModel adminViewModel = userService.loginFind((String) principal); + if (adminViewModel != null) { + Admin admin = adminViewModel.getData(); + if (!admin.isEnabled()) { + throw new LockedAccountException("账户已禁用,请联系管理员"); + } + credential = new Credential( + admin.getPassword(), + admin.getId()).setExtra(adminViewModel); + } + return credential; + } + + /** + * {@inheritDoc} + */ + @Override + public boolean credentialMatch(Object password, Credential credential) { + return userService.validatePassword( + ((ViewModel) credential.getExtra()).getData().getId(), + new String((char[])password)); + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/AbstractBaseController.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/AbstractBaseController.java new file mode 100644 index 0000000..c6ba328 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/AbstractBaseController.java @@ -0,0 +1,175 @@ +package com.pudonghot.ambition.admin.controller; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URLDecoder; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import java.io.UnsupportedEncodingException; +import org.apache.commons.lang3.CharEncoding; +import javax.servlet.http.HttpServletRequest; +import com.pudonghot.ambition.common.Constants; +import org.springframework.web.multipart.MultipartFile; +import me.chyxion.tigon.exception.InvalidParamException; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Jun 30, 2016 3:28:06 PM + */ +@Slf4j +@Validated +public abstract class AbstractBaseController { + + /** + * build sql like value + * @param value + * @return + */ + protected String like(String value) { + return "%" + value + "%"; + } + + /** + * decode param and build sql like value + * @param value + * @return + */ + protected String decodeLike(String value) { + return like(decodeParam(value)); + } + + /** + * @param request + * @param name + * @return + */ + protected InputStream getInputStream(HttpServletRequest request, String name) { + return getInputStream(getMultipartFile(request, name)); + } + + /** + * @param name + * @return + */ + protected byte[] getBytes(HttpServletRequest request, String name) { + return getBytes(getInputStream(request, name)); + } + + /** + * @param file + * @return + */ + protected byte[] getBytes(MultipartFile file) { + return getBytes(getInputStream(file)); + } + + /** + * @param ins + * @return + */ + protected byte[] getBytes(InputStream ins) { + try { + return ins != null ? IOUtils.toByteArray(ins) : null; + } + catch (IOException e) { + throw new IllegalStateException( + "Read Stream Bytes Error Caused", e); + } + } + + /** + * @param request + * @param name + * @return + */ + protected MultipartFile getMultipartFile(HttpServletRequest request, String name) { + MultipartFile file = null; + if (request instanceof MultipartHttpServletRequest) { + file = ((MultipartHttpServletRequest) request).getFile(name); + } + return file; + } + + /** + * @param file + * @return + */ + protected InputStream getInputStream(MultipartFile file) { + try { + return file == null || file.isEmpty() ? + null : file.getInputStream(); + } + catch (IOException e) { + throw new IllegalStateException( + "Read Multipart File Stream Error Caused", e); + } + } + + /** + * @param param + * @return + */ + protected String decodeParam(String param) { + if (StringUtils.isNotBlank(param)) { + try { + log.debug("Decode Param [{}].", param); + param = URLDecoder.decode(param, CharEncoding.UTF_8); + log.debug("Decode Param Result [{}].", param); + } + catch (UnsupportedEncodingException e) { + throw new IllegalStateException( + "Decode [" + param + "] Error Caused", e); + } + } + return param; + } + + /** + * @param values + * @return + */ + protected String getNotBlankValue(String ... values) { + for (String value : values) { + if (StringUtils.isNotBlank(value)) { + return value; + } + } + return null; + } + + /** + * @param os + * @param deviceType + * @return + */ + protected String getPlatformByOsAndDeviceType(String os, String deviceType) { + String platform = null; + if (Constants.PHONE.equalsIgnoreCase(deviceType) && + Constants.Android.equalsIgnoreCase(os)) { + platform = Constants.AndroidPhone; + } + else if (Constants.PHONE.equalsIgnoreCase(deviceType) && + Constants.iOS.equalsIgnoreCase(os)) { + platform = Constants.iPhone; + } + else if (Constants.PAD.equalsIgnoreCase(deviceType) && + Constants.Android.equalsIgnoreCase(os)) { + platform = Constants.AndroidPad; + } + else if (Constants.PAD.equalsIgnoreCase(deviceType) && + Constants.iOS.equalsIgnoreCase(os)) { + platform = Constants.iPad; + } + else { + throw new InvalidParamException( + "Unknown Request Device Type [{}] OS [{}]", deviceType, os) ; + } + return platform; + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/AdminController.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/AdminController.java new file mode 100644 index 0000000..d3f382c --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/AdminController.java @@ -0,0 +1,92 @@ +package com.pudonghot.ambition.admin.controller; + +import java.io.InputStream; +import javax.validation.Valid; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import me.chyxion.tigon.model.ViewModel; +import me.chyxion.tigon.model.ListResult; +import com.pudonghot.ambition.model.Admin; +import javax.servlet.http.HttpServletRequest; +import org.springframework.stereotype.Controller; +import org.springframework.web.multipart.MultipartFile; +import com.pudonghot.ambition.admin.service.AdminService; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestMethod; +import com.pudonghot.ambition.form.create.AdminFormForCreate; +import com.pudonghot.ambition.form.update.AdminFormForUpdate; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 09, 2017 21:54:00 + */ +@Controller +@RequestMapping("/admin") +public class AdminController + extends BaseQueryController { + + @RequestMapping("/list") + public ListResult> list( + @Min(0) + @RequestParam(value = "start", defaultValue = "0") + int start, + @Min(1) + @Max(512) + @RequestParam(value = "limit", defaultValue = "16") + int limit, + @RequestParam(value = "search", required = false) + String search) { + return listViewModels(start, limit, search); + } + + @RequestMapping(value = "/create", method = RequestMethod.POST) + public ViewModel create( + @Valid AdminFormForCreate form, + HttpServletRequest request) { + return ((AdminService) queryService) + .create(form, getAvatar(request)); + } + + @RequestMapping(value = "/update", method = RequestMethod.POST) + public ViewModel update( + @Valid AdminFormForUpdate form, + HttpServletRequest request) { + return ((AdminService) queryService) + .update(form, getAvatar(request)); + } + + @RequestMapping(value = "/profile") + public ViewModel profile() { + return queryService.findViewModel(getUserId()); + } + + @RequestMapping(value = "/upload-avatar") + public ViewModel uploadAvatar( + @RequestParam("avatar") MultipartFile avatar) { + return ((AdminService) queryService).update( + getUserId(), getInputStream(avatar)); + } + + @RequestMapping(value = "/update-password") + public ViewModel uploadPassword(@RequestParam("password") String password) { + return ((AdminService) queryService).updatePassword(getUserId(), password); + } + + /** + * {@inheritDoc} + */ + @Override + protected String[] searchCols() { + return new String[] {Admin.NAME, + Admin.LOGIN_ID, + Admin.MOBILE, + Admin.EMAIL, + Admin.NOTE}; + } + + private InputStream getAvatar(HttpServletRequest request) { + return getInputStream(request, "avatar"); + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/AuthController.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/AuthController.java new file mode 100644 index 0000000..87a2c40 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/AuthController.java @@ -0,0 +1,54 @@ +package com.pudonghot.ambition.admin.controller; + +import me.chyxion.tigon.model.ViewModel; +import com.pudonghot.ambition.model.Admin; +import org.springframework.stereotype.Controller; +import me.chyxion.tigon.shiro.service.AuthService; +import org.hibernate.validator.constraints.NotBlank; +import com.pudonghot.ambition.admin.service.AdminService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 09, 2017 22:31:58 + */ +@Validated +@Controller +public class AuthController { + @Autowired + private AdminService adminService; + @Autowired + private AuthService authService; + + @RequestMapping(value = "/auth/login", method = RequestMethod.POST) + public ViewModel login( + @NotBlank(message = "Param 'loginId' Could Not Be Blank") + @RequestParam("loginId") + String loginId, + @NotBlank(message = "Param 'password' Could Not Be Blank") + @RequestParam("password") + String password, + @RequestParam(value = "rememberMe", defaultValue = "false") + boolean rememberMe) { + return adminService.findViewModel((String) authService.login( + loginId, password, rememberMe).getUserId()); + } + + /** + * logout + */ + @RequestMapping(value = "/auth/logout", method = RequestMethod.POST) + public void logout() { + authService.logout(); + } + + @RequestMapping("/auth/info") + public ViewModel info() { + return adminService.findViewModel((String) authService.getAuthUser().getUserId()); + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseController.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseController.java new file mode 100644 index 0000000..bd8ca27 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseController.java @@ -0,0 +1,62 @@ +package com.pudonghot.ambition.admin.controller; + +import org.springframework.util.Assert; +import me.chyxion.tigon.model.ViewModel; +import com.pudonghot.ambition.model.Admin; +import org.apache.commons.lang3.StringUtils; +import me.chyxion.tigon.shiro.model.AuthUser; +import me.chyxion.tigon.shiro.service.AuthService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Jun 2, 2016 12:52:10 PM + */ +public class BaseController extends AbstractBaseController { + @Autowired + protected AuthService authService; + + /** + * get auth user id + * @return + */ + protected String getUserId() { + return (String) getAuthUser().getUserId(); + } + + /** + * get auth user + * @return + */ + protected AuthUser> getAuthUser() { + return authService.>getAuthUser(); + } + + /** + * @return + */ + protected ViewModel getUser() { + return getAuthUser().getUser(); + } + + /** + * @param paramValue + * @param xHeaderValue + * @param headerValue + * @param name + * @return + */ + protected String getParamOrHeader( + String paramValue, + String xHeaderValue, + String headerValue, + String name) { + String value = getNotBlankValue(paramValue, xHeaderValue, headerValue); + Assert.state(StringUtils.isNotBlank(value), + "Request Header Or Param [" + name + "] Could Not Be Blank"); + return value; + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseControllerAdvice.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseControllerAdvice.java new file mode 100644 index 0000000..ef9fcc7 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseControllerAdvice.java @@ -0,0 +1,76 @@ +package com.pudonghot.ambition.admin.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.apache.commons.beanutils.BeanUtils; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.WebDataBinder; +import me.chyxion.tigon.shiro.service.AuthService; +import java.lang.reflect.InvocationTargetException; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.bind.annotation.InitBinder; +import com.pudonghot.ambition.form.create.BaseFormForCreate; +import com.pudonghot.ambition.form.update.BaseFormForUpdate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.context.request.ServletWebRequest; +import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 17, 2016 2:49:31 PM + */ +@Order(32) +@ControllerAdvice(annotations = {Controller.class, RestController.class}) +public class BaseControllerAdvice { + private static final Logger log = + LoggerFactory.getLogger(BaseControllerAdvice.class); + @Autowired + private AuthService authService; + private ByteArrayMultipartFileEditor bamfe = + new ByteArrayMultipartFileEditor() { + /** + * {@inheritDoc} + */ + @Override + public void setValue(Object value) { + super.setValue(value instanceof MultipartFile || + value instanceof byte[] ? value : null); + } + }; + + @InitBinder + public void registerCustomEditors(WebDataBinder binder, ServletWebRequest request) + throws IllegalAccessException, InvocationTargetException { + Object target = binder.getTarget(); + String userId = getUserId(); + if (target instanceof BaseFormForCreate) { + log.debug("Base Form [{}] For Create Found, Set Created By [{}].", target, userId); + ((BaseFormForCreate) target).setCreatedBy(userId); + } + else if (target instanceof BaseFormForUpdate) { + log.debug("Base Form [{}] For Update Found, Set Updated By [{}].", target, userId); + ((BaseFormForUpdate) target).setUpdatedBy(userId); + } + else if (target != null) { + log.debug("Set Form [{}] Created/Updated By [{}].", target, userId); + BeanUtils.copyProperty(target, "createdBy", userId); + BeanUtils.copyProperty(target, "updatedBy", userId); + } + // PropertyEditorSupport + binder.registerCustomEditor(byte[].class, bamfe); + } + + // -- + // inner methods + + String getUserId() { + return authService.isAuthenticated() ? + (String) authService.getAuthUser().getUserId() : null; + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseCruController.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseCruController.java new file mode 100644 index 0000000..8dcbb6c --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseCruController.java @@ -0,0 +1,38 @@ +package com.pudonghot.ambition.admin.controller; + +import javax.validation.Valid; +import me.chyxion.tigon.model.BaseModel; +import me.chyxion.tigon.model.ViewModel; +import me.chyxion.tigon.form.BaseFormForUpdateApi; +import me.chyxion.tigon.service.BaseCrudByFormService; +import com.pudonghot.ambition.form.create.BaseFormForCreate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * May 4, 2016 6:09:54 PM + */ +public class BaseCruController< + Model extends BaseModel, + FC extends BaseFormForCreate, + FU extends BaseFormForUpdateApi> + extends BaseQueryController { + + @Autowired + protected BaseCrudByFormService crudService; + + @RequestMapping(value = "/create", method = RequestMethod.POST) + public ViewModel create(@Valid FC form) { + return crudService.create(form); + } + + @RequestMapping(value = "/update", method = RequestMethod.POST) + public ViewModel update(@Valid FU form) { + return crudService.update(form); + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseCrudController.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseCrudController.java new file mode 100644 index 0000000..7a956a7 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseCrudController.java @@ -0,0 +1,32 @@ +package com.pudonghot.ambition.admin.controller; + +import me.chyxion.tigon.model.BaseModel; +import javax.validation.constraints.NotNull; +import me.chyxion.tigon.form.BaseFormForUpdateApi; +import org.springframework.web.bind.annotation.RequestParam; +import com.pudonghot.ambition.form.create.BaseFormForCreate; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * May 4, 2016 6:09:54 PM + */ +public class BaseCrudController< + Model extends BaseModel, + FC extends BaseFormForCreate, + FU extends BaseFormForUpdateApi> + extends BaseCruController { + + @SuppressWarnings("unchecked") + @RequestMapping(value = "/delete", method = RequestMethod.POST) + public void delete( + @NotNull + @RequestParam("id") + String id) { + crudService.delete(id); + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseQueryController.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseQueryController.java new file mode 100644 index 0000000..888e334 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/BaseQueryController.java @@ -0,0 +1,104 @@ +package com.pudonghot.ambition.admin.controller; + +import me.chyxion.tigon.model.M2; +import me.chyxion.tigon.mybatis.Search; +import me.chyxion.tigon.model.BaseModel; +import me.chyxion.tigon.model.ListResult; +import me.chyxion.tigon.model.ViewModel; +import javax.validation.constraints.NotNull; +import org.apache.commons.lang3.StringUtils; +import me.chyxion.tigon.service.BaseQueryService; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 4:50:58 PM + */ +public class BaseQueryController> + extends BaseController { + + @Autowired + protected BaseQueryService queryService; + + + /** + * list view models + * @param start + * @param limit + * @param paramSearch + * @return + */ + protected ListResult> listViewModels( + final int start, + final int limit, + final String paramSearch) { + return listViewModels(search(start, limit), paramSearch); + } + + /** + * list view models + * @param search search + * @return + */ + protected ListResult> listViewModels( + Search search, String paramSearch) { + if (StringUtils.isNotBlank(paramSearch)) { + final Search orSearch = new Search(); + String decodedLikeSearch = decodeLike(paramSearch); + for (String col : searchCols()) { + orSearch.or(new Search().like(col, decodedLikeSearch)); + } + search.and(orSearch); + } + return list(search); + } + + /** + * find model by id + * @param id model id + * @return model + */ + @RequestMapping("/find") + public ViewModel find(@NotNull @RequestParam("id") String id) { + return queryService.findViewModel(id); + } + + /** + * @return models count + */ + @RequestMapping("/count") + public int count() { + return queryService.count(null); + } + + /** + * list view mdoels + * @param search + * @return + */ + protected ListResult> list(Search search) { + return queryService.listViewModelsPage(search); + } + + /** + * return limit offset search + * @param start start + * @param limit limit + * @return search + */ + protected Search search(int start, int limit) { + return new Search().offset(start).limit(limit); + } + + /** + * @return simple search cols + */ + protected String[] searchCols() { + return new String[]{ M2.NOTE }; + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/SiteController.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/SiteController.java new file mode 100644 index 0000000..0b30f54 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/controller/SiteController.java @@ -0,0 +1,23 @@ +package com.pudonghot.ambition.admin.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 10, 2017 23:15:01 + */ +@Controller +public class SiteController { + + @RequestMapping("/") + public void index() { + + } + + @RequestMapping("/int") + public int i() { + return 100; + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/service/AdminAuthFailedLogService.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/AdminAuthFailedLogService.java new file mode 100644 index 0000000..6640943 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/AdminAuthFailedLogService.java @@ -0,0 +1,28 @@ +package com.pudonghot.ambition.admin.service; + +import javax.validation.Valid; +import me.chyxion.tigon.model.ViewModel; +import javax.validation.constraints.NotNull; +import me.chyxion.tigon.service.BaseCrudService; +import com.pudonghot.ambition.model.AdminAuthFailedLog; +import org.springframework.validation.annotation.Validated; +import com.pudonghot.ambition.form.create.AdminAuthFailedLogFormForCreate; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 14, 2016 3:10:38 PM + */ +@Validated +public interface AdminAuthFailedLogService extends BaseCrudService { + + /** + * create auth log + * @param form + * @return + */ + @NotNull + ViewModel create(@Valid AdminAuthFailedLogFormForCreate form); +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/service/AdminLoginLogService.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/AdminLoginLogService.java new file mode 100644 index 0000000..2c72457 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/AdminLoginLogService.java @@ -0,0 +1,28 @@ +package com.pudonghot.ambition.admin.service; + +import javax.validation.Valid; +import me.chyxion.tigon.model.ViewModel; +import javax.validation.constraints.NotNull; +import me.chyxion.tigon.service.BaseCrudService; +import com.pudonghot.ambition.model.AdminLoginLog; +import org.springframework.validation.annotation.Validated; +import com.pudonghot.ambition.form.create.AdminLoginLogFormForCreate; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 14, 2016 3:10:38 PM + */ +@Validated +public interface AdminLoginLogService extends BaseCrudService { + + /** + * create auth log + * @param form + * @return + */ + @NotNull + ViewModel create(@Valid AdminLoginLogFormForCreate form); +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/service/AdminService.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/AdminService.java new file mode 100644 index 0000000..6335a1b --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/AdminService.java @@ -0,0 +1,82 @@ +package com.pudonghot.ambition.admin.service; + +import java.io.InputStream; +import javax.validation.Valid; +import me.chyxion.tigon.model.ViewModel; +import com.pudonghot.ambition.model.Admin; +import javax.validation.constraints.NotNull; +import me.chyxion.tigon.service.BaseCrudService; +import org.hibernate.validator.constraints.NotBlank; +import com.pudonghot.ambition.form.create.AdminFormForCreate; +import com.pudonghot.ambition.form.update.AdminFormForUpdate; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 4, 2016 1:18:42 PM + */ +public interface AdminService + extends BaseCrudService { + String AVATAR_FOLDER = "admin_avatar"; + + /** + * find user by login id + * @param loginId + * @return admin view model + */ + ViewModel loginFind(@NotBlank String loginId); + + /** + * @param adminId + * @param password + * @return true if password is correct + */ + boolean validatePassword( + @NotNull String adminId, + @NotBlank String password); + + /** + * create admin + * @param form form + * @param avatar avatar + * @return admin view model + */ + ViewModel create( + @NotNull + @Valid + AdminFormForCreate form, + InputStream avatar); + + /** + * update admin + * @param form form + * @param avatar avatar + * @return admin view model + */ + ViewModel update( + @NotNull + @Valid + AdminFormForUpdate form, + InputStream avatar); + + /** + * @param adminId + * @param avatar + * @return admin view model + */ + @NotNull ViewModel update( + @NotBlank String adminId, + @NotNull InputStream avatar); + + /** + * @param adminId admin id + * @param password password + * @return admin view model + */ + @NotNull ViewModel updatePassword( + @NotBlank String adminId, + @NotBlank String password); +} + diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/service/support/AdminAuthFailedServiceSupport.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/support/AdminAuthFailedServiceSupport.java new file mode 100644 index 0000000..6b2fa5e --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/support/AdminAuthFailedServiceSupport.java @@ -0,0 +1,28 @@ +package com.pudonghot.ambition.admin.service.support; + +import me.chyxion.tigon.model.ViewModel; +import com.pudonghot.ambition.model.AdminAuthFailedLog; +import com.pudonghot.ambition.mapper.AdminAuthFailedLogMapper; +import com.pudonghot.ambition.admin.service.AdminAuthFailedLogService; +import me.chyxion.tigon.service.support.BaseCrudServiceSupport; +import com.pudonghot.ambition.form.create.AdminAuthFailedLogFormForCreate; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 14, 2016 3:23:37 PM + */ +public class AdminAuthFailedServiceSupport + extends BaseCrudServiceSupport + implements AdminAuthFailedLogService { + + /** + * {@inheritDoc} + */ + @Override + public ViewModel create(AdminAuthFailedLogFormForCreate form) { + return create(form.copy(new AdminAuthFailedLog())); + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/service/support/AdminLoginLogServiceSupport.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/support/AdminLoginLogServiceSupport.java new file mode 100644 index 0000000..ea65baf --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/support/AdminLoginLogServiceSupport.java @@ -0,0 +1,28 @@ +package com.pudonghot.ambition.admin.service.support; + +import com.pudonghot.ambition.admin.service.AdminLoginLogService; +import me.chyxion.tigon.model.ViewModel; +import com.pudonghot.ambition.model.AdminLoginLog; +import com.pudonghot.ambition.mapper.AdminLoginLogMapper; +import me.chyxion.tigon.service.support.BaseCrudServiceSupport; +import com.pudonghot.ambition.form.create.AdminLoginLogFormForCreate; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 14, 2016 3:23:37 PM + */ +public class AdminLoginLogServiceSupport + extends BaseCrudServiceSupport + implements AdminLoginLogService { + + /** + * {@inheritDoc} + */ + @Override + public ViewModel create(AdminLoginLogFormForCreate form) { + return create(form.copy(new AdminLoginLog())); + } +} diff --git a/server/crm/src/main/java/com/pudonghot/ambition/admin/service/support/AdminServiceSupport.java b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/support/AdminServiceSupport.java new file mode 100644 index 0000000..09d5545 --- /dev/null +++ b/server/crm/src/main/java/com/pudonghot/ambition/admin/service/support/AdminServiceSupport.java @@ -0,0 +1,161 @@ +package com.pudonghot.ambition.admin.service.support; + +import java.util.Date; +import java.io.InputStream; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.Assert; +import me.chyxion.tigon.mybatis.Search; +import me.chyxion.tigon.model.ViewModel; +import com.pudonghot.ambition.model.Admin; +import me.chyxion.tigon.sequence.IdSequence; +import com.pudonghot.ambition.file.ImageTool; +import com.pudonghot.ambition.util.Sha512Utils; +import com.pudonghot.ambition.mapper.AdminMapper; +import com.pudonghot.ambition.file.AmbitionFileApi; +import com.pudonghot.ambition.admin.service.AdminService; +import org.springframework.beans.factory.annotation.Value; +import com.pudonghot.ambition.form.create.AdminFormForCreate; +import com.pudonghot.ambition.form.update.AdminFormForUpdate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import me.chyxion.tigon.service.support.BaseCrudByFormServiceSupport; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 22, 2015 10:45:41 AM + */ +@Slf4j +public class AdminServiceSupport + extends BaseCrudByFormServiceSupport + implements AdminService { + @Autowired + private AmbitionFileApi fileApi; + @Autowired + private ImageTool imageTool; + @Value("${default.admin.avatar.size:512}") + private int defaultAvatarSize; + @Autowired + private IdSequence idSeq; + + /** + * {@inheritDoc} + */ + @Override + public ViewModel create(AdminFormForCreate form, InputStream avatar) { + final ViewModel viewModel = super.create(form); + final Admin admin = viewModel.getData(); + if (avatar != null) { + uploadAvatar(admin.getId(), avatar); + } + else { + uploadAvatar(admin.getId(), + admin.getName(), + admin.getGender()); + } + return viewModel; + } + + + /** + * {@inheritDoc} + */ + @Override + @Transactional + public ViewModel update(AdminFormForUpdate form, InputStream avatar) { + ViewModel viewModel = update(form); + if (avatar != null) { + fileApi.uploadImage(imageTool.cropToSquare(avatar, defaultAvatarSize), + AVATAR_FOLDER, String.valueOf(form.getId())); + } + return viewModel; + } + + /** + * {@inheritDoc} + */ + @Override + public boolean validatePassword(String adminId, String password) { + final Admin admin = mapper.find(adminId); + return hashPassword(admin.getId(), password) + .equals((admin.getPassword())); + } + + /** + * {@inheritDoc} + */ + @Override + public ViewModel loginFind(String loginId) { + log.info("Find Admin By [{}].", loginId); + Admin user = null; + for (String field : new String[] {Admin.LOGIN_ID, Admin.MOBILE, Admin.EMAIL}) { + user = mapper.find(new Search(field, loginId).eq(Admin.ENABLED, true)); + if (user != null) { + log.info("Found Admin [{}] By [{}].", user, field); + break; + } + } + return user != null ? toViewModel(user) : null; + } + + /** + * {@inheritDoc} + */ + @Override + @Transactional + public ViewModel update(String adminId, InputStream avatar) { + final Admin admin = mapper.find(adminId); + Assert.state(admin != null, "No Admin [" + adminId + "] Found"); + admin.setUpdatedBy(adminId); + admin.setDateUpdated(new Date()); + mapper.update(admin); + fileApi.uploadImage(imageTool.cropToSquare(avatar, defaultAvatarSize), + AVATAR_FOLDER, String.valueOf(adminId)); + return toViewModel(admin); + } + + /** + * {@inheritDoc} + */ + @Override + public ViewModel updatePassword(String userId, String password) { + final Admin admin = mapper.find(userId); + Assert.state(admin != null, "No Admin [" + userId + "] Found"); + final String passwordSalt = idSeq.get(); + admin.setPassword(hashPassword(passwordSalt, password)); + return update(admin); + } + + /** + * {@inheritDoc} + */ + @Override + protected void processViewModel(ViewModel viewModel, Admin model) { + super.processViewModel(viewModel, model); + if (model != null) { + viewModel.setAttr("avatar", urlCacheClear(model, + fileApi.getUrl(AVATAR_FOLDER, String.valueOf(model.getId())))); + } + } + + String uploadAvatar(final String userId, final String name, final String gender) { + return fileApi.uploadAvatar(AVATAR_FOLDER, String.valueOf(userId), name, gender); + } + + String uploadAvatar(String id, InputStream avatar) { + String avatarUrl = null; + if (avatar != null) { + avatarUrl = fileApi.uploadImage( + imageTool.cropToSquare(avatar, defaultAvatarSize), + AVATAR_FOLDER, String.valueOf(id)); + } + return avatarUrl; + } + + protected String hashPassword(final String passwordSalt, final String password) { + return Sha512Utils.encode(password, passwordSalt); + } +} diff --git a/server/crm/src/main/resources/application.properties b/server/crm/src/main/resources/application.properties new file mode 100644 index 0000000..4554af9 --- /dev/null +++ b/server/crm/src/main/resources/application.properties @@ -0,0 +1,25 @@ +server.port=8088 + +# MySQL +db.url=jdbc:mysql://127.0.0.1:43306/pudong_hot?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull +db.user=root +db.password=696@2^~)oZ@^#*Q + +# Redis +redis.host=127.0.0.1 +redis.port=46379 +redis.password=0211 + +# AliYun Account +ali.access.key=K4oM0OVHbLS1cInv +ali.access.secret=qjweLLtV1YLoAJQWI3CwFytG78UkTQ + +# OSS +ali.oss.bucket=ambition +ali.oss.host.internal=oss-cn-shanghai.aliyuncs.com + +# Session Redis prefix +shiro.session.redis.prefix=ADMIN_AUTH_SESSION + +spring.http.multipart.max-file-size=1024MB +spring.http.multipart.max-request-size=1024MB diff --git a/server/crm/src/main/resources/application_dev.properties b/server/crm/src/main/resources/application_dev.properties new file mode 100644 index 0000000..4554af9 --- /dev/null +++ b/server/crm/src/main/resources/application_dev.properties @@ -0,0 +1,25 @@ +server.port=8088 + +# MySQL +db.url=jdbc:mysql://127.0.0.1:43306/pudong_hot?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull +db.user=root +db.password=696@2^~)oZ@^#*Q + +# Redis +redis.host=127.0.0.1 +redis.port=46379 +redis.password=0211 + +# AliYun Account +ali.access.key=K4oM0OVHbLS1cInv +ali.access.secret=qjweLLtV1YLoAJQWI3CwFytG78UkTQ + +# OSS +ali.oss.bucket=ambition +ali.oss.host.internal=oss-cn-shanghai.aliyuncs.com + +# Session Redis prefix +shiro.session.redis.prefix=ADMIN_AUTH_SESSION + +spring.http.multipart.max-file-size=1024MB +spring.http.multipart.max-request-size=1024MB diff --git a/server/crm/src/main/resources/application_prod.properties b/server/crm/src/main/resources/application_prod.properties new file mode 100644 index 0000000..476ddbf --- /dev/null +++ b/server/crm/src/main/resources/application_prod.properties @@ -0,0 +1,23 @@ +server.port=8100 +# MySQL +db.url=jdbc:mysql://localhost:3306/pudong_hot?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull +db.user=root +db.password=696@2^~)oZ@^#*Q + +# Redis +redis.host=127.0.0.1 +redis.port=6379 +redis.password=0211 + +# AliYun Account +ali.access.key=K4oM0OVHbLS1cInv +ali.access.secret=qjweLLtV1YLoAJQWI3CwFytG78UkTQ + +# OSS +ali.oss.bucket=ambition + +# Session Redis prefix +shiro.session.redis.prefix=ADMIN_AUTH_SESSION + +spring.http.multipart.max-file-size=1024MB +spring.http.multipart.max-request-size=1024MB diff --git a/server/crm/src/main/resources/log4j2.xml b/server/crm/src/main/resources/log4j2.xml new file mode 100644 index 0000000..ff2fb0a --- /dev/null +++ b/server/crm/src/main/resources/log4j2.xml @@ -0,0 +1,38 @@ + + + + DEBUG + .logs + %-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t][%c{1}] %m%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/crm/src/main/resources/log4j2_dev.xml b/server/crm/src/main/resources/log4j2_dev.xml new file mode 100644 index 0000000..ff2fb0a --- /dev/null +++ b/server/crm/src/main/resources/log4j2_dev.xml @@ -0,0 +1,38 @@ + + + + DEBUG + .logs + %-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t][%c{1}] %m%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/crm/src/main/resources/log4j2_prod.xml b/server/crm/src/main/resources/log4j2_prod.xml new file mode 100644 index 0000000..0d598da --- /dev/null +++ b/server/crm/src/main/resources/log4j2_prod.xml @@ -0,0 +1,37 @@ + + + + INFO + /data/program/logs/${project.artifactId} + %-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t][%c{1}] %m%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/crm/src/main/resources/shiro/auth.properties b/server/crm/src/main/resources/shiro/auth.properties new file mode 100644 index 0000000..3b2b3c4 --- /dev/null +++ b/server/crm/src/main/resources/shiro/auth.properties @@ -0,0 +1,3 @@ +/auth/login=anon +/=anon +/**=user diff --git a/server/crm/src/main/resources/spring/spring-ambition-app-cloud-api.xml b/server/crm/src/main/resources/spring/spring-ambition-app-cloud-api.xml new file mode 100644 index 0000000..d817648 --- /dev/null +++ b/server/crm/src/main/resources/spring/spring-ambition-app-cloud-api.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/server/crm/src/test/java/com/pudonghot/ambition/admin/TestDriver.java b/server/crm/src/test/java/com/pudonghot/ambition/admin/TestDriver.java new file mode 100644 index 0000000..191ae54 --- /dev/null +++ b/server/crm/src/test/java/com/pudonghot/ambition/admin/TestDriver.java @@ -0,0 +1,12 @@ +package com.pudonghot.ambition.admin; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 1, 2015 2:34:08 PM + */ +public class TestDriver { + +} diff --git a/server/crm/src/test/java/com/pudonghot/ambition/admin/controller/SiteControllerTest.java b/server/crm/src/test/java/com/pudonghot/ambition/admin/controller/SiteControllerTest.java new file mode 100644 index 0000000..b451428 --- /dev/null +++ b/server/crm/src/test/java/com/pudonghot/ambition/admin/controller/SiteControllerTest.java @@ -0,0 +1,51 @@ +package com.pudonghot.ambition.admin.controller; + +import java.util.Map; + +import com.pudonghot.ambition.admin.AmbitionAdminCloud; +import org.junit.Test; +import java.util.HashMap; +import org.junit.runner.RunWith; +import me.chyxion.tigon.webmvc.test.ControllerTestTool; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 10, 2017 23:15:16 + */ +@SpringBootTest +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = AmbitionAdminCloud.class) +public class SiteControllerTest { + + @Autowired + private ControllerTestTool t; + + @Test + public void testIndex() { + t.print(t.get("/")); + } + + @Test + public void testRaw() { + t.print(t.get("/raw")); + } + + @Test + public void testInt() { + t.print(t.get("/int")); + } + + @Test + public void testPost() { + Map params = new HashMap(); + params.put("id", "id"); + params.put("name", "Shaun Chyxion"); + params.put("gender", ""); + t.print(t.post("/post", params)); + } +} diff --git a/server/crm/src/test/java/com/pudonghot/ambition/admin/service/EmployeeServiceTest.java b/server/crm/src/test/java/com/pudonghot/ambition/admin/service/EmployeeServiceTest.java new file mode 100644 index 0000000..27cef6a --- /dev/null +++ b/server/crm/src/test/java/com/pudonghot/ambition/admin/service/EmployeeServiceTest.java @@ -0,0 +1,27 @@ +package com.pudonghot.ambition.admin.service; + +import com.pudonghot.ambition.admin.AmbitionAdminCloud; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @author Donghuang
+ * donghuang@wacai.com
+ * Apr 24, 2017 11:33 PM + */ +@SpringBootTest +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = AmbitionAdminCloud.class) +public class EmployeeServiceTest { + @Autowired + private EmployeeService employeeService; + + @Test + public void testListEmployee() { + + } +} diff --git a/server/crm/src/test/resources/spring/spring-test.xml b/server/crm/src/test/resources/spring/spring-test.xml new file mode 100644 index 0000000..7aa0615 --- /dev/null +++ b/server/crm/src/test/resources/spring/spring-test.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/server/deploy b/server/deploy new file mode 100755 index 0000000..9d7318b --- /dev/null +++ b/server/deploy @@ -0,0 +1,23 @@ +#!/bin/bash + +# get real path of softlink +get_real_path() { + local f="$1" + while [ -h "$f" ]; do + ls=`ls -ld "$f"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + f="$link" + else + f=`dirname "$f"`/"$link" + fi + done + eval "$2"="'$f'" +} + +get_real_path "$0" prg_path +echo "Script Path [$prg_path]" +PROJECT_HOME=$(dirname $prg_path) +echo "Project Home [$PROJECT_HOME]" +cd "$PROJECT_HOME" +mvn clean install -DskipTests diff --git a/server/file-api/README.md b/server/file-api/README.md new file mode 100644 index 0000000..3e71f16 --- /dev/null +++ b/server/file-api/README.md @@ -0,0 +1 @@ +#umsapp-file-api diff --git a/server/file-api/pom.xml b/server/file-api/pom.xml new file mode 100644 index 0000000..aac1321 --- /dev/null +++ b/server/file-api/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + file-api + Ambition File Api + jar + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + org.hibernate + hibernate-validator + + + me.chyxion + image-combine + 0.0.1-RELEASE + + + me.chyxion.tigon + tigon-sequence + + + org.apache.commons + commons-lang3 + + + commons-io + commons-io + + + org.springframework + spring-context + provided + + + + junit + junit + test + + + diff --git a/server/file-api/src/main/java/com/pudonghot/ambition/file/AmbitionFileApi.java b/server/file-api/src/main/java/com/pudonghot/ambition/file/AmbitionFileApi.java new file mode 100644 index 0000000..400c97e --- /dev/null +++ b/server/file-api/src/main/java/com/pudonghot/ambition/file/AmbitionFileApi.java @@ -0,0 +1,220 @@ +package com.pudonghot.ambition.file; + +import java.io.File; +import java.util.List; +import java.io.InputStream; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.NotBlank; +import org.springframework.validation.annotation.Validated; + +/** + * @version 0.0.4 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 24, 2015 1:22:40 PM + */ +@Validated +public interface AmbitionFileApi { + String META_FORMAT = "format"; + String META_DOWNLOAD_NAME = "downloadName"; + + /** + * get object url + * @param folder + * @param name + * @return + */ + @NotBlank String getUrl(String folder, @NotBlank String name); + + /** + * get object raw url + * @param folder + * @param name + * @return + */ + @NotBlank String getRawUrl(String folder, @NotBlank String name); + + /** + * get object url + * @param name + * @return + */ + @NotBlank String getUrl(@NotBlank String name); + + /** + * Upload File To OSS + * @param file File + * @param name File Name [optional], Such As "foobar.doc", + * A UUID Will Be The Name, If Name Not Specified, + * @return File Link [http://umsapp.oss-cn-hangzhou.aliyuncs.com/echat-dev/foobar.png] + */ + @NotBlank String upload(@NotNull File file, String name); + + /** + * Upload File To OSS + * @param file File + * @param folder Custom Folder + * @param name File Name [optional], Such As "foobar.doc", + * A UUID Will Be The Name, If Name Not Specified, + * @param contentType Content Type [Optional] + * @param format File Format [Optional] + * @return + */ + @NotBlank String upload(@NotNull File file, String folder, String name, String contentType, String format); + + /** + * Upload Stream To OSS + * @param ins Input Stream + * @param name File Name [optional], Such As "foobar.png", + * A UUID Will Be The Name, If Name Not Specified, + * @return File Link [http://umsapp.oss-cn-hangzhou.aliyuncs.com/echat-dev/foobar.png] + */ + @NotBlank String upload(@NotNull InputStream ins, @Min(1) long contentLength, String name); + + /** + * Upload Stream To OSS + * @param ins Input Stream + * @param folder Custom Folder + * @param name File Name [optional], Such As "foobar.doc", + * A UUID Will Be The Name, If Name Not Specified, + * @param contentType Content Type [Optional] + * @param format File Format [Optional] + */ + @NotBlank String upload(@NotNull InputStream ins, + @Min(1) long contentLength, + String folder, + String name, + String contentType, + String format); + + /** + * Upload Stream To OSS + * @param ins Input Stream + * @param contentLength + * @param folder Custom Folder + * @param name File Name [optional], Such As "foobar.doc", + * A UUID Will Be The Name, If Name Not Specified, + * @param contentType Content Type [Optional] + * @param format File Format [Optional] + * @param downloadName File Download Name [Optional] + * @return + */ + @NotBlank String upload(@NotNull InputStream ins, + @Min(1) long contentLength, + String folder, + String name, + String contentType, + String format, + String downloadName); + + /** + * Get File From OSS + * @param name File Name such as "foobar.xls" + * @return file link [http://umsapp.oss-cn-hangzhou.aliyuncs.com/echat-dev/foobar.xls] + */ + File getFile(@NotBlank String name); + + /** + * Get InputStream + */ + InputStream getInputStream(@NotBlank String name); + + /** + * Get Content Length + */ + long getContentLength(@NotBlank String name); + + /** + * check obj exists + * @param name + * @return + */ + boolean exist(@NotBlank String name); + + /** + * Delete File From OSS + * @param name File Name such as "foobar.xls" + */ + void delete(@NotBlank String name); + + /** + * Get Base Path + * @return + */ + @NotBlank String basePath(); + + /** + * Merge Images To One By URIs Provided + * @param members + * @return + */ + @NotNull byte[] combineAvatars(@NotNull List members); + + /** + * Upload Member Avatar + * @param memberId + * @param name + * @param gender F/M/S + * @return + */ + @NotBlank String uploadAvatar(@NotBlank String memberId, @NotBlank String name, String gender); + + /** + * Upload Member Avatar + * @param folder + * @param memberId + * @param name + * @param gender + * @return + */ + @NotBlank String uploadAvatar(@NotBlank String folder, @NotNull String memberId, @NotBlank String name, String gender); + + /** + * get member avatar url + * @param memberId + * @return + */ + @NotBlank String getAvatarUrl(@NotBlank String memberId); + + /** + * Update Member Avatar + * @param memberId + * @param insAvatar + * @return + */ + @NotBlank String uploadAvatar(@NotBlank String memberId, @NotNull InputStream insAvatar); + + /** + * @param memberId + * @param bytesAvatar + * @return + */ + @NotBlank String uploadAvatar(@NotBlank String memberId, @NotNull byte[] bytesAvatar); + + /** + * Upload Image + * @param ins + * @param folder + * @param name + * @return + */ + @NotBlank String uploadImage(@NotNull InputStream ins, String folder, String name); + + /** + * @param image + * @param folder + * @param name + * @return + */ + @NotBlank String uploadImage(@NotNull byte[] image, String folder, String name); + + /** + * Upload Image + * @param folder + * @param ins + * @return + */ + @NotBlank String uploadImage(@NotNull InputStream ins, String folder); +} diff --git a/server/file-api/src/main/java/com/pudonghot/ambition/file/ImageTool.java b/server/file-api/src/main/java/com/pudonghot/ambition/file/ImageTool.java new file mode 100644 index 0000000..3dac987 --- /dev/null +++ b/server/file-api/src/main/java/com/pudonghot/ambition/file/ImageTool.java @@ -0,0 +1,114 @@ +package com.pudonghot.ambition.file; + +import java.awt.Font; +import java.awt.Color; +import java.io.InputStream; +import java.util.Collection; +import java.awt.image.BufferedImage; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.NotBlank; +import org.springframework.validation.annotation.Validated; + +/** + * @version 0.0.2 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 24, 2015 2:53:08 PM + */ +@Validated +public interface ImageTool { + + /** + * combine images + * @param images + * @return + */ + BufferedImage combine(@NotNull Collection images); + + /** + * get image type of input stream + * @param ins + * @return + */ + String imageType(@NotNull InputStream ins); + + /** + * get image type of input stream + * @param bytes + * @return + */ + String imageType(@NotNull byte[] bytes); + + /** + * @param size + * @param text + * @param canvasBgColor + * @param circleColor + * @param fontColor + * @param font + * @return + */ + byte[] genCircleTextImage( + int size, @NotBlank String text, + Color canvasBgColor, Color circleColor, + Color fontColor, Font font); + + /** + * @param size + * @param text + * @param bgColor + * @param circleColor + * @param fontColor + * @param font + * @return + */ + byte[] genFillCircleTextImage( + int size, @NotBlank String text, + Color bgColor, Color circleColor, + Color fontColor, Font font); + + /** + * gen member avatar + * @param name + * @param gender + * @return + */ + byte[] genAvatar(@NotBlank String name, String gender); + + /** + * gen member avatar + * @param name + * @param gender + * @param size + * @return + */ + byte[] genAvatar(@NotBlank String name, String gender, int size); + + /** + * @param imageBytes + * @return + */ + byte[] toJpegBytes(@NotNull byte[] imageBytes); + + /** + * @param insImage + * @param maxSize + * @return + */ + byte[] cropToSquare(@NotNull InputStream insImage, int maxSize); + + /** + * @param bytesImage + * @param maxSize + * @return + */ + byte[] cropToSquare(@NotNull byte[] bytesImage, int maxSize); + + /** + * @param bytesImage + * @param maxSize + * @return + */ + BufferedImage cropToSquare(BufferedImage bytesImage, int maxSize); +} diff --git a/server/file-api/src/main/java/com/pudonghot/ambition/file/support/AbstractAmbitionFileApi.java b/server/file-api/src/main/java/com/pudonghot/ambition/file/support/AbstractAmbitionFileApi.java new file mode 100644 index 0000000..ba751b3 --- /dev/null +++ b/server/file-api/src/main/java/com/pudonghot/ambition/file/support/AbstractAmbitionFileApi.java @@ -0,0 +1,248 @@ +package com.pudonghot.ambition.file.support; + +import java.io.File; +import java.util.List; +import org.slf4j.Logger; +import java.io.IOException; +import java.io.InputStream; +import java.util.LinkedList; +import javax.imageio.ImageIO; +import java.io.FileInputStream; +import org.slf4j.LoggerFactory; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.FileNotFoundException; +import org.apache.commons.io.IOUtils; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import me.chyxion.tigon.sequence.IdSequence; +import com.pudonghot.ambition.file.ImageTool; +import org.springframework.util.MimeTypeUtils; +import com.pudonghot.ambition.file.AmbitionFileApi; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 14, 2016 3:31:52 PM + */ +public abstract class AbstractAmbitionFileApi implements AmbitionFileApi { + private static final Logger log = + LoggerFactory.getLogger(AbstractAmbitionFileApi.class); + + @Autowired + protected ImageTool imageTool; + @Autowired + protected IdSequence idSeq; + + /** + * {@inheritDoc} + */ + @Override + public String upload(File file, String folder, String name, String contentType, String format) { + log.debug("Upload Input Stream To OSS With File [{}].", name); + if (StringUtils.isBlank(name)) { + name = idSeq.get(); + String fileExt = FilenameUtils.getExtension(file.getName()); + if (StringUtils.isNotBlank(fileExt) + && StringUtils.isBlank(format)) { + format = fileExt; + } + } + try { + return upload(new FileInputStream(file), + file.length(), + folder, + name, + contentType, + format); + } + catch (FileNotFoundException e) { + throw new IllegalStateException( + "Upload File Error Caused, File Not Found", e); + } + } + + /** + * {@inheritDoc} + */ + @Override + public String upload(File file, String name) { + return upload(file, null, name, null, null); + } + + /** + * {@inheritDoc} + */ + @Override + public String upload(InputStream in, long contentLength, String name) { + return upload(in, contentLength, null, name, null, null); + } + + /** + * {@inheritDoc} + */ + @Override + public String upload(InputStream in, + long contentLength, + String folder, String name, + String contentType, String fileFormat) { + return upload(in, contentLength, folder, name, contentType, fileFormat, null); + } + + /** + * {@inheritDoc} + */ + @Override + public byte[] combineAvatars(List members) { + List images = new LinkedList(); + for (String memberId : members) { + InputStream imageInput = null; + try { + imageInput = getInputStream("avatar/" + memberId); + images.add(ImageIO.read(imageInput)); + } + catch (IOException e) { + uploadAvatar(memberId, "U", ""); + log.error("Read Member [{}] Avatar Error Caused", memberId, e); + } + finally { + IOUtils.closeQuietly(imageInput); + } + } + if (!images.isEmpty()) { + ByteArrayOutputStream baos = null; + try { + baos = new ByteArrayOutputStream(); + ImageIO.write(imageTool.combine(images), "png", baos); + return baos.toByteArray(); + } + catch (IOException e) { + throw new IllegalStateException( + "Write Image File Error Caused", e); + } + finally { + IOUtils.closeQuietly(baos); + } + } + throw new IllegalStateException( + "No Image Found In Members " + members); + } + + /** + * {@inheritDoc} + */ + @Override + public String getUrl(String name) { + return getUrl(null, name); + } + + /** + * {@inheritDoc} + */ + @Override + public String uploadAvatar(String memberId, String name, String gender) { + return uploadAvatar(avatarFolder(), memberId, name, gender); + } + + /** + * {@inheritDoc} + */ + @Override + public String uploadAvatar(String folder, String memberId, String name, String gender) { + byte[] bytesAvatar = imageTool.genAvatar(name, gender); + return upload(new ByteArrayInputStream(bytesAvatar), + bytesAvatar.length, + folder, + memberId, + MimeTypeUtils.IMAGE_PNG_VALUE, "png"); + } + + /** + * {@inheritDoc} + */ + @Override + public String uploadAvatar(String memberId, InputStream ins) { + return uploadImage(ins, avatarFolder(), memberId); + } + + /** + * {@inheritDoc} + */ + @Override + public String getAvatarUrl(String memberId) { + return getUrl(avatarFolder(), memberId); + } + + /** + * {@inheritDoc} + */ + @Override + public String uploadImage(InputStream ins, String folder, String name) { + byte[] bytesFile = null; + try { + bytesFile = IOUtils.toByteArray(ins); + } + catch (IOException e) { + throw new IllegalStateException( + "Upload Image Read Input Stream Error Caused", e); + } + finally { + IOUtils.closeQuietly(ins); + } + return uploadImage(bytesFile, folder, name); + } + + /** + * {@inheritDoc} + */ + @Override + public String uploadImage(byte[] bytesFile, String folder, String name) { + String format = imageTool.imageType(new ByteArrayInputStream(bytesFile)); + if (StringUtils.isNotBlank(format)) { + if (!ArrayUtils.contains(new String[] {"png", "jpg", "jpeg"}, format)) { + log.info("Image File Type Is Not JPG Or PNG, Convert To JPG."); + bytesFile = imageTool.toJpegBytes(bytesFile); + format = "jpg"; + } + log.info("Upload Image With Folder [{}], Name [{}], Format [{}].", folder, name, format); + return upload( + new ByteArrayInputStream(bytesFile), + bytesFile.length, + folder, name, "image/" + format, format); + } + else { + throw new IllegalArgumentException( + "Unsupported Image File Format [" + format + "]"); + } + } + + /** + * @param ins + * @param folder + * @return + */ + @Override + public String uploadImage(InputStream ins, String folder) { + return uploadImage(ins, folder, null); + } + + /** + * {@inheritDoc} + */ + @Override + public String uploadAvatar(String memberId, byte[] bytesAvatar) { + return uploadImage(bytesAvatar, avatarFolder(), memberId); + } + + // -- + // private methods + + protected String avatarFolder() { + return "avatar"; + } +} diff --git a/server/file-api/src/main/java/com/pudonghot/ambition/file/support/ImageToolSupport.java b/server/file-api/src/main/java/com/pudonghot/ambition/file/support/ImageToolSupport.java new file mode 100644 index 0000000..9b4bb31 --- /dev/null +++ b/server/file-api/src/main/java/com/pudonghot/ambition/file/support/ImageToolSupport.java @@ -0,0 +1,464 @@ +package com.pudonghot.ambition.file.support; + +import java.awt.Font; +import java.awt.Color; +import java.awt.Shape; +import org.slf4j.Logger; +import java.util.Iterator; +import org.imgscalr.Scalr; +import java.awt.Graphics2D; +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; +import java.awt.BasicStroke; +import javax.imageio.ImageIO; +import javax.imageio.IIOImage; +import java.awt.AlphaComposite; +import java.awt.geom.Ellipse2D; +import java.awt.RenderingHints; +import org.slf4j.LoggerFactory; +import org.imgscalr.Scalr.Method; +import javax.imageio.ImageReader; +import javax.imageio.ImageWriter; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.awt.geom.AffineTransform; +import java.io.ByteArrayOutputStream; +import javax.imageio.ImageWriteParam; +import me.chyxion.image.ImageCombine; +import org.apache.commons.io.IOUtils; +import org.springframework.util.Assert; +import org.apache.commons.lang3.StringUtils; +import com.pudonghot.ambition.file.ImageTool; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.ImageOutputStream; +import javax.imageio.stream.MemoryCacheImageOutputStream; +import org.springframework.beans.factory.annotation.Value; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Jun 25, 2015 12:19:44 PM + */ +public class ImageToolSupport implements ImageTool { + private static final Logger log = + LoggerFactory.getLogger(ImageToolSupport.class); + private ImageCombine ic = new ImageCombine(); + // gender color + @Value("${gender.male.bg.color:#5EC9F6}") + private String genderMaleColor; + @Value("${gender.female.bg.color:#66CCCC}") + private String genderFemaleColor; + @Value("${gender.unknown.bg.color:#D7D2D5}") + private String genderUnknownColor; + @Value("${image.gen.default.size:512}") + private int defaultImageSize; + @Value("${image.combine.default.size:256}") + private int defaultCombineImageSize; + + private final Font FONT_DEFAULT; + { + try { + FONT_DEFAULT = Font.createFont(Font.TRUETYPE_FONT, + ImageToolSupport.class.getResourceAsStream("/fonts/w3.otf")) + .deriveFont(Font.PLAIN, 316.416F); + } + catch (Exception e) { + throw new IllegalStateException( + "Init Font Error Caused", e); + } + } + + /** + * {@inheritDoc} + */ + @Override + public BufferedImage combine(Collection images) { + Assert.notEmpty(images, "Images Could Not Be Empty"); + Iterator it = images.iterator(); + BufferedImage imageRtn = null; + if (images.size() == 1) { + imageRtn = resize(ic.cropToCircle(it.next()), defaultCombineImageSize); + } + else if (images.size() == 2) { + imageRtn = ic.combine(it.next(), it.next(), defaultCombineImageSize); + } + else if (images.size() == 3) { + imageRtn = ic.combine(it.next(), + it.next(), it.next(), defaultCombineImageSize); + } + else if (images.size() == 4) { + imageRtn = ic.combine(it.next(), + it.next(), it.next(), it.next(), defaultCombineImageSize); + } + else { + imageRtn = ic.combine(it.next(), + it.next(), it.next(), it.next(), it.next(), defaultCombineImageSize); + } + return imageRtn; + } + + /** + * {@inheritDoc} + */ + @Override + public String imageType(InputStream ins) { + ImageInputStream iis = null; + try { + try { + iis = ImageIO.createImageInputStream(ins); + } + catch (IOException e) { + log.warn("Read Image Input Stream [{}] Error Caused.", ins, e); + return null; + } + Iterator iter = ImageIO.getImageReaders(iis); + String format = null; + if (iter.hasNext()) { + ImageReader reader = iter.next(); + try { + format = reader.getFormatName().toLowerCase(); + } + catch (IOException e) { + log.warn("Get Image Format Name Error Caused.", e); + } + finally { + reader.dispose(); + } + } + else { + log.info("Input Stream [{}] Is Not Image Input Stream.", ins); + } + return format; + } + finally { + IOUtils.closeQuietly(iis); + IOUtils.closeQuietly(ins); + } + } + + /** + * {@inheritDoc} + */ + @Override + public String imageType(byte[] bytes) { + return imageType(new ByteArrayInputStream(bytes)); + } + + /** + * {@inheritDoc} + */ + @Override + public byte[] toJpegBytes(byte [] imageBytes) { + ByteArrayInputStream bais = null; + ByteArrayOutputStream baos = null; + ImageOutputStream imageOut = null; + try { + ImageWriter writer = + ImageIO.getImageWritersByFormatName("jpeg").next(); + // instantiate an ImageWriteParam object with default compression options + ImageWriteParam iwp = writer.getDefaultWriteParam(); + iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); + // an integer between 0 and 1 + // 1 specifies minimum compression and maximum quality + iwp.setCompressionQuality(1); + baos = new ByteArrayOutputStream(); + imageOut = new MemoryCacheImageOutputStream(baos); + writer.setOutput(imageOut); + bais = new ByteArrayInputStream(imageBytes); + writer.write(null, new IIOImage(ImageIO.read(bais), null, null), iwp); + writer.dispose(); + return baos.toByteArray(); + } + catch (IOException e) { + throw new IllegalStateException( + "Convert Image To JPEG Error Caused", e); + } + finally { + IOUtils.closeQuietly(imageOut); + IOUtils.closeQuietly(baos); + IOUtils.closeQuietly(bais); + } + } + + /** + * {@inheritDoc} + */ + @Override + public byte[] genFillCircleTextImage( + final int size, + final String text, + Color canvasBgColor, + final Color circleBgColor, + final Color fontColor, + final Font font) { + + return genImage(size, canvasBgColor, new ImageOp() { + @Override + public void process(Graphics2D g2d) { + fillCircle(size, g2d, circleBgColor); + drawCentralText(size, g2d, font, fontColor, text); + } + }); + } + + /** + * {@inheritDoc} + */ + @Override + public byte[] genCircleTextImage( + final int size, + final String text, + Color canvasBgColor, + final Color circleColor, + final Color fontColor, + final Font font) { + + return genImage(size, canvasBgColor, new ImageOp() { + @Override + public void process(Graphics2D g2d) { + drawCircle(size, g2d, circleColor); + drawCentralText(size, g2d, font, fontColor, text); + } + }); + } + + /** + * {@inheritDoc} + */ + @Override + public byte[] genAvatar(String name, String gender) { + return genAvatar(name, gender, defaultImageSize); + } + + /** + * {@inheritDoc} + */ + @Override + public byte[] genAvatar(String name, String gender, int size) { + Color circleBgColor = null; + if ("M".equalsIgnoreCase(gender)) { + circleBgColor = Color.decode(genderMaleColor); + } + else if ("F".equalsIgnoreCase(gender)) { + circleBgColor = Color.decode(genderFemaleColor); + } + else { + circleBgColor = Color.decode(genderUnknownColor); + } + return genFillCircleTextImage(size, + name.trim().substring(0, 1), + null, circleBgColor, Color.WHITE, null); + } + + // -- + // protected methods + + byte[] genImage(int size, Color bgColor, ImageOp op) { + if (size < 1) { + size = defaultImageSize; + log.debug("No Valid Image Size Specified, Use Default Size [{}].", size); + } + + BufferedImage image = + new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB); + Graphics2D g2d = (Graphics2D) image.getGraphics(); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + if (bgColor != null) { + g2d.setColor(bgColor); + g2d.fillRect(0, 0, size, size); + } + // set background transparent + else { + g2d.setComposite(AlphaComposite.Clear); + g2d.fillRect(0, 0, size, size); + g2d.setComposite(AlphaComposite.Src); + } + if (op != null) { + op.process(g2d); + } + g2d.dispose(); + image.flush(); + return imageToBytes(image, null); + } + + void drawCentralText(int size, Graphics2D g2d, Font font, Color fontColor, String text) { + log.debug("Draw Central Text [{}].", text); + if (font == null) { + log.debug("No Font Specified, Use Default."); + font = FONT_DEFAULT; + } + // draw text + font = font.deriveFont(Font.PLAIN, size * 0.618F); + g2d.setFont(font); + g2d.setColor(fontColor); + // set text to center + Shape outline = font.createGlyphVector( + g2d.getFontMetrics().getFontRenderContext(), + text).getOutline(); + // the shape returned is located at the left side of the baseline, + // this means we need to re-align it to the top left corner. + // We also want to set it the the center of the screen while we are there + g2d.fill(AffineTransform.getTranslateInstance( + -outline.getBounds().getX() + size / 2 - outline.getBounds().width / 2, + -outline.getBounds().getY() + size / 2 - outline.getBounds().height / 2) + .createTransformedShape(outline)); + } + + BufferedImage resize(BufferedImage image, int size) { + if (size == image.getWidth() && + size == image.getHeight()) { + return image; + } + return Scalr.resize(image, Method.AUTOMATIC, size, size); + } + + void drawCircle(int size, Graphics2D g2d, Color color) { + g2d.setColor(color); + // line stroke log2(size) + float lineWidth = (float) Math.ceil(Math.log(size) / Math.log(2)); + g2d.setStroke(new BasicStroke(lineWidth)); + int r = (int) (size / 2 - lineWidth - 4); + int c = size / 2 - r; + g2d.drawOval(c, c, 2 * r, 2 * r); + } + + void fillCircle(int size, Graphics2D g2d, Color color) { + g2d.setColor(color); + int r = (int) (size / 2 - 4); + int c = size / 2 - r; + g2d.fillOval(c, c, 2 * r, 2 * r); + } + + BufferedImage circleImage(BufferedImage image) { + int w = image.getWidth(); + int h = image.getHeight(); + BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); + Graphics2D g2 = output.createGraphics(); + + // This is what we want, but it only does hard-clipping, i.e. aliasing + // g2.setClip(new RoundRectangle2D ...) + + // so instead fake soft-clipping by first drawing the desired clip shape + // in fully opaque white with antialiasing enabled... + g2.setComposite(AlphaComposite.Src); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2.setColor(Color.WHITE); + // g2.fill(new RoundRectangle2D.Float(0, 0, w, h, cornerRadius, cornerRadius)); + int border = 2; + g2.fill(new Ellipse2D.Double(border, border, w - border * 2, h - border * 2)); + + // ... then compositing the image on top, + // using the white shape from above as alpha source + g2.setComposite(AlphaComposite.SrcAtop); + g2.drawImage(image, 0, 0, null); + + g2.dispose(); + + return output; + } + + static interface ImageOp { + void process(Graphics2D g2d); + } + + /** + * {@inheritDoc} + */ + @Override + public byte[] cropToSquare(InputStream insImage, int maxSize) { + try { + return cropToSquare(IOUtils.toByteArray(insImage), maxSize); + } + catch (IOException e) { + throw new IllegalStateException( + "Read Image Stream Error Caused", e); + } + finally { + IOUtils.closeQuietly(insImage); + } + } + + /** + * {@inheritDoc} + */ + @Override + public byte[] cropToSquare(byte[] bytesImage, int maxSize) { + String imageType = imageType(bytesImage); + Assert.state(StringUtils.isNotBlank(imageType), "Invalid Image"); + + InputStream insImage = null; + try { + insImage = new ByteArrayInputStream(bytesImage); + return imageToBytes(cropToSquare(ImageIO.read(insImage)), imageType); + } + catch (IOException e) { + throw new IllegalStateException( + "Process Image Bytes Error Caused", e); + } + finally { + IOUtils.closeQuietly(insImage); + } + } + + /** + * {@inheritDoc} + */ + @Override + public BufferedImage cropToSquare(BufferedImage image, int maxSize) { + image = cropToSquare(image); + if (image.getWidth() > maxSize) { + image = resize(image, maxSize); + } + return image; + } + + /** + * crop image to square by shorter side + * @param image image to crop + * @return result image + */ + BufferedImage cropToSquare(final BufferedImage image) { + int width = image.getWidth(); + int height = image.getHeight(); + if (width == height) { + log.info("Crop Image To Square, Image [{}]x[{}] Is Square Aready, Ignore.", width, height); + return image; + } + int size = height > width ? width : height; + log.info("Crop Image To Square [{}]x[{}].", size, size); + BufferedImage imageRtn = + new BufferedImage(size, size, BufferedImage.TYPE_INT_RGB); + Graphics2D g2d = imageRtn.createGraphics(); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setComposite(AlphaComposite.Src); + g2d.drawImage(image, (int) (Math.ceil(size - width) / 2.0), + (int) Math.ceil((size - height) / 2.0), null); + g2d.dispose(); + imageRtn.flush(); + return imageRtn; + } + + byte[] imageToBytes(BufferedImage image, String format) { + ByteArrayOutputStream baos = + new ByteArrayOutputStream(); + try { + ImageIO.write(image, + StringUtils.isNotBlank(format) ? + format : "png", baos); + return baos.toByteArray(); + } + catch (IOException e) { + throw new IllegalStateException( + "Write Image Error Caused", e); + } + finally { + IOUtils.closeQuietly(baos); + } + } +} diff --git a/server/file-api/src/main/resources/fonts/w3.otf b/server/file-api/src/main/resources/fonts/w3.otf new file mode 100644 index 0000000..a60555d Binary files /dev/null and b/server/file-api/src/main/resources/fonts/w3.otf differ diff --git a/server/file-api/src/main/resources/spring/spring-ambtion-file-api.xml b/server/file-api/src/main/resources/spring/spring-ambtion-file-api.xml new file mode 100644 index 0000000..b4daeb7 --- /dev/null +++ b/server/file-api/src/main/resources/spring/spring-ambtion-file-api.xml @@ -0,0 +1,7 @@ + + + + diff --git a/server/file-api/src/test/java/com/pudonghot/ambition/file/oss/package-info.java b/server/file-api/src/test/java/com/pudonghot/ambition/file/oss/package-info.java new file mode 100644 index 0000000..a809d31 --- /dev/null +++ b/server/file-api/src/test/java/com/pudonghot/ambition/file/oss/package-info.java @@ -0,0 +1,8 @@ +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 24, 2015 4:00:39 PM + */ +package com.pudonghot.ambition.file.oss; diff --git a/server/file-api/src/test/resources/log4j.properties b/server/file-api/src/test/resources/log4j.properties new file mode 100644 index 0000000..ab579e5 --- /dev/null +++ b/server/file-api/src/test/resources/log4j.properties @@ -0,0 +1,15 @@ +log4j.rootLogger=debug, console + +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.Encoding=utf-8 +log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%F:%L] %m%n + +log4j.appender.file=org.apache.log4j.DailyRollingFileAppender +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%F:%L] %m%n +log4j.appender.file.File=${log.dir}/${project.artifactId}-test.log +log4j.appender.file.Encoding=utf-8 + +log4j.logger.org.apache=info +log4j.logger.org.springframework=info \ No newline at end of file diff --git a/server/file-api/src/test/resources/spring/config.properties b/server/file-api/src/test/resources/spring/config.properties new file mode 100644 index 0000000..76dbbbc --- /dev/null +++ b/server/file-api/src/test/resources/spring/config.properties @@ -0,0 +1 @@ +# Config Dev diff --git a/server/file-api/src/test/resources/spring/spring-echat-file-test.xml b/server/file-api/src/test/resources/spring/spring-echat-file-test.xml new file mode 100644 index 0000000..a869853 --- /dev/null +++ b/server/file-api/src/test/resources/spring/spring-echat-file-test.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/server/file-disk/pom.xml b/server/file-disk/pom.xml new file mode 100644 index 0000000..bec0011 --- /dev/null +++ b/server/file-disk/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + file-disk + Ambition File Disk + jar + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + com.pudonghot.ambition + file-api + + + me.chyxion.tigon + tigon-sequence + + + com.aliyun.oss + aliyun-sdk-oss + + + org.springframework + spring-beans + + + org.projectlombok + lombok + + + + org.springframework + spring-context + provided + + + org.springframework + spring-test + test + + + junit + junit + test + + + org.apache.logging.log4j + log4j-slf4j-impl + test + + + org.apache.logging.log4j + log4j-core + test + + + org.slf4j + jcl-over-slf4j + test + + + diff --git a/server/file-disk/src/main/java/com/pudonghot/ambition/file/oss/OSSFileSupport.java b/server/file-disk/src/main/java/com/pudonghot/ambition/file/oss/OSSFileSupport.java new file mode 100644 index 0000000..91aba53 --- /dev/null +++ b/server/file-disk/src/main/java/com/pudonghot/ambition/file/oss/OSSFileSupport.java @@ -0,0 +1,360 @@ +package com.pudonghot.ambition.file.oss; + +import java.io.File; +import java.util.Map; +import java.util.Date; +import java.util.HashMap; +import java.io.InputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.io.OutputStream; +import lombok.extern.slf4j.Slf4j; +import java.io.FileOutputStream; +import com.aliyun.oss.OSSClient; +import com.aliyun.oss.OSSErrorCode; +import com.aliyun.oss.OSSException; +import java.io.ByteArrayInputStream; +import org.apache.commons.io.IOUtils; +import com.aliyun.oss.model.OSSObject; +import javax.annotation.PostConstruct; +import org.springframework.util.Assert; +import org.apache.commons.io.FileUtils; +import org.springframework.util.MimeType; +import org.apache.http.entity.ContentType; +import com.aliyun.oss.model.ObjectMetadata; +import org.apache.commons.lang3.StringUtils; +import java.io.UnsupportedEncodingException; +import org.apache.commons.lang3.CharEncoding; +import com.aliyun.oss.model.GetObjectRequest; +import org.springframework.util.MimeTypeUtils; +import com.pudonghot.ambition.file.AmbitionFileApi; +import com.aliyun.oss.model.CannedAccessControlList; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.springframework.beans.factory.annotation.Value; +import com.pudonghot.ambition.file.support.AbstractAmbitionFileApi; + +/** + * @version 0.0.4 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 24, 2015 1:23:00 PM + */ +@Slf4j +public class OSSFileSupport + extends AbstractAmbitionFileApi + implements AmbitionFileApi { + + @Value("${ali.oss.host:oss-cn-shanghai.aliyuncs.com}") + private String ossHost; + @Value("${ali.oss.host.internal:oss-cn-shanghai-internal.aliyuncs.com}") + private String ossHostInternal; + @Value("${ali.oss.bucket}") + private String ossBucket; + @Value("${ali.oss.folder:}") + private String ossFolder; + @Value("${ali.access.key}") + private String ossAccount; + @Value("${ali.access.secret}") + private String ossSecret; + protected OSSClient ossClient; + @Value("${site.file.base.path:}") + private String basePath; + private String ossBasePath; + private String ossInternalBasePath; + + @PostConstruct + void init() { + log.info("Init OSS [{}].", ossHostInternal); + ossClient = new OSSClient("http://" + ossHostInternal, ossAccount, ossSecret); + // create bucket if it does not exist + if (!ossClient.doesBucketExist(ossBucket)) { + log.info("OSS Bucket [{}] Does Not Exist, Try To Create.", ossBucket); + ossClient.createBucket(ossBucket); + ossClient.setBucketAcl(ossBucket, + CannedAccessControlList.PublicRead); + } + // create folder if does not exist + if (StringUtils.isNotBlank(ossFolder)) { + try { + if (!ossFolder.endsWith("/")) { + ossFolder += "/"; + } + ossClient.getObjectMetadata(ossBucket, ossFolder); + } + catch (OSSException e) { + if (OSSErrorCode.NO_SUCH_KEY.equals(e.getErrorCode())) { + log.info("OSS Foler [{}] Does Not Exist, Try To Create.", ossFolder); + InputStream bin = new ByteArrayInputStream(new byte[0]); + ObjectMetadata objectMeta = new ObjectMetadata(); + objectMeta.setContentLength(0); + try { + ossClient.putObject(ossBucket, ossFolder, bin, objectMeta); + } + finally { + IOUtils.closeQuietly(bin); + } + } + else { + throw e; + } + } + } + + ossBasePath = "http://" + ossBucket + "." + ossHost + "/" + ossFolder; + log.info("Init OSS Base Path [{}].", ossBasePath); + ossInternalBasePath = "http://" + ossBucket + "." + ossHostInternal + "/" + ossFolder; + log.info("Init OSS Internal Base Path [{}].", ossBasePath); + if (StringUtils.isBlank(basePath)) { + basePath = ossBasePath; + } + log.info("Init File Base Path [{}].", basePath); + } + + /** + * {@inheritDoc} + */ + @Override + public String upload(InputStream in, + long contentLength, + String folder, + String name, + String contentType, + String fileFormat, + String downloadName) { + Assert.state(in != null, "Upload Input Stream Could Not Be Null"); + log.info("Upload Input Stream To OSS With Folder [{}] Name [{}] Content Type [{}] Content Length [{}] Format [{}] Download Name [{}].", + folder, name, contentType, contentLength, fileFormat, downloadName); + boolean useFolder = true; + if (StringUtils.isNotBlank(name)) { + log.debug("Name [{}] Is Not Blank.", name); + if (name.startsWith(ossBasePath)) { + log.debug("Name Starts With Base Path [{}], Trim.", ossBasePath); + name = name.replaceFirst(ossBasePath, ""); + useFolder = false; + } + } + else { + name = idSeq.get(); + log.debug("No File Name Specified, Use UUID Name [{}].", name); + } + if (useFolder) { + log.debug("Name Does Not Start With Base Path [{}], Prepend Folder.", ossBasePath); + if (StringUtils.isNotBlank(folder)) { + log.debug("Custom Folder [{}] Given.", folder); + if (!folder.endsWith("/")) { + folder += "/"; + } + name = folder + name; + log.debug("Prepend Custom And Date Folder, Name Result [{}].", name); + } + else { + name = DateFormatUtils.format(new Date(), "yyyyMMdd") + "/" + name; + log.debug("No Custom Fould Found, Prepend Date Folder [{}].", name); + } + } + + ObjectMetadata objMeta = new ObjectMetadata(); + // content type + objMeta.setContentType(StringUtils.isNotBlank(contentType) ? + contentType : ContentType.DEFAULT_BINARY.toString()); + // custom file format + if (StringUtils.isNotBlank(fileFormat)) { + Map meta = new HashMap(); + meta.put(META_FORMAT, fileFormat); + objMeta.setUserMetadata(meta); + } + // download name + if (StringUtils.isNotBlank(downloadName)) { + try { + downloadName = URLEncoder.encode(downloadName, CharEncoding.UTF_8); + } + catch (UnsupportedEncodingException e) { + throw new IllegalStateException( + "Update File [" + name + "] Encde Download Name [" + + downloadName + "] Error Caused", e); + } +// String dispo = +// new StringBuilder("attachment; filename=\"") +// .append(downloadName) +// .append("\"; filename*=utf-8''") +// .append(downloadName) +// .toString(); + + String dispo = + new StringBuilder("attachment; filename*=utf-8''") + .append(downloadName) + .toString(); + log.debug("Set Upload File Content-Disposition [{}].", dispo); + objMeta.setContentDisposition(dispo); + } + objMeta.setContentLength(contentLength); + try { + ossClient.putObject(ossBucket, ossFolder + name, in, objMeta); + } + catch (Exception e) { + throw new IllegalStateException( + "Update File [" + name + "] Error Caused", e); + } + finally { + IOUtils.closeQuietly(in); + } + name = basePath() + name; + log.info("Upload File Result [{}].", name); + return name; + } + + /** + * {@inheritDoc} + */ + @Override + public File getFile(String name) { + OSSObject obj = null; + try { + obj = ossClient.getObject( + new GetObjectRequest(ossBucket, urlToName(name))); + } + catch (OSSException e) { + if (!OSSErrorCode.NO_SUCH_KEY.equals(e.getErrorCode())) { + log.info("Get File Error Caused.", e); + } + return null; + } + log.info("Get File Of [{}].", name); + ObjectMetadata md = obj.getObjectMetadata(); + Map userMd = md.getUserMetadata(); + String format = null; + if (userMd != null && !userMd.isEmpty()) { + format = userMd.get(META_FORMAT); + log.info("User Meta File Format [{}] Found.", format); + } + if (StringUtils.isBlank(format)) { + String contentType = md.getContentType(); + log.info("No User Meta File Format Found, Get Object Content Type [{}].", contentType); + if (StringUtils.isNotBlank(contentType)) { + MimeType mt = MimeTypeUtils.parseMimeType(contentType); + format = mt.getSubtype(); + log.info("Get Object Content Type Subtype [{}].", format); + } + } + + String fileName = idSeq.get(); + if (StringUtils.isNotBlank(format)) { + fileName += "." + format; + } + File file = new File(FileUtils.getTempDirectory(), fileName); + file.deleteOnExit(); + InputStream fin = null; + OutputStream fout = null; + try { + fin = obj.getObjectContent(); + fout = new FileOutputStream(file); + IOUtils.copy(fin, fout); + } + catch (IOException e) { + throw new RuntimeException( + "Download File [" + name + "] Error Caused", e); + } + finally { + IOUtils.closeQuietly(fin); + IOUtils.closeQuietly(fout); + } + return file; + } + + /** + * {@inheritDoc} + */ + @Override + public InputStream getInputStream(String name) { + return ossClient.getObject( + new GetObjectRequest(ossBucket, urlToName(name))) + .getObjectContent(); + } + + /** + * {@inheritDoc} + */ + @Override + public long getContentLength(String name) { + return ossClient.getObject( + new GetObjectRequest(ossBucket, urlToName(name))) + .getObjectMetadata().getContentLength(); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean exist(String name) { + try { + ossClient.getObjectMetadata(ossBucket, urlToName(name)); + return true; + } + catch (OSSException e) { + if (!OSSErrorCode.NO_SUCH_KEY.equals(e.getErrorCode())) { + log.info("Check OSS Object Exists Error Caused.", e); + } + return false; + } + } + + /** + * {@inheritDoc} + */ + @Override + public void delete(String name) { + if (StringUtils.isNotBlank(name)) { + log.info("Delete File [{}].", name); + ossClient.deleteObject(ossBucket, urlToName(name)); + } + else { + log.info("Delete File, File Name Or URL Is Blank, Ignore."); + } + } + + /** + * {@inheritDoc} + */ + @Override + public String basePath() { + return basePath; + } + + /** + * {@inheritDoc} + */ + @Override + public String getUrl(String folder, String name) { + return getUrl(folder, name, false); + } + + /** + * {@inheritDoc} + */ + @Override + public String getRawUrl(String folder, String name) { + return getUrl(folder, name, true); + } + + // -- + // private methods + String urlToName(String url) { + return ossFolder + url.replace(basePath, "") + .replace(ossBasePath, "") + .replace(ossInternalBasePath, ""); + } + + String getUrl(String folder, String name, boolean raw) { + String url = raw ? ossBasePath : basePath; + if (StringUtils.isNotBlank(folder)) { + url += folder; + } + if (!url.endsWith("/")) { + url += "/"; + } + url += name; + log.debug("Get Url [{}] Of Folder [{}] And Name [{}].", url, folder, name); + return url; + } +} diff --git a/server/file-disk/src/main/resources/spring/spring-ambtion-file-oss.xml b/server/file-disk/src/main/resources/spring/spring-ambtion-file-oss.xml new file mode 100644 index 0000000..8450e9e --- /dev/null +++ b/server/file-disk/src/main/resources/spring/spring-ambtion-file-oss.xml @@ -0,0 +1,7 @@ + + + + diff --git a/server/file-disk/src/test/java/com/pudonghot/ambition/file/oss/TestDriver.java b/server/file-disk/src/test/java/com/pudonghot/ambition/file/oss/TestDriver.java new file mode 100644 index 0000000..4de52be --- /dev/null +++ b/server/file-disk/src/test/java/com/pudonghot/ambition/file/oss/TestDriver.java @@ -0,0 +1,9 @@ +package com.pudonghot.ambition.file.oss; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 18, 2017 20:02:13 + */ +public class TestDriver { +} diff --git a/server/file-disk/src/test/java/com/pudonghot/ambition/file/oss/package-info.java b/server/file-disk/src/test/java/com/pudonghot/ambition/file/oss/package-info.java new file mode 100644 index 0000000..a809d31 --- /dev/null +++ b/server/file-disk/src/test/java/com/pudonghot/ambition/file/oss/package-info.java @@ -0,0 +1,8 @@ +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 24, 2015 4:00:39 PM + */ +package com.pudonghot.ambition.file.oss; diff --git a/server/file-disk/src/test/resources/log4j.properties b/server/file-disk/src/test/resources/log4j.properties new file mode 100644 index 0000000..ab579e5 --- /dev/null +++ b/server/file-disk/src/test/resources/log4j.properties @@ -0,0 +1,15 @@ +log4j.rootLogger=debug, console + +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.Encoding=utf-8 +log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%F:%L] %m%n + +log4j.appender.file=org.apache.log4j.DailyRollingFileAppender +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%F:%L] %m%n +log4j.appender.file.File=${log.dir}/${project.artifactId}-test.log +log4j.appender.file.Encoding=utf-8 + +log4j.logger.org.apache=info +log4j.logger.org.springframework=info \ No newline at end of file diff --git a/server/file-disk/src/test/resources/spring/config.properties b/server/file-disk/src/test/resources/spring/config.properties new file mode 100644 index 0000000..bf0ab79 --- /dev/null +++ b/server/file-disk/src/test/resources/spring/config.properties @@ -0,0 +1,22 @@ +# Config Dev + +oss.host.internal=oss-cn-hangzhou.aliyuncs.com + +# OSS SIT +#ali.access.key=fkNUAQTZkBFFEn8r +#ali.access.password=bPEEP8mxpGlMs7CL3EvQUGfTAPsm8i +#oss.bucket=echat-uat +# oss.folder=echat_uat/ +# oss.folder=echat_dev/ +#oss.bucket=echat-sit +#oss.folder=echat_sit/ + +# OSS Prod +ali.access.key=kiEjn4z5uVejyiPy +ali.access.password=sgNYMjJ7X9rGRP09ps2bPgqkjCEffN +oss.bucket=echat-prod +oss.folder=echat_prod/ + +db.url=jdbc:mysql://127.0.0.1:3308/echat_prod +db.user=echat_user +db.password=echat_user402 \ No newline at end of file diff --git a/server/file-disk/src/test/resources/spring/spring-echat-file-test.xml b/server/file-disk/src/test/resources/spring/spring-echat-file-test.xml new file mode 100644 index 0000000..db41795 --- /dev/null +++ b/server/file-disk/src/test/resources/spring/spring-echat-file-test.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/server/file-oss/pom.xml b/server/file-oss/pom.xml new file mode 100644 index 0000000..1fb4883 --- /dev/null +++ b/server/file-oss/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + file-oss + Ambition File OSS + jar + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + com.pudonghot.ambition + file-api + + + me.chyxion.tigon + tigon-sequence + + + com.aliyun.oss + aliyun-sdk-oss + + + org.springframework + spring-beans + + + org.projectlombok + lombok + + + + org.springframework + spring-context + provided + + + org.springframework + spring-test + test + + + junit + junit + test + + + org.apache.logging.log4j + log4j-slf4j-impl + test + + + org.apache.logging.log4j + log4j-core + test + + + org.slf4j + jcl-over-slf4j + test + + + diff --git a/server/file-oss/src/main/java/com/pudonghot/ambition/file/oss/OSSFileSupport.java b/server/file-oss/src/main/java/com/pudonghot/ambition/file/oss/OSSFileSupport.java new file mode 100644 index 0000000..91aba53 --- /dev/null +++ b/server/file-oss/src/main/java/com/pudonghot/ambition/file/oss/OSSFileSupport.java @@ -0,0 +1,360 @@ +package com.pudonghot.ambition.file.oss; + +import java.io.File; +import java.util.Map; +import java.util.Date; +import java.util.HashMap; +import java.io.InputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.io.OutputStream; +import lombok.extern.slf4j.Slf4j; +import java.io.FileOutputStream; +import com.aliyun.oss.OSSClient; +import com.aliyun.oss.OSSErrorCode; +import com.aliyun.oss.OSSException; +import java.io.ByteArrayInputStream; +import org.apache.commons.io.IOUtils; +import com.aliyun.oss.model.OSSObject; +import javax.annotation.PostConstruct; +import org.springframework.util.Assert; +import org.apache.commons.io.FileUtils; +import org.springframework.util.MimeType; +import org.apache.http.entity.ContentType; +import com.aliyun.oss.model.ObjectMetadata; +import org.apache.commons.lang3.StringUtils; +import java.io.UnsupportedEncodingException; +import org.apache.commons.lang3.CharEncoding; +import com.aliyun.oss.model.GetObjectRequest; +import org.springframework.util.MimeTypeUtils; +import com.pudonghot.ambition.file.AmbitionFileApi; +import com.aliyun.oss.model.CannedAccessControlList; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.springframework.beans.factory.annotation.Value; +import com.pudonghot.ambition.file.support.AbstractAmbitionFileApi; + +/** + * @version 0.0.4 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 24, 2015 1:23:00 PM + */ +@Slf4j +public class OSSFileSupport + extends AbstractAmbitionFileApi + implements AmbitionFileApi { + + @Value("${ali.oss.host:oss-cn-shanghai.aliyuncs.com}") + private String ossHost; + @Value("${ali.oss.host.internal:oss-cn-shanghai-internal.aliyuncs.com}") + private String ossHostInternal; + @Value("${ali.oss.bucket}") + private String ossBucket; + @Value("${ali.oss.folder:}") + private String ossFolder; + @Value("${ali.access.key}") + private String ossAccount; + @Value("${ali.access.secret}") + private String ossSecret; + protected OSSClient ossClient; + @Value("${site.file.base.path:}") + private String basePath; + private String ossBasePath; + private String ossInternalBasePath; + + @PostConstruct + void init() { + log.info("Init OSS [{}].", ossHostInternal); + ossClient = new OSSClient("http://" + ossHostInternal, ossAccount, ossSecret); + // create bucket if it does not exist + if (!ossClient.doesBucketExist(ossBucket)) { + log.info("OSS Bucket [{}] Does Not Exist, Try To Create.", ossBucket); + ossClient.createBucket(ossBucket); + ossClient.setBucketAcl(ossBucket, + CannedAccessControlList.PublicRead); + } + // create folder if does not exist + if (StringUtils.isNotBlank(ossFolder)) { + try { + if (!ossFolder.endsWith("/")) { + ossFolder += "/"; + } + ossClient.getObjectMetadata(ossBucket, ossFolder); + } + catch (OSSException e) { + if (OSSErrorCode.NO_SUCH_KEY.equals(e.getErrorCode())) { + log.info("OSS Foler [{}] Does Not Exist, Try To Create.", ossFolder); + InputStream bin = new ByteArrayInputStream(new byte[0]); + ObjectMetadata objectMeta = new ObjectMetadata(); + objectMeta.setContentLength(0); + try { + ossClient.putObject(ossBucket, ossFolder, bin, objectMeta); + } + finally { + IOUtils.closeQuietly(bin); + } + } + else { + throw e; + } + } + } + + ossBasePath = "http://" + ossBucket + "." + ossHost + "/" + ossFolder; + log.info("Init OSS Base Path [{}].", ossBasePath); + ossInternalBasePath = "http://" + ossBucket + "." + ossHostInternal + "/" + ossFolder; + log.info("Init OSS Internal Base Path [{}].", ossBasePath); + if (StringUtils.isBlank(basePath)) { + basePath = ossBasePath; + } + log.info("Init File Base Path [{}].", basePath); + } + + /** + * {@inheritDoc} + */ + @Override + public String upload(InputStream in, + long contentLength, + String folder, + String name, + String contentType, + String fileFormat, + String downloadName) { + Assert.state(in != null, "Upload Input Stream Could Not Be Null"); + log.info("Upload Input Stream To OSS With Folder [{}] Name [{}] Content Type [{}] Content Length [{}] Format [{}] Download Name [{}].", + folder, name, contentType, contentLength, fileFormat, downloadName); + boolean useFolder = true; + if (StringUtils.isNotBlank(name)) { + log.debug("Name [{}] Is Not Blank.", name); + if (name.startsWith(ossBasePath)) { + log.debug("Name Starts With Base Path [{}], Trim.", ossBasePath); + name = name.replaceFirst(ossBasePath, ""); + useFolder = false; + } + } + else { + name = idSeq.get(); + log.debug("No File Name Specified, Use UUID Name [{}].", name); + } + if (useFolder) { + log.debug("Name Does Not Start With Base Path [{}], Prepend Folder.", ossBasePath); + if (StringUtils.isNotBlank(folder)) { + log.debug("Custom Folder [{}] Given.", folder); + if (!folder.endsWith("/")) { + folder += "/"; + } + name = folder + name; + log.debug("Prepend Custom And Date Folder, Name Result [{}].", name); + } + else { + name = DateFormatUtils.format(new Date(), "yyyyMMdd") + "/" + name; + log.debug("No Custom Fould Found, Prepend Date Folder [{}].", name); + } + } + + ObjectMetadata objMeta = new ObjectMetadata(); + // content type + objMeta.setContentType(StringUtils.isNotBlank(contentType) ? + contentType : ContentType.DEFAULT_BINARY.toString()); + // custom file format + if (StringUtils.isNotBlank(fileFormat)) { + Map meta = new HashMap(); + meta.put(META_FORMAT, fileFormat); + objMeta.setUserMetadata(meta); + } + // download name + if (StringUtils.isNotBlank(downloadName)) { + try { + downloadName = URLEncoder.encode(downloadName, CharEncoding.UTF_8); + } + catch (UnsupportedEncodingException e) { + throw new IllegalStateException( + "Update File [" + name + "] Encde Download Name [" + + downloadName + "] Error Caused", e); + } +// String dispo = +// new StringBuilder("attachment; filename=\"") +// .append(downloadName) +// .append("\"; filename*=utf-8''") +// .append(downloadName) +// .toString(); + + String dispo = + new StringBuilder("attachment; filename*=utf-8''") + .append(downloadName) + .toString(); + log.debug("Set Upload File Content-Disposition [{}].", dispo); + objMeta.setContentDisposition(dispo); + } + objMeta.setContentLength(contentLength); + try { + ossClient.putObject(ossBucket, ossFolder + name, in, objMeta); + } + catch (Exception e) { + throw new IllegalStateException( + "Update File [" + name + "] Error Caused", e); + } + finally { + IOUtils.closeQuietly(in); + } + name = basePath() + name; + log.info("Upload File Result [{}].", name); + return name; + } + + /** + * {@inheritDoc} + */ + @Override + public File getFile(String name) { + OSSObject obj = null; + try { + obj = ossClient.getObject( + new GetObjectRequest(ossBucket, urlToName(name))); + } + catch (OSSException e) { + if (!OSSErrorCode.NO_SUCH_KEY.equals(e.getErrorCode())) { + log.info("Get File Error Caused.", e); + } + return null; + } + log.info("Get File Of [{}].", name); + ObjectMetadata md = obj.getObjectMetadata(); + Map userMd = md.getUserMetadata(); + String format = null; + if (userMd != null && !userMd.isEmpty()) { + format = userMd.get(META_FORMAT); + log.info("User Meta File Format [{}] Found.", format); + } + if (StringUtils.isBlank(format)) { + String contentType = md.getContentType(); + log.info("No User Meta File Format Found, Get Object Content Type [{}].", contentType); + if (StringUtils.isNotBlank(contentType)) { + MimeType mt = MimeTypeUtils.parseMimeType(contentType); + format = mt.getSubtype(); + log.info("Get Object Content Type Subtype [{}].", format); + } + } + + String fileName = idSeq.get(); + if (StringUtils.isNotBlank(format)) { + fileName += "." + format; + } + File file = new File(FileUtils.getTempDirectory(), fileName); + file.deleteOnExit(); + InputStream fin = null; + OutputStream fout = null; + try { + fin = obj.getObjectContent(); + fout = new FileOutputStream(file); + IOUtils.copy(fin, fout); + } + catch (IOException e) { + throw new RuntimeException( + "Download File [" + name + "] Error Caused", e); + } + finally { + IOUtils.closeQuietly(fin); + IOUtils.closeQuietly(fout); + } + return file; + } + + /** + * {@inheritDoc} + */ + @Override + public InputStream getInputStream(String name) { + return ossClient.getObject( + new GetObjectRequest(ossBucket, urlToName(name))) + .getObjectContent(); + } + + /** + * {@inheritDoc} + */ + @Override + public long getContentLength(String name) { + return ossClient.getObject( + new GetObjectRequest(ossBucket, urlToName(name))) + .getObjectMetadata().getContentLength(); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean exist(String name) { + try { + ossClient.getObjectMetadata(ossBucket, urlToName(name)); + return true; + } + catch (OSSException e) { + if (!OSSErrorCode.NO_SUCH_KEY.equals(e.getErrorCode())) { + log.info("Check OSS Object Exists Error Caused.", e); + } + return false; + } + } + + /** + * {@inheritDoc} + */ + @Override + public void delete(String name) { + if (StringUtils.isNotBlank(name)) { + log.info("Delete File [{}].", name); + ossClient.deleteObject(ossBucket, urlToName(name)); + } + else { + log.info("Delete File, File Name Or URL Is Blank, Ignore."); + } + } + + /** + * {@inheritDoc} + */ + @Override + public String basePath() { + return basePath; + } + + /** + * {@inheritDoc} + */ + @Override + public String getUrl(String folder, String name) { + return getUrl(folder, name, false); + } + + /** + * {@inheritDoc} + */ + @Override + public String getRawUrl(String folder, String name) { + return getUrl(folder, name, true); + } + + // -- + // private methods + String urlToName(String url) { + return ossFolder + url.replace(basePath, "") + .replace(ossBasePath, "") + .replace(ossInternalBasePath, ""); + } + + String getUrl(String folder, String name, boolean raw) { + String url = raw ? ossBasePath : basePath; + if (StringUtils.isNotBlank(folder)) { + url += folder; + } + if (!url.endsWith("/")) { + url += "/"; + } + url += name; + log.debug("Get Url [{}] Of Folder [{}] And Name [{}].", url, folder, name); + return url; + } +} diff --git a/server/file-oss/src/main/resources/spring/spring-ambtion-file-oss.xml b/server/file-oss/src/main/resources/spring/spring-ambtion-file-oss.xml new file mode 100644 index 0000000..8450e9e --- /dev/null +++ b/server/file-oss/src/main/resources/spring/spring-ambtion-file-oss.xml @@ -0,0 +1,7 @@ + + + + diff --git a/server/file-oss/src/test/java/com/pudonghot/ambition/file/oss/TestDriver.java b/server/file-oss/src/test/java/com/pudonghot/ambition/file/oss/TestDriver.java new file mode 100644 index 0000000..4de52be --- /dev/null +++ b/server/file-oss/src/test/java/com/pudonghot/ambition/file/oss/TestDriver.java @@ -0,0 +1,9 @@ +package com.pudonghot.ambition.file.oss; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 18, 2017 20:02:13 + */ +public class TestDriver { +} diff --git a/server/file-oss/src/test/java/com/pudonghot/ambition/file/oss/package-info.java b/server/file-oss/src/test/java/com/pudonghot/ambition/file/oss/package-info.java new file mode 100644 index 0000000..a809d31 --- /dev/null +++ b/server/file-oss/src/test/java/com/pudonghot/ambition/file/oss/package-info.java @@ -0,0 +1,8 @@ +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 24, 2015 4:00:39 PM + */ +package com.pudonghot.ambition.file.oss; diff --git a/server/file-oss/src/test/resources/log4j.properties b/server/file-oss/src/test/resources/log4j.properties new file mode 100644 index 0000000..ab579e5 --- /dev/null +++ b/server/file-oss/src/test/resources/log4j.properties @@ -0,0 +1,15 @@ +log4j.rootLogger=debug, console + +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.Encoding=utf-8 +log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%F:%L] %m%n + +log4j.appender.file=org.apache.log4j.DailyRollingFileAppender +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%F:%L] %m%n +log4j.appender.file.File=${log.dir}/${project.artifactId}-test.log +log4j.appender.file.Encoding=utf-8 + +log4j.logger.org.apache=info +log4j.logger.org.springframework=info \ No newline at end of file diff --git a/server/file-oss/src/test/resources/spring/config.properties b/server/file-oss/src/test/resources/spring/config.properties new file mode 100644 index 0000000..bf0ab79 --- /dev/null +++ b/server/file-oss/src/test/resources/spring/config.properties @@ -0,0 +1,22 @@ +# Config Dev + +oss.host.internal=oss-cn-hangzhou.aliyuncs.com + +# OSS SIT +#ali.access.key=fkNUAQTZkBFFEn8r +#ali.access.password=bPEEP8mxpGlMs7CL3EvQUGfTAPsm8i +#oss.bucket=echat-uat +# oss.folder=echat_uat/ +# oss.folder=echat_dev/ +#oss.bucket=echat-sit +#oss.folder=echat_sit/ + +# OSS Prod +ali.access.key=kiEjn4z5uVejyiPy +ali.access.password=sgNYMjJ7X9rGRP09ps2bPgqkjCEffN +oss.bucket=echat-prod +oss.folder=echat_prod/ + +db.url=jdbc:mysql://127.0.0.1:3308/echat_prod +db.user=echat_user +db.password=echat_user402 \ No newline at end of file diff --git a/server/file-oss/src/test/resources/spring/spring-echat-file-test.xml b/server/file-oss/src/test/resources/spring/spring-echat-file-test.xml new file mode 100644 index 0000000..db41795 --- /dev/null +++ b/server/file-oss/src/test/resources/spring/spring-echat-file-test.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/server/mapper/README.md b/server/mapper/README.md new file mode 100644 index 0000000..3be9d1b --- /dev/null +++ b/server/mapper/README.md @@ -0,0 +1 @@ +#umsapp-ota-db diff --git a/server/mapper/pom.xml b/server/mapper/pom.xml new file mode 100644 index 0000000..149e557 --- /dev/null +++ b/server/mapper/pom.xml @@ -0,0 +1,202 @@ + + + 4.0.0 + mapper + Ambition Mapper + ${packaging} + + + jar + + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + javax.servlet + javax.servlet-api + provided + + + com.pudonghot.ambition + model + + + me.chyxion.tigon + tigon-mybatis + + + me.chyxion.tigon + tigon-mybatis-redis-cache + + + me.chyxion.tigon + tigon-redis + + + org.mybatis + mybatis-spring + + + org.springframework + spring-jdbc + + + + com.alibaba + druid + + + + mysql + mysql-connector-java + + + + + javax.el + javax.el-api + test + + + org.springframework + spring-test + test + + + junit + junit + test + + + org.aspectj + aspectjrt + 1.8.0 + true + + + org.aspectj + aspectjweaver + true + + + cglib + cglib + test + + + org.apache.logging.log4j + log4j-slf4j-impl + test + + + org.apache.logging.log4j + log4j-core + test + + + org.slf4j + jcl-over-slf4j + test + + + + + + dev + + + dev + true + + + + war + 8088 + ${project.basedir}/.log + DEBUG + + + + ]]> + + + + + me.chyxion.tigon + tigon-codegen + + + me.chyxion.tigon + tigon-props-config + + + me.chyxion.tigon + tigon-webmvc-war + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-core + + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + + + + + + dep + + true + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + + + src/main/resources + + spring/spring-ambition-db.xml + mybatis/** + + + db/** + codegen/** + log4j2.xml + config_*.properties + + + + src/main/webapp + + **/** + + + + + + + diff --git a/server/mapper/run b/server/mapper/run new file mode 100755 index 0000000..83c1664 --- /dev/null +++ b/server/mapper/run @@ -0,0 +1,9 @@ +#!/bin/bash + +export MAVEN_OPTS="-noverify -agentpath:/usr/local/JRebel/6.3.2/lib/libjrebel64.dylib -Drebel.dirs=target -Drebel.disable_update=true -Ddev=true" +set JAVA_OPTS=$MAVEN_OPTS +mvn -Pdev clean tomcat7:run +unset JAVA_OPTS +unset MAVEN_OPTS + + diff --git a/server/mapper/src/main/java/com/pudonghot/ambition/mapper/AdminAuthFailedLogMapper.java b/server/mapper/src/main/java/com/pudonghot/ambition/mapper/AdminAuthFailedLogMapper.java new file mode 100644 index 0000000..d4ddcb2 --- /dev/null +++ b/server/mapper/src/main/java/com/pudonghot/ambition/mapper/AdminAuthFailedLogMapper.java @@ -0,0 +1,16 @@ +package com.pudonghot.ambition.mapper; + +import me.chyxion.tigon.mybatis.Table; +import me.chyxion.tigon.mybatis.BaseMapper; +import com.pudonghot.ambition.model.AdminAuthFailedLog; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 13, 2017 10:57:44 PM + */ +public interface AdminAuthFailedLogMapper extends BaseMapper { + +} diff --git a/server/mapper/src/main/java/com/pudonghot/ambition/mapper/AdminLoginLogMapper.java b/server/mapper/src/main/java/com/pudonghot/ambition/mapper/AdminLoginLogMapper.java new file mode 100644 index 0000000..617a2f1 --- /dev/null +++ b/server/mapper/src/main/java/com/pudonghot/ambition/mapper/AdminLoginLogMapper.java @@ -0,0 +1,17 @@ +package com.pudonghot.ambition.mapper; + +import me.chyxion.tigon.mybatis.Table; +import me.chyxion.tigon.mybatis.BaseMapper; +import com.pudonghot.ambition.model.AdminLoginLog; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 13, 2017 10:57:29 PM + */ +@Table("ph_admin_login_log") +public interface AdminLoginLogMapper extends BaseMapper { + +} diff --git a/server/mapper/src/main/java/com/pudonghot/ambition/mapper/AdminMapper.java b/server/mapper/src/main/java/com/pudonghot/ambition/mapper/AdminMapper.java new file mode 100644 index 0000000..acb36ff --- /dev/null +++ b/server/mapper/src/main/java/com/pudonghot/ambition/mapper/AdminMapper.java @@ -0,0 +1,16 @@ +package com.pudonghot.ambition.mapper; + +import me.chyxion.tigon.mybatis.Table; +import com.pudonghot.ambition.model.Admin; +import me.chyxion.tigon.mybatis.BaseMapper; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 11, 2017 1:31:44 PM + */ +public interface AdminMapper extends BaseMapper { + +} diff --git a/server/mapper/src/main/resources/codegen/config.properties b/server/mapper/src/main/resources/codegen/config.properties new file mode 100644 index 0000000..0dc0f6d --- /dev/null +++ b/server/mapper/src/main/resources/codegen/config.properties @@ -0,0 +1,6 @@ +# CodeGen Config +base.cols=enabled,note,date_created,date_updated,created_by,updated_by +base.package=com.pudonghot.ambition +super.base.model.name=M3 +super.base.model.full.name=me.chyxion.tigon.model.M3 +table.prefix=ph diff --git a/server/mapper/src/main/resources/config_dev.properties b/server/mapper/src/main/resources/config_dev.properties new file mode 100644 index 0000000..32e0fc5 --- /dev/null +++ b/server/mapper/src/main/resources/config_dev.properties @@ -0,0 +1,10 @@ +# Config Dev + +# Database +db.url=jdbc:mysql://127.0.0.1:43306/pudong_hot?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull +db.user=root +db.password=696@2^~)oZ@^#*Q + +redis.host=127.0.0.1 +redis.port=46379 +redis.password=0211 diff --git a/server/mapper/src/main/resources/log4j2_dev.xml b/server/mapper/src/main/resources/log4j2_dev.xml new file mode 100644 index 0000000..ff2fb0a --- /dev/null +++ b/server/mapper/src/main/resources/log4j2_dev.xml @@ -0,0 +1,38 @@ + + + + DEBUG + .logs + %-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t][%c{1}] %m%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/mapper/src/main/resources/mybatis/mappers/admin-auth-failed-log-mapper.xml b/server/mapper/src/main/resources/mybatis/mappers/admin-auth-failed-log-mapper.xml new file mode 100644 index 0000000..bdc76bf --- /dev/null +++ b/server/mapper/src/main/resources/mybatis/mappers/admin-auth-failed-log-mapper.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/server/mapper/src/main/resources/mybatis/mappers/admin-login-log-mapper.xml b/server/mapper/src/main/resources/mybatis/mappers/admin-login-log-mapper.xml new file mode 100644 index 0000000..ffaa3b1 --- /dev/null +++ b/server/mapper/src/main/resources/mybatis/mappers/admin-login-log-mapper.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/server/mapper/src/main/resources/mybatis/mappers/admin-mapper.xml b/server/mapper/src/main/resources/mybatis/mappers/admin-mapper.xml new file mode 100644 index 0000000..a12704b --- /dev/null +++ b/server/mapper/src/main/resources/mybatis/mappers/admin-mapper.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/server/mapper/src/main/resources/mybatis/mybatis-config.xml b/server/mapper/src/main/resources/mybatis/mybatis-config.xml new file mode 100644 index 0000000..89dd71e --- /dev/null +++ b/server/mapper/src/main/resources/mybatis/mybatis-config.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/mapper/src/main/resources/spring/spring-ambition-db.xml b/server/mapper/src/main/resources/spring/spring-ambition-db.xml new file mode 100644 index 0000000..536d67b --- /dev/null +++ b/server/mapper/src/main/resources/spring/spring-ambition-db.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/server/mapper/src/main/resources/spring/spring-app.xml b/server/mapper/src/main/resources/spring/spring-app.xml new file mode 100644 index 0000000..d0effba --- /dev/null +++ b/server/mapper/src/main/resources/spring/spring-app.xml @@ -0,0 +1,10 @@ + + + + diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AdminAuthFailedLogMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AdminAuthFailedLogMapperTest.java new file mode 100644 index 0000000..849c842 --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AdminAuthFailedLogMapperTest.java @@ -0,0 +1,77 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import com.pudonghot.ambition.mapper.AdminAuthFailedLogMapper; +import com.pudonghot.ambition.model.AdminAuthFailedLog; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 13, 2017 10:57:44 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class AdminAuthFailedLogMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private AdminAuthFailedLogMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + AdminAuthFailedLog m = new AdminAuthFailedLog(); + String id = "id"; + // m.setId(id); + m.setDateCreated(new Date()); + m.setLoginId("s"); + m.setPassword("s"); + m.setIp("s"); + m.setUserAgent("s"); + m.setExt("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + AdminAuthFailedLog m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals("s", m.getLoginId()); + Assert.assertEquals("s", m.getPassword()); + Assert.assertEquals("s", m.getIp()); + Assert.assertEquals("s", m.getUserAgent()); + Assert.assertEquals("s", m.getExt()); + // update + m.setDateUpdated(new Date()); + m.setLoginId("S"); + m.setPassword("S"); + m.setIp("S"); + m.setUserAgent("S"); + m.setExt("S"); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals("S", m.getLoginId()); + Assert.assertEquals("S", m.getPassword()); + Assert.assertEquals("S", m.getIp()); + Assert.assertEquals("S", m.getUserAgent()); + Assert.assertEquals("S", m.getExt()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AdminLoginLogMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AdminLoginLogMapperTest.java new file mode 100644 index 0000000..4fc96e7 --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AdminLoginLogMapperTest.java @@ -0,0 +1,73 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import com.pudonghot.ambition.mapper.AdminLoginLogMapper; +import com.pudonghot.ambition.model.AdminLoginLog; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 13, 2017 10:57:29 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class AdminLoginLogMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private AdminLoginLogMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + AdminLoginLog m = new AdminLoginLog(); + String id = "id"; + // m.setId(id); + m.setDateCreated(new Date()); + m.setAdminId(1L); + m.setUserAgent("s"); + m.setIp("s"); + m.setExt("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + AdminLoginLog m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals(1L, m.getAdminId()); + Assert.assertEquals("s", m.getUserAgent()); + Assert.assertEquals("s", m.getIp()); + Assert.assertEquals("s", m.getExt()); + // update + m.setDateUpdated(new Date()); + m.setAdminId(2L); + m.setUserAgent("S"); + m.setIp("S"); + m.setExt("S"); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals(2L, m.getAdminId()); + Assert.assertEquals("S", m.getUserAgent()); + Assert.assertEquals("S", m.getIp()); + Assert.assertEquals("S", m.getExt()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AdminMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AdminMapperTest.java new file mode 100644 index 0000000..ddcd867 --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AdminMapperTest.java @@ -0,0 +1,49 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import com.pudonghot.ambition.model.Admin; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 11, 2017 1:31:44 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class AdminMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private AdminMapper mapper; + @Autowired + private AppMapper appMapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + Admin m = new Admin(); + m.setDateCreated(new Date()); + m.setLoginId("s"); + m.setPasswordSalt("s"); + m.setPassword("s"); + m.setMobile("s"); + m.setEmail("s"); + m.setName("s"); + m.setGender("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + } + + @Test + public void testFindNextId() { + System.err.println(appMapper.nextId()); + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AppAuthFailedLogMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AppAuthFailedLogMapperTest.java new file mode 100644 index 0000000..58a62cb --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AppAuthFailedLogMapperTest.java @@ -0,0 +1,87 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 13, 2017 10:58:53 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class AppAuthFailedLogMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private AppAuthFailedLogMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + AppAuthFailedLog m = new AppAuthFailedLog(); + String id = "id"; + // m.setId(id); + m.setDateCreated(new Date()); + m.setMobile("s"); + m.setPassword("s"); + m.setPlatform("s"); + m.setDeviceId("s"); + m.setDeviceName("s"); + m.setOsVersion("s"); + m.setIp("s"); + m.setExt("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + AppAuthFailedLog m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals("s", m.getMobile()); + Assert.assertEquals("s", m.getPassword()); + Assert.assertEquals("s", m.getPlatform()); + Assert.assertEquals("s", m.getDeviceId()); + Assert.assertEquals("s", m.getDeviceName()); + Assert.assertEquals("s", m.getOsVersion()); + Assert.assertEquals("s", m.getIp()); + Assert.assertEquals("s", m.getExt()); + // update + m.setDateUpdated(new Date()); + m.setMobile("S"); + m.setPassword("S"); + m.setPlatform("S"); + m.setDeviceId("S"); + m.setDeviceName("S"); + m.setOsVersion("S"); + m.setIp("S"); + m.setExt("S"); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals("S", m.getMobile()); + Assert.assertEquals("S", m.getPassword()); + Assert.assertEquals("S", m.getPlatform()); + Assert.assertEquals("S", m.getDeviceId()); + Assert.assertEquals("S", m.getDeviceName()); + Assert.assertEquals("S", m.getOsVersion()); + Assert.assertEquals("S", m.getIp()); + Assert.assertEquals("S", m.getExt()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AppLoginLogMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AppLoginLogMapperTest.java new file mode 100644 index 0000000..54e3e9e --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AppLoginLogMapperTest.java @@ -0,0 +1,83 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 13, 2017 10:58:41 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class AppLoginLogMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private AppLoginLogMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + AppLoginLog m = new AppLoginLog(); + String id = "id"; + // m.setId(id); + m.setDateCreated(new Date()); + m.setUserId(1L); + m.setPlatform("s"); + m.setDeviceId("s"); + m.setDeviceName("s"); + m.setOsVersion("s"); + m.setIp("s"); + m.setExt("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + AppLoginLog m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals(1L, m.getUserId()); + Assert.assertEquals("s", m.getPlatform()); + Assert.assertEquals("s", m.getDeviceId()); + Assert.assertEquals("s", m.getDeviceName()); + Assert.assertEquals("s", m.getOsVersion()); + Assert.assertEquals("s", m.getIp()); + Assert.assertEquals("s", m.getExt()); + // update + m.setDateUpdated(new Date()); + m.setUserId(2L); + m.setPlatform("S"); + m.setDeviceId("S"); + m.setDeviceName("S"); + m.setOsVersion("S"); + m.setIp("S"); + m.setExt("S"); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals(2L, m.getUserId()); + Assert.assertEquals("S", m.getPlatform()); + Assert.assertEquals("S", m.getDeviceId()); + Assert.assertEquals("S", m.getDeviceName()); + Assert.assertEquals("S", m.getOsVersion()); + Assert.assertEquals("S", m.getIp()); + Assert.assertEquals("S", m.getExt()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AppLogoutLogMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AppLogoutLogMapperTest.java new file mode 100644 index 0000000..5463dc8 --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AppLogoutLogMapperTest.java @@ -0,0 +1,67 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 13, 2017 10:58:46 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class AppLogoutLogMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private AppLogoutLogMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + AppLogoutLog m = new AppLogoutLog(); + String id = "id"; + // m.setId(id); + m.setDateCreated(new Date()); + m.setUserId(1L); + m.setIp("s"); + m.setExt("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + AppLogoutLog m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals(1L, m.getUserId()); + Assert.assertEquals("s", m.getIp()); + Assert.assertEquals("s", m.getExt()); + // update + m.setDateUpdated(new Date()); + m.setUserId(2L); + m.setIp("S"); + m.setExt("S"); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals(2L, m.getUserId()); + Assert.assertEquals("S", m.getIp()); + Assert.assertEquals("S", m.getExt()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AuthLogMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AuthLogMapperTest.java new file mode 100644 index 0000000..08263c1 --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/AuthLogMapperTest.java @@ -0,0 +1,24 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 10, 2017 1:30:16 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class AuthLogMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + + @Test + public void mapperTest() { + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/ContactMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/ContactMapperTest.java new file mode 100644 index 0000000..ffa0c6b --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/ContactMapperTest.java @@ -0,0 +1,83 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Apr 9, 2017 3:49:19 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class ContactMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private ContactMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + Contact m = new Contact(); + // String id = "id"; + // m.setId(id); + m.setDateCreated(new Date()); + m.setCorpId(1); + m.setMobile("s"); + m.setName("s"); + m.setNamePinyin("s"); + m.setGender("s"); + m.setEmail("s"); + m.setWechat("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + Contact m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals(1, m.getCorpId()); + Assert.assertEquals("s", m.getMobile()); + Assert.assertEquals("s", m.getName()); + Assert.assertEquals("s", m.getNamePinyin()); + Assert.assertEquals("s", m.getGender()); + Assert.assertEquals("s", m.getEmail()); + Assert.assertEquals("s", m.getWechat()); + // update + m.setDateUpdated(new Date()); + m.setCorpId(2); + m.setMobile("S"); + m.setName("S"); + m.setNamePinyin("S"); + m.setGender("S"); + m.setEmail("S"); + m.setWechat("S"); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals(2, m.getCorpId()); + Assert.assertEquals("S", m.getMobile()); + Assert.assertEquals("S", m.getName()); + Assert.assertEquals("S", m.getNamePinyin()); + Assert.assertEquals("S", m.getGender()); + Assert.assertEquals("S", m.getEmail()); + Assert.assertEquals("S", m.getWechat()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/CorpMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/CorpMapperTest.java new file mode 100644 index 0000000..ce04b3c --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/CorpMapperTest.java @@ -0,0 +1,26 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 10, 2017 1:30:54 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class CorpMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private CorpMapper mapper; + + @Test + public void mapperTest() { + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/DeptContactMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/DeptContactMapperTest.java new file mode 100644 index 0000000..f3e3f1c --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/DeptContactMapperTest.java @@ -0,0 +1,63 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Test; +import java.util.Date; +import org.junit.Assert; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Apr 9, 2017 3:49:09 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class DeptContactMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private DeptContactMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + DeptContact m = new DeptContact(); + // String id = "id"; + // m.setId(id); + m.setDateCreated(new Date()); + m.setDeptId(1L); + m.setContactId(1L); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + DeptContact m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals(1, m.getDeptId()); + Assert.assertEquals(1, m.getContactId()); + // update + m.setDateUpdated(new Date()); + m.setDeptId(2); + m.setContactId(2); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals(2, m.getDeptId()); + Assert.assertEquals(2, m.getContactId()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/DeptMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/DeptMapperTest.java new file mode 100644 index 0000000..003ec36 --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/DeptMapperTest.java @@ -0,0 +1,59 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Apr 9, 2017 3:49:04 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class DeptMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private DeptMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + Dept m = new Dept(); + // String id = "id"; + // m.setId(id); + m.setDateCreated(new Date()); + m.setName("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + Dept m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals("s", m.getName()); + // update + m.setDateUpdated(new Date()); + m.setName("S"); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals("S", m.getName()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/DeptPathMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/DeptPathMapperTest.java new file mode 100644 index 0000000..9866fd0 --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/DeptPathMapperTest.java @@ -0,0 +1,67 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Apr 9, 2017 3:49:13 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class DeptPathMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private DeptPathMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + DeptPath m = new DeptPath(); + // String id = "id"; + // m.setId(id); + m.setDateCreated(new Date()); + m.setAncestor(1L); + m.setDescendant(1L); + m.setPathLength(1); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + DeptPath m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals(1, m.getAncestor()); + Assert.assertEquals(1, m.getDescendant()); + Assert.assertEquals(1, m.getPathLength()); + // update + m.setDateUpdated(new Date()); + m.setAncestor(2); + m.setDescendant(2); + m.setPathLength(2); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals(2, m.getAncestor()); + Assert.assertEquals(2, m.getDescendant()); + Assert.assertEquals(2, m.getPathLength()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/EmployeeMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/EmployeeMapperTest.java new file mode 100644 index 0000000..f0cc410 --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/EmployeeMapperTest.java @@ -0,0 +1,26 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 10, 2017 1:31:13 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class EmployeeMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private EmployeeMapper mapper; + + @Test + public void mapperTest() { + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/SiteVisitLogMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/SiteVisitLogMapperTest.java new file mode 100644 index 0000000..d3055ca --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/SiteVisitLogMapperTest.java @@ -0,0 +1,65 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Apr 9, 2017 9:07:23 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class SiteVisitLogMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private SiteVisitLogMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + SiteVisitLog m = new SiteVisitLog(); + m.setDateCreated(new Date()); + m.setCorpId(1L); + m.setEmployeeId(1L); + m.setUrl("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + SiteVisitLog m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals(1, m.getCorpId()); + Assert.assertEquals(1, m.getEmployeeId()); + Assert.assertEquals("s", m.getUrl()); + // update + m.setDateUpdated(new Date()); + m.setCorpId(2); + m.setEmployeeId(2); + m.setUrl("S"); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals(2, m.getCorpId()); + Assert.assertEquals(2, m.getEmployeeId()); + Assert.assertEquals("S", m.getUrl()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/TinyAppGroupMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/TinyAppGroupMapperTest.java new file mode 100644 index 0000000..fd1637a --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/TinyAppGroupMapperTest.java @@ -0,0 +1,26 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 10, 2017 1:31:41 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class TinyAppGroupMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private TinyAppGroupMapper mapper; + + @Test + public void mapperTest() { + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/TinyAppMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/TinyAppMapperTest.java new file mode 100644 index 0000000..fc1d60a --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/TinyAppMapperTest.java @@ -0,0 +1,26 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 10, 2017 1:31:25 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class TinyAppMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private TinyAppMapper mapper; + + @Test + public void mapperTest() { + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/TinyAppVisitLogMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/TinyAppVisitLogMapperTest.java new file mode 100644 index 0000000..cbec22c --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/TinyAppVisitLogMapperTest.java @@ -0,0 +1,69 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Assert; +import org.junit.Test; +import java.util.Date; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Apr 9, 2017 9:07:30 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class TinyAppVisitLogMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private TinyAppVisitLogMapper mapper; + + @Test + public void mapperTest() { + // String id = String.valueOf(new Date().getTime()); + // init model + TinyAppVisitLog m = new TinyAppVisitLog(); + m.setDateCreated(new Date()); + m.setCorpId(1L); + m.setEmployeeId(1L); + m.setTinyAppId(1L); + m.setUrl("s"); + mapper.insert(m); + Assert.assertTrue(mapper.list(null).size() > 0); + /* + // Your Test Logics + TinyAppVisitLog m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertEquals(1, m.getCorpId()); + Assert.assertEquals(1, m.getEmployeeId()); + Assert.assertEquals(1, m.getTinyAppId()); + Assert.assertEquals("s", m.getUrl()); + // update + m.setDateUpdated(new Date()); + m.setCorpId(2); + m.setEmployeeId(2); + m.setTinyAppId(2); + m.setUrl("S"); + mapper.update(m); + m1 = mapper.find(id); + // asserts + Assert.assertEquals(id, m1.getId()); + Assert.assertNotNull(m1.getDateUpdated()); + Assert.assertEquals(2, m.getCorpId()); + Assert.assertEquals(2, m.getEmployeeId()); + Assert.assertEquals(2, m.getTinyAppId()); + Assert.assertEquals("S", m.getUrl()); + // list + Assert.assertTrue(mapper.list(null).size() > 0); + // delete + mapper.delete(id); + m1 = mapper.find(id); + Assert.assertNull(m1); + */ + } +} diff --git a/server/mapper/src/test/java/com/pudonghot/ambition/mapper/UserMapperTest.java b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/UserMapperTest.java new file mode 100644 index 0000000..92c0ddb --- /dev/null +++ b/server/mapper/src/test/java/com/pudonghot/ambition/mapper/UserMapperTest.java @@ -0,0 +1,27 @@ +package com.pudonghot.ambition.mapper; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 5, 2017 5:09:42 PM + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath*:spring/spring-*.xml") +public class UserMapperTest extends AbstractTransactionalJUnit4SpringContextTests { + @Autowired + private UserMapper mapper; + + @Test + public void mapperTest() { + System.out.println(mapper.list(null)); + } +} diff --git a/server/mapper/src/test/resources/spring/config.properties b/server/mapper/src/test/resources/spring/config.properties new file mode 100644 index 0000000..3af6a93 --- /dev/null +++ b/server/mapper/src/test/resources/spring/config.properties @@ -0,0 +1,20 @@ + +# MySQL +db.url=jdbc:mysql://127.0.0.1:43306/pudong_hot?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull +db.user=root +db.password=696@2^~)oZ@^#*Q + +# Redis +redis.host=127.0.0.1 +redis.port=46379 +redis.password=0211 + +# AliYun Account +ali.access.key=K4oM0OVHbLS1cInv +ali.access.secret=qjweLLtV1YLoAJQWI3CwFytG78UkTQ + +# OSS +ali.oss.bucket=ambition +ali.oss.host.internal=oss-cn-shanghai.aliyuncs.com + +ambition.site_visit.url=http://101.37.82.164/site-visit \ No newline at end of file diff --git a/server/mapper/src/test/resources/spring/spring-test.xml b/server/mapper/src/test/resources/spring/spring-test.xml new file mode 100644 index 0000000..ba58daa --- /dev/null +++ b/server/mapper/src/test/resources/spring/spring-test.xml @@ -0,0 +1,10 @@ + + + + diff --git a/server/model/README.md b/server/model/README.md new file mode 100644 index 0000000..a330497 --- /dev/null +++ b/server/model/README.md @@ -0,0 +1 @@ +#umsapp-ota-data-model diff --git a/server/model/pom.xml b/server/model/pom.xml new file mode 100644 index 0000000..e38b691 --- /dev/null +++ b/server/model/pom.xml @@ -0,0 +1,152 @@ + + + 4.0.0 + model + Ambition Data Model + ${packaging} + + + jar + provided + + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + me.chyxion.tigon + tigon-model + + + org.hibernate + hibernate-validator + + + commons-beanutils + commons-beanutils + + + me.chyxion.tigon + tigon-webmvc-war + ${tigon.webmvc.scrope} + + + org.projectlombok + lombok + + + + org.springframework + spring-test + test + + + junit + junit + test + + + + + + dev + + + dev + true + + + + war + compile + 8088 + DEBUG + ${project.basedir}/.logs + + + + ]]> + + + + + javax.servlet + javax.servlet-api + provided + + + javax.el + javax.el-api + provided + + + me.chyxion.tigon + tigon-codegen + + + me.chyxion.tigon + tigon-props-config + + + com.alibaba + druid + + + mysql + mysql-connector-java + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-core + + + org.slf4j + jcl-over-slf4j + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + + + + + + dep + + true + + + + + src/main/resources + + **/** + + + + src/main/webapp + + **/** + + + + + + + diff --git a/server/model/run b/server/model/run new file mode 100755 index 0000000..83c1664 --- /dev/null +++ b/server/model/run @@ -0,0 +1,9 @@ +#!/bin/bash + +export MAVEN_OPTS="-noverify -agentpath:/usr/local/JRebel/6.3.2/lib/libjrebel64.dylib -Drebel.dirs=target -Drebel.disable_update=true -Ddev=true" +set JAVA_OPTS=$MAVEN_OPTS +mvn -Pdev clean tomcat7:run +unset JAVA_OPTS +unset MAVEN_OPTS + + diff --git a/server/model/src/main/java/com/pudonghot/ambition/common/Constants.java b/server/model/src/main/java/com/pudonghot/ambition/common/Constants.java new file mode 100644 index 0000000..df70107 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/common/Constants.java @@ -0,0 +1,21 @@ +package com.pudonghot.ambition.common; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 10, 2017 19:26:24 + */ +public interface Constants { + String PHONE = "PHONE"; + String PAD = "PAD"; + String Android = "Android"; + String iOS = "iOS"; + String AndroidPhone = "AndroidPhone"; + String AndroidPad = "AndroidPad"; + String iPhone = "iPhone"; + String iPad = "iPad"; + String GENDER_M = "M"; + String GENDER_F = "F"; + String GENDER_REGEXP = "^M|F$"; + String PLATFORM_REGEXP = "^iPhone|iPad|AndroidPhone|AndroidPad$"; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AbstractAccountFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AbstractAccountFormForCreate.java new file mode 100644 index 0000000..cdca555 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AbstractAccountFormForCreate.java @@ -0,0 +1,23 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class AbstractAccountFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + @NotBlank + @Length(max = 36) + protected String password; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AdminAuthFailedLogFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AdminAuthFailedLogFormForCreate.java new file mode 100644 index 0000000..0a910a6 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AdminAuthFailedLogFormForCreate.java @@ -0,0 +1,30 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import me.chyxion.tigon.form.BaseForm; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 16, 2016 10:04:11 AM + */ +@Getter +@Setter +public class AdminAuthFailedLogFormForCreate extends BaseForm { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + private String loginId; + @NotBlank + private String password; + @NotBlank + private String userAgent; + @NotBlank + private String ip; + private String ext; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AdminFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AdminFormForCreate.java new file mode 100644 index 0000000..d371658 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AdminFormForCreate.java @@ -0,0 +1,40 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.Pattern; +import org.hibernate.validator.constraints.Email; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; +import static com.pudonghot.ambition.common.Constants.GENDER_REGEXP; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class AdminFormForCreate extends AbstractAccountFormForCreate { + private static final long serialVersionUID = 1L; + + @NotBlank + @Length(max = 36) + private String loginId; + @NotBlank + @Length(max = 36) + private String name; + @NotBlank + @Pattern(regexp = GENDER_REGEXP) + private String gender; + @NotBlank + // @Pattern(regexp = MOBILE_REGEXP) + private String mobile; + @Email + @NotBlank + @Length(max = 64) + private String email; + +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AdminLoginLogFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AdminLoginLogFormForCreate.java new file mode 100644 index 0000000..36e173c --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AdminLoginLogFormForCreate.java @@ -0,0 +1,28 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import me.chyxion.tigon.form.FC2; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class AdminLoginLogFormForCreate extends FC2 { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + private String adminId; + @NotBlank + private String userAgent; + @NotBlank + private String ip; + private String ext; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/ApiFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/ApiFormForCreate.java new file mode 100644 index 0000000..4165809 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/ApiFormForCreate.java @@ -0,0 +1,31 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.URL; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class ApiFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long apiGroupId; + @NotBlank + @Length(max = 36) + private String name; + @URL + @NotBlank + private String api; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/ApiGroupFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/ApiGroupFormForCreate.java new file mode 100644 index 0000000..875935e --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/ApiGroupFormForCreate.java @@ -0,0 +1,27 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class ApiGroupFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 36) + private String name; + @NotBlank + @Length(max = 36) + private String loginType; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AppAuthFailedLogFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppAuthFailedLogFormForCreate.java new file mode 100644 index 0000000..af8d0a0 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppAuthFailedLogFormForCreate.java @@ -0,0 +1,38 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.Pattern; +import com.pudonghot.ambition.common.Constants; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 16, 2016 10:04:11 AM + */ +@Getter +@Setter +public class AppAuthFailedLogFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + private String mobile; + @NotBlank + private String password; + @NotBlank + @Pattern(regexp = Constants.PLATFORM_REGEXP) + private String platform; + @NotBlank + private String deviceId; + @NotBlank + private String deviceName; + @NotBlank + private String osVersion; + @NotBlank + private String ip; + private String ext; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AppConfigFooterItemFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppConfigFooterItemFormForCreate.java new file mode 100644 index 0000000..9c1e486 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppConfigFooterItemFormForCreate.java @@ -0,0 +1,48 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.Min; +import com.pudonghot.ambition.model.Rgba; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; +import org.hibernate.validator.constraints.NotEmpty; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Jun 5, 2016 7:33:25 PM + */ +@Getter +@Setter +public class AppConfigFooterItemFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long appConfigId; + @NotBlank + @Length(max = 36) + private String name; + @NotNull + private Rgba textColorActive; + @NotNull + private Rgba textColorNormal; + @NotBlank + @Length(max = 16) + private String text; + // @URL + @NotBlank + private String action; + @Min(0) + private int sort; + @NotEmpty + private byte[] iconNormal; + @NotEmpty + private byte[] iconActive; + @NotNull + private boolean active; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AppConfigFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppConfigFormForCreate.java new file mode 100644 index 0000000..dd875ac --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppConfigFormForCreate.java @@ -0,0 +1,37 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import com.pudonghot.ambition.model.Rgba; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Aug 1, 2016 9:40:28 AM + */ +@Getter +@Setter +public class AppConfigFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + @NotBlank + @Length(max = 36) + private String name; + @NotNull + private Rgba themeColor; + @NotNull + private Rgba headerBgColor; + @NotNull + private Rgba headerTextColor; + @NotNull + private Rgba footerTopBorderColor; + @NotNull + private Rgba footerBgColor; + private byte[] headerBgImg; + private byte[] footerBgImg; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AppFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppFormForCreate.java new file mode 100644 index 0000000..174e62d --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppFormForCreate.java @@ -0,0 +1,32 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import me.chyxion.tigon.form.BaseFormForCreateApi; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:01:35 PM + */ +@Getter +@Setter +public class AppFormForCreate + extends BaseFormForCreate + implements BaseFormForCreateApi { + + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 36) + private String name; + private Long apiGroupId; + private Long appConfigId; + private Long splashId; + private Long themeId; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AppLoginLogFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppLoginLogFormForCreate.java new file mode 100644 index 0000000..67c8466 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppLoginLogFormForCreate.java @@ -0,0 +1,38 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import me.chyxion.tigon.form.FC1; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import com.pudonghot.ambition.common.Constants; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class AppLoginLogFormForCreate extends FC1 { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long userId; + @NotBlank + @Pattern(regexp = Constants.PLATFORM_REGEXP) + private String platform; + @NotBlank + private String deviceId; + @NotBlank + private String deviceName; + @NotBlank + private String osVersion; + @NotBlank + private String ip; + private String ext; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AppLogoutFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppLogoutFormForCreate.java new file mode 100644 index 0000000..374c553 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppLogoutFormForCreate.java @@ -0,0 +1,31 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.NotBlank; + +import javax.validation.constraints.NotNull; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class AppLogoutFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long userId; + @NotBlank + private String type; + @NotBlank + private String userAgent; + @NotBlank + private String ip; + private String ext; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AppVersionAppointFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppVersionAppointFormForCreate.java new file mode 100644 index 0000000..9957cec --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppVersionAppointFormForCreate.java @@ -0,0 +1,38 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:01:35 PM + */ +@Getter +@Setter +public class AppVersionAppointFormForCreate + extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long appId; + @NotBlank + private String platform; + @NotBlank + @Length(max = 36) + private String name; + @NotBlank + // @Pattern(regexp = MOBILE_REGEXP) + private String mobile; + @NotNull + private Long versionId; + +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AppVersionFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppVersionFormForCreate.java new file mode 100644 index 0000000..1186132 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppVersionFormForCreate.java @@ -0,0 +1,32 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +import javax.validation.constraints.NotNull; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:01:35 PM + */ +@Getter +@Setter +public class AppVersionFormForCreate + extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + @NotNull + private Long appId; + @Length(max = 36) + private String appName; + @NotBlank + private String platform; + private String releaseNote; + private String downloadName; + private boolean override; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/AppVersionGroupFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppVersionGroupFormForCreate.java new file mode 100644 index 0000000..b9ec864 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/AppVersionGroupFormForCreate.java @@ -0,0 +1,33 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:01:35 PM + */ +@Getter +@Setter +public class AppVersionGroupFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 36) + private String name; + @NotNull + private Long appId; + @NotNull + private Long androidPhoneVersionId; + @NotNull + private Long iphoneVersionId; + private Long androidPadVersionId; + private Long ipadVersionId; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/BaseFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/BaseFormForCreate.java new file mode 100644 index 0000000..033ada6 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/BaseFormForCreate.java @@ -0,0 +1,18 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import me.chyxion.tigon.form.FC2; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Dec 10, 2015 10:14:47 AM + */ +@Getter +@Setter +public class BaseFormForCreate extends FC2 { + private static final long serialVersionUID = 1L; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/ContactFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/ContactFormForCreate.java new file mode 100644 index 0000000..39c7297 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/ContactFormForCreate.java @@ -0,0 +1,39 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import com.pudonghot.ambition.common.Constants; +import org.hibernate.validator.constraints.Email; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 29, 2017 23:07:32 + */ +@Getter +@Setter +public class ContactFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long corpId; + @NotNull + private Long deptId; + private int sort; + @NotBlank + @Length(max = 36) + private String name; + @NotBlank + private String mobile; + @NotBlank + @Pattern(regexp = Constants.GENDER_REGEXP) + private String gender; + @Email + private String email; + private String wechat; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/CorpFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/CorpFormForCreate.java new file mode 100644 index 0000000..7c86c4a --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/CorpFormForCreate.java @@ -0,0 +1,31 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 10, 2017 16:19:57 + */ +@Getter +@Setter +public class CorpFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 64) + private String name; + @NotBlank + @Length(max = 36) + private String shortName; + private Long defaultTinyAppGroupId; + private boolean useTinyAppGroup; + private Long apiGroupId; + private Long appConfigId; + private Long themeId; + private Long splashId; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/DeptFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/DeptFormForCreate.java new file mode 100644 index 0000000..4282fa3 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/DeptFormForCreate.java @@ -0,0 +1,27 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 10, 2017 16:19:57 + */ +@Getter +@Setter +public class DeptFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long corpId; + private Long ancestor; + @NotBlank + @Length(max = 36) + private String name; + private int sort; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/EmployeeFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/EmployeeFormForCreate.java new file mode 100644 index 0000000..9379395 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/EmployeeFormForCreate.java @@ -0,0 +1,36 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import me.chyxion.tigon.form.BaseFormForCreateApi; +import org.hibernate.validator.constraints.NotBlank; +import static com.pudonghot.ambition.common.Constants.GENDER_REGEXP; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:01:35 PM + */ +@Getter +@Setter +public class EmployeeFormForCreate + extends BaseFormForCreate + implements BaseFormForCreateApi { + + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long corpId; + @NotBlank + private String mobile; + @NotBlank + private String name; + @NotBlank + @Pattern(regexp = GENDER_REGEXP) + private String gender; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/SplashFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/SplashFormForCreate.java new file mode 100644 index 0000000..ab9f7c3 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/SplashFormForCreate.java @@ -0,0 +1,25 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.Min; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 10, 2017 16:19:57 + */ +@Getter +@Setter +public class SplashFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 36) + private String name; + @Min(0) + private long duration; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/ThemeFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/ThemeFormForCreate.java new file mode 100644 index 0000000..f0c9dde --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/ThemeFormForCreate.java @@ -0,0 +1,12 @@ +package com.pudonghot.ambition.form.create; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +public class ThemeFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/TinyAppFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/TinyAppFormForCreate.java new file mode 100644 index 0000000..3d81f80 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/TinyAppFormForCreate.java @@ -0,0 +1,32 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.URL; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 10, 2017 16:19:57 + */ +@Getter +@Setter +public class TinyAppFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long corpId; + private Long groupId; + private int sort; + @NotBlank + @Length(max = 36) + private String name; + @URL + @NotBlank + @Length(max = 2048) + private String url; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/TinyAppGroupFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/TinyAppGroupFormForCreate.java new file mode 100644 index 0000000..ae04495 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/TinyAppGroupFormForCreate.java @@ -0,0 +1,26 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 10, 2017 16:19:57 + */ +@Getter +@Setter +public class TinyAppGroupFormForCreate extends BaseFormForCreate { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long corpId; + private int sort; + @NotBlank + @Length(max = 36) + private String name; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/create/UserFormForCreate.java b/server/model/src/main/java/com/pudonghot/ambition/form/create/UserFormForCreate.java new file mode 100644 index 0000000..f408c10 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/create/UserFormForCreate.java @@ -0,0 +1,23 @@ +package com.pudonghot.ambition.form.create; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class UserFormForCreate extends AbstractAccountFormForCreate { + private static final long serialVersionUID = 1L; + + @NotBlank + // @Pattern(regexp = MOBILE_REGEXP) + private String mobile; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/AbstractAccountFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/AbstractAccountFormForUpdate.java new file mode 100644 index 0000000..dc57398 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/AbstractAccountFormForUpdate.java @@ -0,0 +1,24 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import me.chyxion.tigon.format.annotation.EmptyToNull; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class AbstractAccountFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + @EmptyToNull + @Length(max = 36) + protected String password; + protected String passwordSalt; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/AdminFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/AdminFormForUpdate.java new file mode 100644 index 0000000..8183b55 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/AdminFormForUpdate.java @@ -0,0 +1,36 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.Pattern; +import org.hibernate.validator.constraints.Email; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; +import static com.pudonghot.ambition.common.Constants.GENDER_REGEXP; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class AdminFormForUpdate extends AbstractAccountFormForUpdate { + private static final long serialVersionUID = 1L; + + @NotBlank + @Length(max = 36) + private String name; + @NotBlank + @Pattern(regexp = GENDER_REGEXP) + private String gender; + @NotBlank + // @Pattern(regexp = MOBILE_REGEXP) + private String mobile; + @Email + @NotBlank + @Length(max = 128) + private String email; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/ApiFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/ApiFormForUpdate.java new file mode 100644 index 0000000..c0e47d6 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/ApiFormForUpdate.java @@ -0,0 +1,27 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.URL; +import org.hibernate.validator.constraints.Length; +import me.chyxion.tigon.format.annotation.EmptyToNull; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class ApiFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + @Length(max = 36) + private String name; + @URL + @EmptyToNull + private String api; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/ApiGroupFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/ApiGroupFormForUpdate.java new file mode 100644 index 0000000..f0f5930 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/ApiGroupFormForUpdate.java @@ -0,0 +1,26 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class ApiGroupFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + @NotBlank + @Length(max = 36) + private String name; + @NotBlank + @Length(max = 36) + private String loginType; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/AppConfigFooterItemFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppConfigFooterItemFormForUpdate.java new file mode 100644 index 0000000..09ebc80 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppConfigFooterItemFormForUpdate.java @@ -0,0 +1,50 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.Min; +import com.pudonghot.ambition.model.Rgba; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; +import me.chyxion.tigon.format.annotation.EmptyToNull; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Jun 5, 2016 7:36:14 PM + */ +@Getter +@Setter +public class AppConfigFooterItemFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + @NotBlank + @Length(max = 36) + private String name; + @NotNull + private Rgba textColorActive; + @NotNull + private Rgba textColorNormal; + @NotBlank + @Length(max = 16) + private String text; + @NotBlank + private String action; + @Min(0) + private int sort; + @EmptyToNull + private byte[] iconNormal; + private boolean applyColorToIconNormalSvg; + @EmptyToNull + private byte[] iconActive; + private boolean applyColorToIconActiveSvg; + @NotNull + private Boolean active; + @NotNull + private Boolean noHeader; + @NotNull + private Boolean noFooter; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/AppConfigFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppConfigFormForUpdate.java new file mode 100644 index 0000000..9ce228d --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppConfigFormForUpdate.java @@ -0,0 +1,39 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import com.pudonghot.ambition.model.Rgba; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Aug 1, 2016 9:47:16 AM + */ +@Getter +@Setter +public class AppConfigFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + @NotBlank + @Length(max = 36) + private String name; + @NotNull + private Rgba themeColor; + @NotNull + private Rgba headerBgColor; + @NotNull + private Rgba headerTextColor; + @NotNull + private Rgba footerTopBorderColor; + @NotNull + private Rgba footerBgColor; + private byte[] headerBgImg; + private boolean deleteHeaderBgImg; + private byte[] footerBgImg; + private boolean deleteFooterBgImg; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/AppFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppFormForUpdate.java new file mode 100644 index 0000000..ddb1b0f --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppFormForUpdate.java @@ -0,0 +1,28 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:02:14 PM + */ +@Setter +@Getter +public class AppFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 36) + private String name; + private Long apiGroupId; + private Long appConfigId; + private Long splashId; + private Long themeId; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/AppReleaseFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppReleaseFormForUpdate.java new file mode 100644 index 0000000..fa67bc6 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppReleaseFormForUpdate.java @@ -0,0 +1,27 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:02:14 PM + */ +@Getter +@Setter +public class AppReleaseFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + @NotNull + private Long appId; + @NotBlank + private String platform; + @NotNull + private Long versionId; + private Long minVersionId; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/AppVersionAppointFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppVersionAppointFormForUpdate.java new file mode 100644 index 0000000..4c2a1b7 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppVersionAppointFormForUpdate.java @@ -0,0 +1,35 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:01:35 PM + */ +@Getter +@Setter +public class AppVersionAppointFormForUpdate + extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + // Properties + @NotBlank + @Length(max = 36) + private Long appId; + @NotBlank + private String platform; + @NotBlank + @Length(max = 36) + private String name; + @NotBlank + // @Pattern(regexp = MOBILE_REGEXP) + private String mobile; + @NotNull + private Long versionId; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/AppVersionFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppVersionFormForUpdate.java new file mode 100644 index 0000000..5e9ea2d --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppVersionFormForUpdate.java @@ -0,0 +1,39 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; +import me.chyxion.tigon.format.annotation.EmptyToNull; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:01:35 PM + */ +@Getter +@Setter +public class AppVersionFormForUpdate + extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + @NotNull + private Long appId; + @Length(max = 36) + private String appName; + @NotBlank + private String platform; + private Long apiGroupId; + private Long appConfigId; + private Long splashId; + private Long themeId; + private Long updateToVersionId; + @NotNull + private Boolean disableUpdate; + @EmptyToNull + private String releaseNote; + @EmptyToNull + private String metaData; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/AppVersionGroupFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppVersionGroupFormForUpdate.java new file mode 100644 index 0000000..71a38c7 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/AppVersionGroupFormForUpdate.java @@ -0,0 +1,29 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:02:14 PM + */ +@Getter +@Setter +public class AppVersionGroupFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 36) + private String name; + private Long androidPhoneVersionId; + private Long iphoneVersionId; + private Long androidPadVersionId; + private Long ipadVersionId; + private boolean deleteIcon; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/BaseFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/BaseFormForUpdate.java new file mode 100644 index 0000000..35087c5 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/BaseFormForUpdate.java @@ -0,0 +1,31 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import me.chyxion.tigon.form.BaseForm; +import javax.validation.constraints.NotNull; +import me.chyxion.tigon.form.BaseFormForUpdateApi; +import me.chyxion.tigon.format.annotation.EmptyToNull; +import me.chyxion.tigon.validation.annotation.NotNullOrBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Dec 10, 2015 10:15:41 AM + */ +@Getter +@Setter +public class BaseFormForUpdate extends BaseForm implements BaseFormForUpdateApi { + private static final long serialVersionUID = 1L; + + @NotNullOrBlank + protected String id; + @NotNull + protected String updatedBy; + @EmptyToNull + protected String note; + @NotNull + protected Boolean enabled; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/ContactFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/ContactFormForUpdate.java new file mode 100644 index 0000000..5a2e049 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/ContactFormForUpdate.java @@ -0,0 +1,37 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import com.pudonghot.ambition.common.Constants; +import org.hibernate.validator.constraints.Email; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @author Donghuang
+ * donghuang@wacai.com
+ * May 29, 2017 23:07:22 + */ +@Getter +@Setter +public class ContactFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + @NotNull + private Long deptId; + private int sort; + @NotBlank + @Length(max = 36) + private String name; + @NotBlank + private String mobile; + @NotBlank + @Pattern(regexp = Constants.GENDER_REGEXP) + private String gender; + @Email + private String email; + private String wechat; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/CorpFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/CorpFormForUpdate.java new file mode 100644 index 0000000..8d956e9 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/CorpFormForUpdate.java @@ -0,0 +1,33 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Aug 1, 2016 9:51:27 AM + */ +@Getter +@Setter +public class CorpFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 64) + private String name; + @NotBlank + @Length(max = 36) + private String shortName; + private Long defaultTinyAppGroupId; + private boolean useTinyAppGroup; + private Long apiGroupId; + private Long appConfigId; + private Long themeId; + private Long splashId; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/DeptFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/DeptFormForUpdate.java new file mode 100644 index 0000000..1747b19 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/DeptFormForUpdate.java @@ -0,0 +1,24 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 29, 2017 23:06:43 + */ +@Getter +@Setter +public class DeptFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + private Long ancestor; + @NotBlank + @Length(max = 36) + private String name; + private int sort; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/EmployeeFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/EmployeeFormForUpdate.java new file mode 100644 index 0000000..ec620e8 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/EmployeeFormForUpdate.java @@ -0,0 +1,29 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.Pattern; +import com.pudonghot.ambition.common.Constants; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Sep 16, 2015 3:02:14 PM + */ +@Setter +@Getter +public class EmployeeFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + private String name; + @NotBlank + private String mobile; + @NotBlank + @Pattern(regexp = Constants.GENDER_REGEXP) + private String gender; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/SplashFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/SplashFormForUpdate.java new file mode 100644 index 0000000..d6669aa --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/SplashFormForUpdate.java @@ -0,0 +1,27 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import javax.validation.constraints.Min; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Aug 1, 2016 9:51:27 AM + */ +@Getter +@Setter +public class SplashFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 36) + private String name; + @Min(0) + private long duration; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/ThemeFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/ThemeFormForUpdate.java new file mode 100644 index 0000000..f2863aa --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/ThemeFormForUpdate.java @@ -0,0 +1,12 @@ +package com.pudonghot.ambition.form.update; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +public class ThemeFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/TinyAppFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/TinyAppFormForUpdate.java new file mode 100644 index 0000000..bf6bf3b --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/TinyAppFormForUpdate.java @@ -0,0 +1,31 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.URL; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Aug 1, 2016 9:51:27 AM + */ +@Getter +@Setter +public class TinyAppFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 36) + private String name; + private Long groupId; + private int sort; + @URL + @NotBlank + @Length(max = 2048) + private String url; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/TinyAppGroupFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/TinyAppGroupFormForUpdate.java new file mode 100644 index 0000000..2c24a48 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/TinyAppGroupFormForUpdate.java @@ -0,0 +1,25 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Aug 1, 2016 9:51:27 AM + */ +@Getter +@Setter +public class TinyAppGroupFormForUpdate extends BaseFormForUpdate { + private static final long serialVersionUID = 1L; + + // Properties + @NotBlank + @Length(max = 36) + private String name; + private int sort; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/form/update/UserFormForUpdate.java b/server/model/src/main/java/com/pudonghot/ambition/form/update/UserFormForUpdate.java new file mode 100644 index 0000000..5c57eac --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/form/update/UserFormForUpdate.java @@ -0,0 +1,17 @@ +package com.pudonghot.ambition.form.update; + +import lombok.Getter; +import lombok.Setter; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * May 10, 2016 1:42:01 PM + */ +@Getter +@Setter +public class UserFormForUpdate extends AbstractAccountFormForUpdate { + private static final long serialVersionUID = 1L; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/model/Admin.java b/server/model/src/main/java/com/pudonghot/ambition/model/Admin.java new file mode 100644 index 0000000..25d5692 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/model/Admin.java @@ -0,0 +1,43 @@ +package com.pudonghot.ambition.model; + +import lombok.Getter; +import lombok.Setter; +import me.chyxion.tigon.model.M3; +import me.chyxion.tigon.mybatis.Table; +import me.chyxion.tigon.mybatis.UseGeneratedKeys; +import com.alibaba.fastjson.annotation.JSONField; +import me.chyxion.tigon.mybatis.NotUpdateWhenNull; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 11, 2017 1:28:27 PM + */ +@Getter +@Setter +@Table("crm_user") +@UseGeneratedKeys +public class Admin extends M3 { + private static final long serialVersionUID = 1L; + + // Column Names + public static final String LOGIN_ID = "login_id"; + public static final String MOBILE = "mobile"; + public static final String PASSWORD = "password"; + public static final String EMAIL = "email"; + public static final String NAME = "name"; + public static final String GENDER = "gender"; + + // Properties + private String loginId; + private String mobile; + private String email; + private String name; + private String gender; + + @NotUpdateWhenNull + @JSONField(serialize = false) + protected String password; +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/model/AdminAuthFailedLog.java b/server/model/src/main/java/com/pudonghot/ambition/model/AdminAuthFailedLog.java new file mode 100644 index 0000000..e6f1d4e --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/model/AdminAuthFailedLog.java @@ -0,0 +1,37 @@ +package com.pudonghot.ambition.model; + +import lombok.Getter; +import lombok.Setter; +import me.chyxion.tigon.model.M2; +import me.chyxion.tigon.mybatis.Table; +import me.chyxion.tigon.mybatis.UseGeneratedKeys; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 11, 2017 6:38:50 PM + */ +@Getter +@Setter +@UseGeneratedKeys +@Table("crm_auth_failed_log") +public class AdminAuthFailedLog extends M2 { + private static final long serialVersionUID = 1L; + + // Column Names + public static final String LOGIN_ID = "login_id"; + public static final String PASSWORD = "password"; + public static final String IP = "ip"; + public static final String USER_AGENT = "user_agent"; + public static final String EXT = "ext"; + + // Properties + private String loginId; + private String password; + private String ip; + private String userAgent; + private String ext; + +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/model/AdminLoginLog.java b/server/model/src/main/java/com/pudonghot/ambition/model/AdminLoginLog.java new file mode 100644 index 0000000..5ca2f9e --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/model/AdminLoginLog.java @@ -0,0 +1,35 @@ +package com.pudonghot.ambition.model; + +import lombok.Getter; +import lombok.Setter; +import me.chyxion.tigon.model.M2; +import me.chyxion.tigon.mybatis.Table; +import me.chyxion.tigon.mybatis.UseGeneratedKeys; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Auto Generated
+ * Tech Support Shaun Chyxion
+ * Mar 12, 2017 11:25:31 AM + */ +@Getter +@Setter +@UseGeneratedKeys +@Table("crm_auth_failed_log") +public class AdminLoginLog extends M2 { + private static final long serialVersionUID = 1L; + + // Column Names + public static final String ADMIN_ID = "admin_id"; + public static final String USER_AGENT = "user_agent"; + public static final String IP = "ip"; + public static final String EXT = "ext"; + + // Properties + private Long adminId; + private String userAgent; + private String ip; + private String ext; + +} diff --git a/server/model/src/main/java/com/pudonghot/ambition/model/Rgba.java b/server/model/src/main/java/com/pudonghot/ambition/model/Rgba.java new file mode 100644 index 0000000..78390b8 --- /dev/null +++ b/server/model/src/main/java/com/pudonghot/ambition/model/Rgba.java @@ -0,0 +1,166 @@ +package com.pudonghot.ambition.model; + +import lombok.Getter; +import lombok.Setter; +import java.io.Serializable; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.springframework.util.Assert; +import org.apache.commons.lang3.StringUtils; +import static org.slf4j.helpers.MessageFormatter.arrayFormat; + +/** + * @author Donghuang
+ * donghuang@wacai.com
+ * Mar 10, 2017 16:10:57 + */ +@Getter +@Setter +public class Rgba implements Serializable { + private static final long serialVersionUID = 1L; + // matches rgba(r,g,b,a) + public static final String REGEXP_RGBA = + "^\\s*rgba\\s*\\(\\s*" + + "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\\s*,\\s*" + + "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\\s*,\\s*" + + "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\\s*,\\s*" + + "(0(\\.\\d+)?|1(\\.0+)?)\\s*\\)$(?i)"; + + // matches #rgb + public static final String REGEXP_HEX_SHORT = + "^\\s*#((?:[a-f]|[A-F]|\\d){3})\\s*$"; + // matches #rrggbb + public static final String REGEXP_HEX_LONG = + "^\\s*#((?:(?:[a-f]|[A-F]|\\d){2}){3})\\s*$"; + // matches rgb(r, g, b) + public static final String REGEXP_RGB = + "^\\s*rgb\\s*\\(\\s*" + + "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\\s*,\\s*" + + "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\\s*,\\s*" + + "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\\s*\\)$(?i)"; + + public static final Pattern PATTERN_RGBA = + Pattern.compile(REGEXP_RGBA); + public static final Pattern PATTERN_HEX_SHORT = + Pattern.compile(REGEXP_HEX_SHORT); + public static final Pattern PATTERN_HEX_LONG = + Pattern.compile(REGEXP_HEX_LONG); + public static final Pattern PATTERN_RGB = + Pattern.compile(REGEXP_RGB); + + private int r; + private int g; + private int b; + private float a; + + public Rgba() { + } + + /** + * @param r + * @param g + * @param b + * @param a + */ + public Rgba(int r, int g, int b, float a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + + public Rgba(String rgba) { + Assert.hasText(rgba, "RGBA string could not be blank"); + Matcher m = Rgba.PATTERN_RGBA.matcher(rgba); + if (m.find()) { + r = Integer.parseInt(m.group(1)); + g = Integer.parseInt(m.group(2)); + b = Integer.parseInt(m.group(3)); + a = Float.parseFloat(m.group(4)); + } + else { + m = Rgba.PATTERN_RGB.matcher(rgba); + if (m.find()) { + r = Integer.parseInt(m.group(1)); + g = Integer.parseInt(m.group(2)); + b = Integer.parseInt(m.group(3)); + a = 1; + } + else { + m = Rgba.PATTERN_HEX_LONG.matcher(rgba); + if (m.find()) { + String value = m.group(1); + r = Integer.valueOf(value.substring(0, 2), 16); + g = Integer.valueOf(value.substring(2, 4), 16); + b = Integer.valueOf(value.substring(4, 6), 16); + a = 1; + } + else { + m = Rgba.PATTERN_HEX_SHORT.matcher(rgba); + if (m.find()) { + String value = m.group(1); + r = Integer.valueOf(StringUtils.repeat(value.substring(0, 1), 2), 16); + g = Integer.valueOf(StringUtils.repeat(value.substring(1, 2), 2), 16); + b = Integer.valueOf(StringUtils.repeat(value.substring(2, 3), 2), 16); + a = 1; + } + else { + throw new IllegalStateException( + "RGBA string [" + rgba + "] is not valid"); + } + } + } + } + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return arrayFormat("rgba({}, {}, {}, {})", + new Object[]{r, g, b, a}).getMessage(); + } + /** + * {@inheritDoc} + */ + public String toHexString() { + return String.format("#%02x%02x%02x", r, g, b); + } + + /** + * {@inheritDoc} + */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Float.floatToIntBits(a); + result = prime * result + b; + result = prime * result + g; + result = prime * result + r; + return result; + } + + /** + * {@inheritDoc} + */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + Rgba other = (Rgba) obj; + return r == other.r && + g == other.g && + b == other.b && + Float.floatToIntBits(a) == + Float.floatToIntBits(other.a); + } +} diff --git a/server/model/src/main/resources/codegen/config.properties b/server/model/src/main/resources/codegen/config.properties new file mode 100644 index 0000000..e244320 --- /dev/null +++ b/server/model/src/main/resources/codegen/config.properties @@ -0,0 +1,6 @@ +# CodeGen Config +base.cols=enabled,note,date_created,date_updated,created_by,updated_by +base.package=com.pudonghot.ambition +super.base.model.name=M3 +super.base.model.full.name=me.chyxion.tigon.model.M3 +table.prefix=crm \ No newline at end of file diff --git a/server/model/src/main/resources/config_dev.properties b/server/model/src/main/resources/config_dev.properties new file mode 100644 index 0000000..ae068a4 --- /dev/null +++ b/server/model/src/main/resources/config_dev.properties @@ -0,0 +1,6 @@ +# Config Dev + +# Database +db.url=jdbc:mysql://127.0.0.1:43306/ambition_crm?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull +db.user=root +db.password=696@2^~)oZ@^#*Q \ No newline at end of file diff --git a/server/model/src/main/resources/log4j2_dev.xml b/server/model/src/main/resources/log4j2_dev.xml new file mode 100644 index 0000000..ff2fb0a --- /dev/null +++ b/server/model/src/main/resources/log4j2_dev.xml @@ -0,0 +1,38 @@ + + + + DEBUG + .logs + %-d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t][%c{1}] %m%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/model/src/main/resources/spring/spring-db.xml b/server/model/src/main/resources/spring/spring-db.xml new file mode 100644 index 0000000..970aa84 --- /dev/null +++ b/server/model/src/main/resources/spring/spring-db.xml @@ -0,0 +1,13 @@ + + + + diff --git a/server/model/src/test/resources/spring/config.properties b/server/model/src/test/resources/spring/config.properties new file mode 100644 index 0000000..3ded7d3 --- /dev/null +++ b/server/model/src/test/resources/spring/config.properties @@ -0,0 +1,11 @@ +# Config Dev + +# Database +db.url=jdbc:mysql://127.0.0.1:3307/echat_sit +db.user=flaginfo_echat +db.password=echat407 + +# Redis +redis.host=127.0.0.1 +redis.port=6379 +redis.password=0211 \ No newline at end of file diff --git a/server/oauth/README.md b/server/oauth/README.md new file mode 100644 index 0000000..a330497 --- /dev/null +++ b/server/oauth/README.md @@ -0,0 +1 @@ +#umsapp-ota-data-model diff --git a/server/oauth/pom.xml b/server/oauth/pom.xml new file mode 100644 index 0000000..65c3a3b --- /dev/null +++ b/server/oauth/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + oauth + Ambition OAuth Client + jar + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + org.slf4j + slf4j-api + + + javax.servlet + javax.servlet-api + provided + + + com.alibaba + fastjson + + + org.apache.commons + commons-lang3 + + + + org.projectlombok + lombok + provided + + + + junit + junit + test + + + diff --git a/server/oauth/run b/server/oauth/run new file mode 100755 index 0000000..83c1664 --- /dev/null +++ b/server/oauth/run @@ -0,0 +1,9 @@ +#!/bin/bash + +export MAVEN_OPTS="-noverify -agentpath:/usr/local/JRebel/6.3.2/lib/libjrebel64.dylib -Drebel.dirs=target -Drebel.disable_update=true -Ddev=true" +set JAVA_OPTS=$MAVEN_OPTS +mvn -Pdev clean tomcat7:run +unset JAVA_OPTS +unset MAVEN_OPTS + + diff --git a/server/oauth/src/main/java/com/pudonghot/ambition/oauth/OAuthUser.java b/server/oauth/src/main/java/com/pudonghot/ambition/oauth/OAuthUser.java new file mode 100644 index 0000000..9d4f91d --- /dev/null +++ b/server/oauth/src/main/java/com/pudonghot/ambition/oauth/OAuthUser.java @@ -0,0 +1,25 @@ +package com.pudonghot.ambition.oauth; + +import lombok.Getter; +import lombok.Setter; +import java.io.Serializable; + +/** + * @author Donghuang
+ * donghuang@wacai.com
+ * Apr 09, 2017 16:54:29 + */ +@Getter +@Setter +public class OAuthUser implements Serializable { + private static final long serialVersionUID = 1L; + + private String name; + private String mobile; + private String gender; + private String avatar; + private Long corpId; + private String corpName; + private String corpShortName; + private String corpIcon; +} diff --git a/server/oauth/src/main/java/com/pudonghot/ambition/oauth/OAuthUtils.java b/server/oauth/src/main/java/com/pudonghot/ambition/oauth/OAuthUtils.java new file mode 100644 index 0000000..374e66f --- /dev/null +++ b/server/oauth/src/main/java/com/pudonghot/ambition/oauth/OAuthUtils.java @@ -0,0 +1,104 @@ +package com.pudonghot.ambition.oauth; + +import java.net.URL; +import java.net.Proxy; +import java.util.Scanner; +import java.io.IOException; +import java.io.InputStream; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import java.net.MalformedURLException; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; +import javax.servlet.http.HttpServletRequest; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Apr 09, 2017 17:06:49 + */ +@Slf4j +public class OAuthUtils { + + /** + * return OAuth User Info + * @param request + * @return + */ + public static OAuthUser getOAuthUser(HttpServletRequest request) { + return getOAuthUser(request, null); + } + + /** + * return OAuth User Info + * @param request + * @param proxy + * @return + */ + public static OAuthUser getOAuthUser(HttpServletRequest request, Proxy proxy) { + final String baseUrl = + System.getProperty("ambition.oauth.baseurl", + "http://101.37.82.164/oauth/"); + + final String oauthKey = request.getParameter("__eId"); + log.info("OAuth Key [{}] Found", oauthKey); + if (StringUtils.isBlank(oauthKey)) { + throw new IllegalStateException("No OAuth Key Found"); + } + URL url = null; + try { + url = new URL(baseUrl + oauthKey); + } + catch (MalformedURLException e) { + throw new IllegalStateException( + "Build OAuth URL Error Caused", e); + } + log.info("OAuth URL [{}].", url); + InputStream ins = null; + Scanner s = null; + try { + if (proxy != null) { + ins = url.openConnection(proxy).getInputStream(); + } + else { + ins = url.openStream(); + } + s = new Scanner(ins, "utf-8"); + s.useDelimiter("\\A"); + if (s.hasNext()) { + final String strResp = s.next(); + log.info("OAuth Result [{}].", strResp); + if (StringUtils.isNotBlank(strResp)) { + final JSONObject joResp = JSON.parseObject(strResp); + if (joResp.getBooleanValue("success")) { + return JSON.toJavaObject( + joResp.getJSONObject("data"), OAuthUser.class); + } + else { + throw new IllegalStateException( + "Get OAuth User Error [" + strResp + "] Caused"); + } + } + } + throw new IllegalStateException( + "Get OAuth User Error Caused, No Response"); + } + catch (IOException e) { + throw new IllegalStateException( + "Open OAuth Collection Error Caused", e); + } + finally { + if (ins != null) { + try { + ins.close(); + } + catch (IOException e) { + // ignore + } + } + if (s != null) { + s.close(); + } + } + } +} diff --git a/server/oauth/src/main/resources/.gitkeep b/server/oauth/src/main/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/oauth/src/test/resources/.gitkeep b/server/oauth/src/test/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/pinyin-util/README.md b/server/pinyin-util/README.md new file mode 100644 index 0000000..5cd132f --- /dev/null +++ b/server/pinyin-util/README.md @@ -0,0 +1 @@ +# name-pinyin diff --git a/server/pinyin-util/pom.xml b/server/pinyin-util/pom.xml new file mode 100644 index 0000000..44e88f7 --- /dev/null +++ b/server/pinyin-util/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + pinyin-util + Pinyin Util + jar + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + com.belerweb + pinyin4j + 2.5.0 + + + junit + junit + test + + + + + + + true + src/main/resources + + pinyin/* + + + + false + src/main/resources + + pinyin/* + + + + + + src/test/resources + true + + + + diff --git a/server/pinyin-util/src/main/java/com/pudonghot/ambition/pinyin/PinyinUtil.java b/server/pinyin-util/src/main/java/com/pudonghot/ambition/pinyin/PinyinUtil.java new file mode 100644 index 0000000..1bb177f --- /dev/null +++ b/server/pinyin-util/src/main/java/com/pudonghot/ambition/pinyin/PinyinUtil.java @@ -0,0 +1,154 @@ +package com.pudonghot.ambition.pinyin; + +import java.util.List; +import java.io.Closeable; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Apr 23, 2015 1:30:51 PM + */ +@SuppressWarnings("unchecked") +public class PinyinUtil { + static final List CN_FAMILY_NAMES; + static HanyuPinyinOutputFormat PINYIN_FORMAT = + new HanyuPinyinOutputFormat(); + + static { + PINYIN_FORMAT.setCaseType(HanyuPinyinCaseType.LOWERCASE); + PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER); + PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_V); + InputStream fin = null; + ObjectInputStream oin = null; + try { + // load names data + fin = PinyinUtil.class.getResourceAsStream("/pinyin/cn-family-names.list"); + oin = new ObjectInputStream(fin); + CN_FAMILY_NAMES = (List) oin.readObject(); + } + catch (Exception e) { + throw new IllegalStateException( + "Init Name Tool Error Caused", e); + } + finally { + close(oin); + close(fin); + } + } + + /** + * get name pinyin + * @param name + * @return + */ + public static String getNamePinyin(String name) { + return getNamePinyin(name, null, true); + } + + /** + * get name pinyin + * @param name + * @param withTone + * @return + */ + public static String getNamePinyin(String name, String splitter, boolean withTone) { + String pyRtn = null; + boolean hasSplitter = splitter != null && !splitter.isEmpty(); + for (String[] it : CN_FAMILY_NAMES) { + String fName = it[0]; + if (name.startsWith(fName)) { + // family name pinyin + StringBuilder sbRtn = new StringBuilder(); + String fNamePy = it[2]; + if (!withTone) { + fNamePy = fNamePy.replaceAll("\\d", ""); + } + // replace splitter + fNamePy = fNamePy.replace(" ", hasSplitter ? splitter : ""); + sbRtn.append(fNamePy); + // name pinyin + String shortName = name.substring(fName.length()); + if (shortName != null && !shortName.isEmpty()) { + if (hasSplitter) { + sbRtn.append(splitter); + } + sbRtn.append(getDefaultPinyin(shortName, splitter, withTone)); + } + pyRtn = sbRtn.toString(); + break; + } + } + if (pyRtn == null) { + pyRtn = getDefaultPinyin(name, splitter, withTone); + } + return pyRtn; + } + + /** + * get default pinyin + * @param input + * @param withTone + * @return + */ + public static String getDefaultPinyin(String input, String splitter, boolean withTone) { + StringBuilder sbRtn = new StringBuilder(); + try { + if (input != null && !input.isEmpty()) { + boolean hasSplitter = splitter != null && !splitter.isEmpty(); + for (char ch : input.toCharArray()) { + String sc = Character.toString(ch); + if (sc.matches("^[\u4E00-\u9FA5]$")) { + String pinyin = + PinyinHelper.toHanyuPinyinStringArray( + ch, PINYIN_FORMAT)[0]; + if (!withTone) { + pinyin = pinyin.substring(0, pinyin.length() - 1); + } + sbRtn.append(pinyin); + if (hasSplitter) { + sbRtn.append(splitter); + } + } + else { + sbRtn.append(sc); + } + } + // remove last splitter + if (hasSplitter) { + sbRtn.deleteCharAt(sbRtn.length() - 1); + } + } + } + catch (BadHanyuPinyinOutputFormatCombination e) { + throw new IllegalStateException( + "Get Pinyin Error Caused", e); + } + return sbRtn.toString().trim(); + } + + /** + * close closeable + * @param c + */ + private static void close(Closeable c) { + if (c != null) { + try { + c.close(); + } + catch (IOException e) { + // ignore + } + } + } +} diff --git a/server/pinyin-util/src/main/resources/pinyin/cn-family-names.json b/server/pinyin-util/src/main/resources/pinyin/cn-family-names.json new file mode 100644 index 0000000..9da0dd8 --- /dev/null +++ b/server/pinyin-util/src/main/resources/pinyin/cn-family-names.json @@ -0,0 +1,1946 @@ +{ + "赵":[ + "zhào", + "zhao4" + ], + "钱":[ + "qián", + "qian2" + ], + "孙":[ + "sūn", + "sun1" + ], + "李":[ + "lĭ", + "li3" + ], + "周":[ + "zhōu", + "zhou1" + ], + "吴":[ + "wú", + "wu2" + ], + "郑":[ + "zhèng", + "zheng4" + ], + "王":[ + "wáng", + "wang2" + ], + "冯":[ + "féng", + "feng2" + ], + "陈":[ + "chén", + "chen2" + ], + "褚":[ + "chŭ", + "chu3" + ], + "卫":[ + "wèi", + "wei4" + ], + "蒋":[ + "jiăng", + "jiang3" + ], + "沈":[ + "shĕn", + "shen3" + ], + "韩":[ + "hán", + "han2" + ], + "杨":[ + "yáng", + "yang2" + ], + "朱":[ + "zhū", + "zhu1" + ], + "秦":[ + "qín", + "qin2" + ], + "尤":[ + "yóu", + "you2" + ], + "许":[ + "xŭ", + "xu3" + ], + "何":[ + "hé", + "he2" + ], + "吕":[ + "lǚ", + "lv3" + ], + "施":[ + "shī", + "shi1" + ], + "张":[ + "zhāng", + "zhang1" + ], + "孔":[ + "kŏng", + "kong3" + ], + "曹":[ + "cáo", + "cao2" + ], + "严":[ + "yán", + "yan2" + ], + "华":[ + "huà", + "hua4" + ], + "金":[ + "jīn", + "jin1" + ], + "魏":[ + "wèi", + "wei4" + ], + "陶":[ + "táo", + "tao2" + ], + "姜":[ + "jiāng", + "jiang1" + ], + "戚":[ + "qī", + "qi1" + ], + "谢":[ + "xiè", + "xie4" + ], + "邹":[ + "zōu", + "zou1" + ], + "喻":[ + "yù", + "yu4" + ], + "柏":[ + "băi", + "bai3" + ], + "水":[ + "shuĭ", + "shui3" + ], + "窦":[ + "dòu", + "dou4" + ], + "章":[ + "zhāng", + "zhang1" + ], + "云":[ + "yún", + "yun2" + ], + "苏":[ + "sū", + "su1" + ], + "潘":[ + "pān", + "pan1" + ], + "葛":[ + "gĕ", + "ge3" + ], + "奚":[ + "xī", + "xi1" + ], + "范":[ + "fàn", + "fan4" + ], + "彭":[ + "péng", + "peng2" + ], + "郎":[ + "láng", + "lang2" + ], + "鲁":[ + "lŭ", + "lu3" + ], + "韦":[ + "wéi", + "wei2" + ], + "昌":[ + "chāng", + "chang1" + ], + "马":[ + "mă", + "ma3" + ], + "苗":[ + "miáo", + "miao2" + ], + "凤":[ + "fèng", + "feng4" + ], + "花":[ + "huā", + "hua1" + ], + "方":[ + "fāng", + "fang1" + ], + "俞":[ + "yú", + "yu2" + ], + "任":[ + "rèn", + "ren4" + ], + "袁":[ + "yuán", + "yuan2" + ], + "柳":[ + "liŭ", + "liu3" + ], + "酆":[ + "fēng", + "feng1" + ], + "鲍":[ + "bào", + "bao4" + ], + "史":[ + "shĭ", + "shi3" + ], + "唐":[ + "táng", + "tang2" + ], + "费":[ + "fèi", + "fei4" + ], + "廉":[ + "lián", + "lian2" + ], + "岑":[ + "cén", + "cen2" + ], + "薛":[ + "xuē", + "xue1" + ], + "雷":[ + "léi", + "lei2" + ], + "贺":[ + "hè", + "he4" + ], + "倪":[ + "ní", + "ni2" + ], + "汤":[ + "tāng", + "tang1" + ], + "滕":[ + "téng", + "teng2" + ], + "殷":[ + "yīn", + "yin1" + ], + "罗":[ + "luó", + "luo2" + ], + "毕":[ + "bì", + "bi4" + ], + "郝":[ + "hăo", + "hao3" + ], + "邬":[ + "wū", + "wu1" + ], + "安":[ + "ān", + "an1" + ], + "常":[ + "cháng", + "chang2" + ], + "乐":[ + "yuè", + "yue4" + ], + "于":[ + "yú", + "yu2" + ], + "时":[ + "shí", + "shi2" + ], + "傅":[ + "fù", + "fu4" + ], + "皮":[ + "pí", + "pi2" + ], + "卞":[ + "biàn", + "bian4" + ], + "齐":[ + "qí", + "qi2" + ], + "康":[ + "kāng", + "kang1" + ], + "伍":[ + "wŭ", + "wu3" + ], + "余":[ + "yú", + "yu2" + ], + "元":[ + "yuán", + "yuan2" + ], + "卜":[ + "bŭ", + "bu3" + ], + "顾":[ + "gù", + "gu4" + ], + "孟":[ + "mèng", + "meng4" + ], + "平":[ + "píng", + "ping2" + ], + "黄":[ + "huáng", + "huang2" + ], + "和":[ + "hé", + "he2" + ], + "穆":[ + "mù", + "mu4" + ], + "萧":[ + "xiāo", + "xiao1" + ], + "尹":[ + "yĭn", + "yin3" + ], + "姚":[ + "yáo", + "yao2" + ], + "邵":[ + "shào", + "shao4" + ], + "湛":[ + "zhàn", + "zhan4" + ], + "汪":[ + "wāng", + "wang1" + ], + "祁":[ + "qí", + "qi2" + ], + "毛":[ + "máo", + "mao2" + ], + "禹":[ + "yŭ", + "yu3" + ], + "狄":[ + "dí", + "di2" + ], + "米":[ + "mĭ", + "mi3" + ], + "贝":[ + "bèi", + "bei4" + ], + "明":[ + "míng", + "ming2" + ], + "臧":[ + "zāng", + "zang1" + ], + "计":[ + "jì", + "ji4" + ], + "伏":[ + "fú", + "fu2" + ], + "成":[ + "chéng", + "cheng2" + ], + "戴":[ + "dài", + "dai4" + ], + "谈":[ + "tán", + "tan2" + ], + "宋":[ + "sòng", + "song4" + ], + "茅":[ + "máo", + "mao2" + ], + "庞":[ + "páng", + "pang2" + ], + "熊":[ + "xióng", + "xiong2" + ], + "纪":[ + "jì", + "ji4" + ], + "舒":[ + "shū", + "shu1" + ], + "屈":[ + "qū", + "qu1" + ], + "项":[ + "xiàng", + "xiang4" + ], + "祝":[ + "zhù", + "zhu4" + ], + "董":[ + "dŏng", + "dong3" + ], + "梁":[ + "liáng", + "liang2" + ], + "杜":[ + "dù", + "du4" + ], + "阮":[ + "ruăn", + "ruan3" + ], + "蓝":[ + "lán", + "lan2" + ], + "闵":[ + "mĭn", + "min3" + ], + "席":[ + "xí", + "xi2" + ], + "季":[ + "jì", + "ji4" + ], + "麻":[ + "má", + "ma2" + ], + "强":[ + "qiáng", + "qiang2" + ], + "贾":[ + "jiă", + "jia3" + ], + "路":[ + "lù", + "lu4" + ], + "娄":[ + "lóu", + "lou2" + ], + "危":[ + "wēi", + "wei1" + ], + "江":[ + "jiāng", + "jiang1" + ], + "童":[ + "tóng", + "tong2" + ], + "颜":[ + "yán", + "yan2" + ], + "郭":[ + "guō", + "guo1" + ], + "梅":[ + "méi", + "mei2" + ], + "盛":[ + "shèng", + "sheng4" + ], + "林":[ + "lín", + "lin2" + ], + "刁":[ + "diāo", + "diao1" + ], + "钟":[ + "zhōng", + "zhong1" + ], + "徐":[ + "xú", + "xu2" + ], + "邱":[ + "qiū", + "qiu1" + ], + "骆":[ + "luò", + "luo4" + ], + "高":[ + "gāo", + "gao1" + ], + "夏":[ + "xià", + "xia4" + ], + "蔡":[ + "cài", + "cai4" + ], + "田":[ + "tián", + "tian2" + ], + "樊":[ + "fán", + "fan2" + ], + "胡":[ + "hú", + "hu2" + ], + "凌":[ + "líng", + "ling2" + ], + "霍":[ + "huò", + "huo4" + ], + "虞":[ + "yú", + "yu2" + ], + "万":[ + "wàn", + "wan4" + ], + "支":[ + "zhī", + "zhi1" + ], + "柯":[ + "kē", + "ke1" + ], + "昝":[ + "zăn", + "zan3" + ], + "管":[ + "guăn", + "guan3" + ], + "卢":[ + "lú", + "lu2" + ], + "莫":[ + "mò", + "mo4" + ], + "经":[ + "jīng", + "jing1" + ], + "房":[ + "fáng", + "fang2" + ], + "裘":[ + "qiú", + "qiu2" + ], + "缪":[ + "miào", + "miao4" + ], + "干":[ + "gān", + "gan1" + ], + "解":[ + "xiè", + "xie4" + ], + "应":[ + "yīng", + "ying1" + ], + "宗":[ + "zōng", + "zong1" + ], + "丁":[ + "dīng", + "ding1" + ], + "宣":[ + "xuān", + "xuan1" + ], + "贲":[ + "bēn", + "ben1" + ], + "邓":[ + "dèng", + "deng4" + ], + "郁":[ + "yù", + "yu4" + ], + "单":[ + "shàn", + "shan4" + ], + "杭":[ + "háng", + "hang2" + ], + "洪":[ + "hóng", + "hong2" + ], + "包":[ + "bāo", + "bao1" + ], + "诸":[ + "zhū", + "zhu1" + ], + "左":[ + "zuŏ", + "zuo3" + ], + "石":[ + "shí", + "shi2" + ], + "崔":[ + "cuī", + "cui1" + ], + "吉":[ + "jí", + "ji2" + ], + "钮":[ + "niŭ", + "niu3" + ], + "龚":[ + "gōng", + "gong1" + ], + "程":[ + "chéng", + "cheng2" + ], + "嵇":[ + "jī", + "ji1" + ], + "邢":[ + "xíng", + "xing2" + ], + "滑":[ + "huá", + "hua2" + ], + "裴":[ + "péi", + "pei2" + ], + "陆":[ + "lù", + "lu4" + ], + "荣":[ + "róng", + "rong2" + ], + "翁":[ + "wēng", + "weng1" + ], + "荀":[ + "xún", + "xun2" + ], + "羊":[ + "yáng", + "yang2" + ], + "於":[ + "yū", + "yu1" + ], + "惠":[ + "huì", + "hui4" + ], + "甄":[ + "zhēn", + "zhen1" + ], + "曲":[ + "qū", + "qu1" + ], + "家":[ + "jiā", + "jia1" + ], + "封":[ + "fēng", + "feng1" + ], + "芮":[ + "ruì", + "rui4" + ], + "羿":[ + "yì", + "yi4" + ], + "储":[ + "chŭ", + "chu3" + ], + "靳":[ + "jìn", + "jin4" + ], + "汲":[ + "jí", + "ji2" + ], + "邴":[ + "bĭng", + "bing3" + ], + "糜":[ + "mí", + "mi2" + ], + "松":[ + "sōng", + "song1" + ], + "井":[ + "jĭng", + "jing3" + ], + "段":[ + "duàn", + "duan4" + ], + "富":[ + "fù", + "fu4" + ], + "巫":[ + "wū", + "wu1" + ], + "乌":[ + "wū", + "wu1" + ], + "焦":[ + "jiāo", + "jiao1" + ], + "巴":[ + "bā", + "ba1" + ], + "弓":[ + "gōng", + "gong1" + ], + "牧":[ + "mù", + "mu4" + ], + "隗":[ + "kuí", + "kui2" + ], + "山":[ + "shān", + "shan1" + ], + "谷":[ + "gŭ", + "gu3" + ], + "车":[ + "chē", + "che1" + ], + "侯":[ + "hóu", + "hou2" + ], + "宓":[ + "mì", + "mi4" + ], + "蓬":[ + "péng", + "peng2" + ], + "全":[ + "quán", + "quan2" + ], + "郗":[ + "xī", + "xi1" + ], + "班":[ + "bān", + "ban1" + ], + "仰":[ + "yăng", + "yang3" + ], + "秋":[ + "qiū", + "qiu1" + ], + "仲":[ + "zhòng", + "zhong4" + ], + "伊":[ + "yī", + "yi1" + ], + "宫":[ + "gōng", + "gong1" + ], + "宁":[ + "nìng", + "ning4" + ], + "仇":[ + "qiú", + "qiu2" + ], + "栾":[ + "luán", + "luan2" + ], + "暴":[ + "bào", + "bao4" + ], + "甘":[ + "gān", + "gan1" + ], + "钭":[ + "tŏu", + "tou3" + ], + "厉":[ + "lì", + "li4" + ], + "戎":[ + "róng", + "rong2" + ], + "祖":[ + "zŭ", + "zu3" + ], + "武":[ + "wŭ", + "wu3" + ], + "符":[ + "fú", + "fu2" + ], + "刘":[ + "liú", + "liu2" + ], + "景":[ + "jĭng", + "jing3" + ], + "詹":[ + "zhān", + "zhan1" + ], + "束":[ + "shù", + "shu4" + ], + "龙":[ + "lóng", + "long2" + ], + "叶":[ + "yè", + "ye4" + ], + "幸":[ + "xìng", + "xing4" + ], + "司":[ + "sī", + "si1" + ], + "韶":[ + "sháo", + "shao2" + ], + "郜":[ + "gào", + "gao4" + ], + "黎":[ + "lí", + "li2" + ], + "蓟":[ + "jì", + "ji4" + ], + "薄":[ + "bó", + "bo2" + ], + "印":[ + "yìn", + "yin4" + ], + "宿":[ + "sù", + "su4" + ], + "白":[ + "bái", + "bai2" + ], + "怀":[ + "huái", + "huai2" + ], + "蒲":[ + "pú", + "pu2" + ], + "邰":[ + "tái", + "tai2" + ], + "从":[ + "cóng", + "cong2" + ], + "鄂":[ + "è", + "e4" + ], + "索":[ + "suŏ", + "suo3" + ], + "咸":[ + "xián", + "xian2" + ], + "籍":[ + "jí", + "ji2" + ], + "赖":[ + "lài", + "lai4" + ], + "卓":[ + "zhuó", + "zhuo2" + ], + "蔺":[ + "lìn", + "lin4" + ], + "屠":[ + "tú", + "tu2" + ], + "蒙":[ + "méng", + "meng2" + ], + "池":[ + "chí", + "chi2" + ], + "乔":[ + "qiáo", + "qiao2" + ], + "阴":[ + "yīn", + "yin1" + ], + "鬱":[ + "yù", + "yu4" + ], + "胥":[ + "xū", + "xu1" + ], + "能":[ + "néng", + "neng2" + ], + "苍":[ + "cāng", + "cang1" + ], + "双":[ + "shuāng", + "shuang1" + ], + "闻":[ + "wén", + "wen2" + ], + "莘":[ + "shēn", + "shen1" + ], + "党":[ + "dăng", + "dang3" + ], + "翟":[ + "zhái", + "zhai2" + ], + "谭":[ + "tán", + "tan2" + ], + "贡":[ + "gòng", + "gong4" + ], + "劳":[ + "láo", + "lao2" + ], + "逄":[ + "páng", + "pang2" + ], + "姬":[ + "jī", + "ji1" + ], + "申":[ + "shēn", + "shen1" + ], + "扶":[ + "fú", + "fu2" + ], + "堵":[ + "dŭ", + "du3" + ], + "冉":[ + "răn", + "ran3" + ], + "宰":[ + "zăi", + "zai3" + ], + "郦":[ + "lì", + "li4" + ], + "雍":[ + "yōng", + "yong1" + ], + "郤":[ + "xì", + "xi4" + ], + "璩":[ + "qú", + "qu2" + ], + "桑":[ + "sāng", + "sang1" + ], + "桂":[ + "guì", + "gui4" + ], + "濮":[ + "pú", + "pu2" + ], + "牛":[ + "niú", + "niu2" + ], + "寿":[ + "shòu", + "shou4" + ], + "通":[ + "tōng", + "tong1" + ], + "边":[ + "biān", + "bian1" + ], + "扈":[ + "hù", + "hu4" + ], + "燕":[ + "yān", + "yan1" + ], + "冀":[ + "jì", + "ji4" + ], + "郏":[ + "jiá", + "jia2" + ], + "浦":[ + "pŭ", + "pu3" + ], + "尚":[ + "shàng", + "shang4" + ], + "农":[ + "nóng", + "nong2" + ], + "温":[ + "wēn", + "wen1" + ], + "别":[ + "bié", + "bie2" + ], + "庄":[ + "zhuāng", + "zhuang1" + ], + "晏":[ + "yàn", + "yan4" + ], + "柴":[ + "chái", + "chai2" + ], + "瞿":[ + "qú", + "qu2" + ], + "阎":[ + "yán", + "yan2" + ], + "充":[ + "chōng", + "chong1" + ], + "慕":[ + "mù", + "mu4" + ], + "连":[ + "lián", + "lian2" + ], + "茹":[ + "rú", + "ru2" + ], + "习":[ + "xí", + "xi2" + ], + "宦":[ + "huàn", + "huan4" + ], + "艾":[ + "ài", + "ai4" + ], + "鱼":[ + "yú", + "yu2" + ], + "容":[ + "róng", + "rong2" + ], + "向":[ + "xiàng", + "xiang4" + ], + "古":[ + "gŭ", + "gu3" + ], + "易":[ + "yì", + "yi4" + ], + "慎":[ + "shèn", + "shen4" + ], + "戈":[ + "gē", + "ge1" + ], + "廖":[ + "liào", + "liao4" + ], + "庾":[ + "yŭ", + "yu3" + ], + "终":[ + "zhōng", + "zhong1" + ], + "暨":[ + "jì", + "ji4" + ], + "居":[ + "jū", + "ju1" + ], + "衡":[ + "héng", + "heng2" + ], + "步":[ + "bù", + "bu4" + ], + "都":[ + "dū", + "du1" + ], + "耿":[ + "gĕng", + "geng3" + ], + "满":[ + "măn", + "man3" + ], + "弘":[ + "hóng", + "hong2" + ], + "匡":[ + "kuāng", + "kuang1" + ], + "国":[ + "guó", + "guo2" + ], + "文":[ + "wén", + "wen2" + ], + "寇":[ + "kòu", + "kou4" + ], + "广":[ + "guăng", + "guang3" + ], + "禄":[ + "lù", + "lu4" + ], + "阙":[ + "quē", + "que1" + ], + "东":[ + "dōng", + "dong1" + ], + "欧":[ + "ōu", + "ou1" + ], + "殳":[ + "shū", + "shu1" + ], + "沃":[ + "wò", + "wo4" + ], + "利":[ + "lì", + "li4" + ], + "蔚":[ + "wèi", + "wei4" + ], + "越":[ + "yuè", + "yue4" + ], + "夔":[ + "kuí", + "kui2" + ], + "隆":[ + "lóng", + "long2" + ], + "师":[ + "shī", + "shi1" + ], + "巩":[ + "gŏng", + "gong3" + ], + "厍":[ + "shè", + "she4" + ], + "聂":[ + "niè", + "nie4" + ], + "晁":[ + "cháo", + "chao2" + ], + "勾":[ + "gōu", + "gou1" + ], + "敖":[ + "áo", + "ao2" + ], + "融":[ + "róng", + "rong2" + ], + "冷":[ + "lĕng", + "leng3" + ], + "訾":[ + "zĭ", + "zi3" + ], + "辛":[ + "xīn", + "xin1" + ], + "阚":[ + "kàn", + "kan4" + ], + "那":[ + "nā", + "na1" + ], + "简":[ + "jiăn", + "jian3" + ], + "饶":[ + "ráo", + "rao2" + ], + "空":[ + "kōng", + "kong1" + ], + "曾":[ + "zēng", + "zeng1" + ], + "母":[ + "mŭ", + "mu3" + ], + "沙":[ + "shā", + "sha1" + ], + "乜":[ + "niè", + "nie4" + ], + "养":[ + "yăng", + "yang3" + ], + "鞠":[ + "jū", + "ju1" + ], + "须":[ + "xū", + "xu1" + ], + "丰":[ + "fēng", + "feng1" + ], + "巢":[ + "cháo", + "chao2" + ], + "关":[ + "guān", + "guan1" + ], + "蒯":[ + "kuăi", + "kuai3" + ], + "相":[ + "xiàng", + "xiang4" + ], + "查":[ + "zhā", + "zha1" + ], + "后":[ + "hòu", + "hou4" + ], + "荆":[ + "jīng", + "jing1" + ], + "红":[ + "hóng", + "hong2" + ], + "游":[ + "yóu", + "you2" + ], + "竺":[ + "zhú", + "zhu2" + ], + "权":[ + "quán", + "quan2" + ], + "逯":[ + "lù", + "lu4" + ], + "盖":[ + "gài", + "gai4" + ], + "益":[ + "yì", + "yi4" + ], + "桓":[ + "huán", + "huan2" + ], + "公":[ + "gōng", + "gong1" + ], + "万俟":[ + "mò qí", + "mo4 qi2" + ], + "司马":[ + "sī mă", + "si1 ma3" + ], + "上官":[ + "shàng guān", + "shang4 guan1" + ], + "欧阳":[ + "ōu yáng", + "ou1 yang2" + ], + "夏侯":[ + "xià hóu", + "xia4 hou2" + ], + "诸葛":[ + "zhū gĕ", + "zhu1 ge3" + ], + "闻人":[ + "wén rén", + "wen2 ren2" + ], + "东方":[ + "dōng fāng", + "dong1 fang1" + ], + "赫连":[ + "hè lián", + "he4 lian2" + ], + "皇甫":[ + "huáng fŭ", + "huang2 fu3" + ], + "尉迟":[ + "yù chí", + "yu4 chi2" + ], + "公羊":[ + "gōng yáng", + "gong1 yang2" + ], + "澹台":[ + "tán tái", + "tan2 tai2" + ], + "公冶":[ + "gōng yĕ", + "gong1 ye3" + ], + "宗政":[ + "zōng zhèng", + "zong1 zheng4" + ], + "濮阳":[ + "pú yáng", + "pu2 yang2" + ], + "淳于":[ + "chún yú", + "chun2 yu2" + ], + "单于":[ + "chán yú", + "chan2 yu2" + ], + "太叔":[ + "tài shū", + "tai4 shu1" + ], + "申屠":[ + "shēn tú", + "shen1 tu2" + ], + "公孙":[ + "gōng sūn", + "gong1 sun1" + ], + "仲孙":[ + "zhòng sūn", + "zhong4 sun1" + ], + "轩辕":[ + "xuān yuán", + "xuan1 yuan2" + ], + "令狐":[ + "lìng hú", + "ling4 hu2" + ], + "钟离":[ + "zhōng lí", + "zhong1 li2" + ], + "宇文":[ + "yŭ wén", + "yu3 wen2" + ], + "长孙":[ + "zhăng", + "zhang3 sun1" + ], + "慕容":[ + "mù róng", + "mu4 rong2" + ], + "鲜于":[ + "xiān yú", + "xian1 yu2" + ], + "闾丘":[ + "lǘ qiū", + "lv2 qiu1" + ], + "司徒":[ + "sī tú", + "si1 tu2" + ], + "司空":[ + "sī kōng", + "si1 kong1" + ], + "亓官":[ + "qí guān", + "qi2 guan1" + ], + "司寇":[ + "sī kòu", + "si1 kou4" + ], + "仉督":[ + "zhăng dū", + "zhang3 du1" + ], + "子车":[ + "zĭ jū", + "zi3 ju1" + ], + "颛孙":[ + "zhuān sūn", + "zhuan1 sun1" + ], + "端木":[ + "duān mù", + "duan1 mu4" + ], + "巫马":[ + "wū mă", + "wu1 ma3" + ], + "公西":[ + "gōng xī", + "gong1 xi1" + ], + "漆雕":[ + "qī diāo", + "qi1 diao1" + ], + "乐正":[ + "yuè zhèng", + "yue4 zheng4" + ], + "壤驷":[ + "răng sì", + "rang3 si4" + ], + "公良":[ + "gōng liáng", + "gong1 liang2" + ], + "拓跋":[ + "tuò bá", + "tuo4 ba2" + ], + "夹谷":[ + "jiá gŭ", + "jia2 gu3" + ], + "宰父":[ + "zăi fŭ", + "zai3 fu3" + ], + "榖梁":[ + "gŭ liáng", + "gu3 liang2" + ], + "晋楚":[ + "jìn chŭ", + "jin4 chu3" + ], + "闫法":[ + "yán fă", + "yan2 fa3" + ], + "汝鄢":[ + "rŭ yān", + "ru3 yan1" + ], + "涂钦":[ + "tú qīn", + "tu2 qin1" + ], + "段干":[ + "duàn gān", + "duan4 gan1" + ], + "百里":[ + "băi lĭ", + "bai3 li3" + ], + "东郭":[ + "dōng guō", + "dong1 guo1" + ], + "南门":[ + "nán mén", + "nan2 men2" + ], + "呼延":[ + "hū yán", + "hu1 yan2" + ], + "归海 ":[ + "guī hăi", + "gui1 hai3" + ], + "羊舌":[ + "yáng shé", + "yang2 she2" + ], + "微生":[ + "wēi shēng", + "wei1 sheng1" + ], + "岳帅":[ + "yuè shuài", + "yue4 shuai4" + ], + "缑亢":[ + "gōu kàng", + "gou1 kang4" + ], + "况后":[ + "kuàng hòu", + "kuang4 hou4" + ], + "有琴":[ + "yŏu qín", + "you3 qin2" + ], + "梁丘":[ + "liáng qiū", + "liang2 qiu1" + ], + "左丘":[ + "zuŏ qiū", + "zuo3 qiu1" + ], + "东门":[ + "dōng mén", + "dong1 men2" + ], + "西门":[ + "xī mén", + "xi1 men2" + ], + "商牟":[ + "shāng móu", + "shang1 mou2" + ], + "佘佴":[ + "shé nài", + "she2 nai4" + ], + "伯赏":[ + "bó shăng", + "bo2 shang3" + ], + "南宫":[ + "nán gōng", + "nan2 gong1" + ], + "墨哈":[ + "mò hă", + "mo4 ha3" + ], + "谯笪":[ + "qiáo dá", + "qiao2 da2" + ], + "年爱":[ + "nián ài", + "nian2 ai4" + ], + "阳佟":[ + "yáng tóng", + "yang2 tong2" + ], + "第五":[ + "dì wŭ", + "di4 wu3" + ], + "言福":[ + "yán fú", + "yan2 fu2" + ] +} diff --git a/server/pinyin-util/src/main/resources/pinyin/cn-family-names.list b/server/pinyin-util/src/main/resources/pinyin/cn-family-names.list new file mode 100644 index 0000000..7f461e9 Binary files /dev/null and b/server/pinyin-util/src/main/resources/pinyin/cn-family-names.list differ diff --git a/server/pinyin-util/src/test/java/cn/com/flaginfo/utils/NameUtilsTest.java b/server/pinyin-util/src/test/java/cn/com/flaginfo/utils/NameUtilsTest.java new file mode 100644 index 0000000..8db42ce --- /dev/null +++ b/server/pinyin-util/src/test/java/cn/com/flaginfo/utils/NameUtilsTest.java @@ -0,0 +1,60 @@ +package cn.com.flaginfo.utils; + +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +import org.junit.Test; + +import com.pudonghot.ambition.pinyin.PinyinUtil; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * xiaoning.chen@flaginfo.com.cn
+ * Jan 4, 2015 11:24:35 AM + */ +public class NameUtilsTest { + + @Test + public void testPinyin() { + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); +// format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); + format.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER); + format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); + + char[] input = "陈晓宁".trim().toCharArray(); + StringBuffer output = new StringBuffer(); + try { + for (int i = 0; i < input.length; i++) { + if (Character.toString(input[i]).matches("[\u4E00-\u9FA5]+")) { + String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format); + for (String s : temp) { + System.err.println(s); + } + output.append(temp[0]); + output.append(" "); + } else + output.append(Character.toString(input[i])); + } + } + catch (BadHanyuPinyinOutputFormatCombination e) { + e.printStackTrace(); + } + System.err.println(output); + } + + @Test + public void testGetPy() { + System.err.println(PinyinUtil.getDefaultPinyin("陈晓宁", " ", true)); + System.err.println(PinyinUtil.getNamePinyin("曾国藩", "", false)); + System.err.println(PinyinUtil.getNamePinyin("东方不败", "", true)); + System.err.println(PinyinUtil.getNamePinyin("东方不败", "_", false)); + System.err.println(PinyinUtil.getDefaultPinyin("曾国藩", " ", true)); + } +} diff --git a/server/pom.xml b/server/pom.xml new file mode 100644 index 0000000..9eccb0d --- /dev/null +++ b/server/pom.xml @@ -0,0 +1,854 @@ + + + 4.0.0 + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + pom + Ambition CRM Server + Ambition CRM Server + + + 1.8 + 1.8 + 1.8 + utf-8 + ${project.artifactId} + 8080 + / + false + 1.7.25 + 2.8.1 + 3.2.0 + 0.0.1-SNAPSHOT + 4.3.6.RELEASE + 1.5.2.RELEASE + 1.3.2 + 1.8.10 + + + + PudongHot + http://www.pudonghot.com + + + + + chyxion + Shaun Chyxion + chyxion@163.com + http://chyxion.github.io + PudongHot + http://www.pudonghot.com + + architect + developer + + Asia/Shanghai + + + + + web-parent + web-common + util + svg-util + pinyin-util + oauth + model + mapper + file-api + file-oss + file-disk + crm + + + + + + com.pudonghot.ambition + web-parent + ${project.version} + + + com.pudonghot.ambition + web-common + ${project.version} + + + com.pudonghot.ambition + util + ${project.version} + + + com.pudonghot.ambition + svg-util + ${project.version} + + + com.pudonghot.ambition + pinyin-util + ${project.version} + + + com.pudonghot.ambition + oauth + ${project.version} + + + com.pudonghot.ambition + model + ${project.version} + + + com.pudonghot.ambition + mapper + ${project.version} + + + com.pudonghot.ambition + file-api + ${project.version} + + + com.pudonghot.ambition + file-oss + ${project.version} + + + com.pudonghot.ambition + file-disk + ${project.version} + + + + me.chyxion.tigon + tigon-model + ${tigon.version} + + + me.chyxion.tigon + tigon-mybatis + ${tigon.version} + + + me.chyxion.tigon + tigon-sequence + ${tigon.version} + + + me.chyxion.tigon + tigon-webmvc-core + ${tigon.version} + + + me.chyxion.tigon + tigon-webmvc-spring-boot + ${tigon.version} + + + org.springframework.boot + spring-boot-starter-logging + + + + + me.chyxion.tigon + tigon-webmvc-war + ${tigon.version} + + + me.chyxion.tigon + tigon-redis + ${tigon.version} + + + me.chyxion.tigon + tigon-mybatis-redis-cache + ${tigon.version} + + + me.chyxion.tigon + tigon-shiro-redis-cache + ${tigon.version} + + + me.chyxion.tigon + tigon-shiro-core + ${tigon.version} + + + me.chyxion.tigon + tigon-shiro-war + ${tigon.version} + + + me.chyxion.tigon + tigon-shiro-spring-boot + ${tigon.version} + + + me.chyxion.tigon + tigon-service-api + ${tigon.version} + + + me.chyxion.tigon + tigon-service-support + ${tigon.version} + + + me.chyxion.tigon + tigon-extjs + ${tigon.version} + + + me.chyxion.tigon + tigon-freemarker-support + ${tigon.version} + + + me.chyxion.tigon + tigon-jsp-support + ${tigon.version} + + + me.chyxion.tigon + tigon-codegen + ${tigon.version} + + + me.chyxion.tigon + tigon-props-config + ${tigon.version} + + + + com.caucho + hessian + 4.0.38 + + + com.googlecode.plist + dd-plist + 1.16 + + + com.google.zxing + core + 3.2.0 + + + com.google.zxing + javase + 3.2.0 + + + org.imgscalr + imgscalr-lib + 4.2 + + + + commons-beanutils + commons-beanutils + + 1.8.3 + + + + spring-core + org.springframework + ${spring.version} + + + commons-logging + commons-logging + + + + + org.jdom + jdom + 1.1.3 + + + org.apache.commons + commons-lang3 + 3.1 + + + commons-io + commons-io + 2.4 + + + org.freemarker + freemarker + 2.3.23 + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + + + org.apache.logging.log4j + log4j-slf4j-impl + ${log4j.version} + + + + org.apache.logging.log4j + log4j-api + ${log4j.version} + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + + + + commons-codec + commons-codec + 1.10 + + + commons-logging + commons-logging + 1.2 + + + com.aliyun.oss + aliyun-sdk-oss + 2.5.0 + + + + mysql + mysql-connector-java + + + + 5.1.6 + + + + org.springframework + spring-test + ${spring.version} + + + + javax.persistence + persistence-api + 1.0.2 + + + javax.el + javax.el-api + 3.0.0 + + + javax.servlet + javax.servlet-api + 3.1.0 + + + javax.mail + mail + 1.4.7 + + + javax.servlet.jsp.jstl + jstl-api + 1.2 + + + org.projectlombok + lombok + 1.16.14 + + + org.hibernate + hibernate-validator + 5.4.0.Final + + + + org.mybatis + mybatis + 3.4.2 + + + org.mybatis + mybatis-spring + 1.3.1 + + + + com.alibaba + druid + 1.0.28 + + + org.mongodb + bson + ${mongodb.version} + + + org.springframework.data + spring-data-redis + 1.6.6.RELEASE + + + redis.clients + jedis + 2.9.0 + + + + org.apache.shiro + shiro-core + ${shiro.version} + + + org.apache.shiro + shiro-web + ${shiro.version} + + + org.apache.shiro + shiro-spring + ${shiro.version} + + + commons-fileupload + commons-fileupload + 1.3.2 + + + + cglib + cglib + 3.2.4 + + + org.aspectj + aspectjrt + ${aspectj.version} + + + org.aspectj + aspectjweaver + ${aspectj.version} + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + org.springframework.boot + spring-boot + ${spring-boot.version} + + + org.springframework.boot + spring-boot-autoconfigure + ${spring-boot.version} + + + org.springframework.boot + spring-boot-starter-web + ${spring-boot.version} + + + org.springframework.boot + spring-boot-test + ${spring-boot.version} + + + + com.alibaba + fastjson + 1.2.24 + + + + junit + junit + 4.12 + + + + + + + + org.apache.maven.plugins + maven-clean-plugin + + + com.coderplus.maven.plugins + copy-rename-maven-plugin + + + org.apache.maven.plugins + maven-resources-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + org.apache.maven.plugins + maven-dependency-plugin + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + true + ${start-class} + ZIP + + + + + repackage + + + + + + org.apache.maven.plugins + maven-clean-plugin + 2.6.1 + + + remove-config-file + clean + validate + + true + + + src/main/resources/spring + + config.properties + + + + src/main/resources + + application.properties + application.yaml + log4j2.xml + + + + + + + + + com.coderplus.maven.plugins + copy-rename-maven-plugin + 1.0 + + + copy-config-props-file + generate-resources + + copy + + + src/main/resources/config_${project.activeProfiles[0].id}.properties + src/main/resources/spring/config.properties + + + + copy-application-props-file + generate-resources + + copy + + + src/main/resources/application_${project.activeProfiles[0].id}.properties + src/main/resources/application.properties + + + + copy-application-yaml-file + generate-resources + + copy + + + src/main/resources/application_${project.activeProfiles[0].id}.yaml + src/main/resources/application.yaml + + + + copy-log4j2-xml-file + generate-resources + + copy + + + src/main/resources/log4j2_${project.activeProfiles[0].id}.xml + src/main/resources/log4j2.xml + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.7 + + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + ${maven.compiler.source} + ${maven.compiler.target} + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-source-plugin + 2.4 + + + attach-sources + install + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.10 + + + copy-dependencies + package + + copy-dependencies + + + + target/lib + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.6 + + + + true + true + true + + + Shaun Chyxion + + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + + package + + shade + + + ${project.artifactId} + true + jar-with-dependencies + + + ${start-class} + + + META-INF/spring.handlers + + + META-INF/spring.schemas + + + META-INF/spring.tooling + + + + + + + + org.apache.maven.plugins + maven-war-plugin + 2.6 + + 3.0 + ${war.name} + false + + + src/main/webapp + ${web.resources.filtering} + + **/*.xml + **/*.jsp + **/*.html + **/*.css + **/*.js + **/*.ftl + + + + src/main/webapp + false + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + ${maven.tomcat.port} + ${maven.tomcat.path} + utf-8 + utf-8 + false + + ${maven.tomcat.port} + ${project.basedir} + + + + + org.apache.maven.plugins + maven-help-plugin + 2.2 + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.apache.maven.plugins + maven-clean-plugin + + [2.6.1,) + + + clean + + + + + + + + + + + + + + + + src/main/resources + false + + config_*.properties + application_*.properties + application_*.yaml + log4j2_*.xml + + + + src/main/resources + true + + **/*.xml + **/*.properties + **/*.txt + + + config_*.properties + application_*.properties + application_*.yaml + log4j2_*.xml + + + + + + src/test/resources + false + + + src/test/resources + true + + **/*.txt + **/*.xml + **/*.properties + + + + + diff --git a/server/svg-util/README.md b/server/svg-util/README.md new file mode 100644 index 0000000..a330497 --- /dev/null +++ b/server/svg-util/README.md @@ -0,0 +1 @@ +#umsapp-ota-data-model diff --git a/server/svg-util/pom.xml b/server/svg-util/pom.xml new file mode 100644 index 0000000..544267d --- /dev/null +++ b/server/svg-util/pom.xml @@ -0,0 +1,63 @@ + + + 4.0.0 + svg-util + Ambition SVG Util + jar + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + org.slf4j + slf4j-api + + + commons-codec + commons-codec + + + org.apache.commons + commons-lang3 + + + org.apache.xmlgraphics + xmlgraphics-commons + 2.1 + + + org.apache.xmlgraphics + batik-codec + 1.8 + + + org.apache.xmlgraphics + batik-transcoder + 1.8 + + + + dom4j + dom4j + 1.6.1 + + + org.projectlombok + lombok + + + + junit + junit + test + + + diff --git a/server/svg-util/run b/server/svg-util/run new file mode 100755 index 0000000..83c1664 --- /dev/null +++ b/server/svg-util/run @@ -0,0 +1,9 @@ +#!/bin/bash + +export MAVEN_OPTS="-noverify -agentpath:/usr/local/JRebel/6.3.2/lib/libjrebel64.dylib -Drebel.dirs=target -Drebel.disable_update=true -Ddev=true" +set JAVA_OPTS=$MAVEN_OPTS +mvn -Pdev clean tomcat7:run +unset JAVA_OPTS +unset MAVEN_OPTS + + diff --git a/server/svg-util/src/main/java/com/pudonghot/ambition/svg/SvgUtil.java b/server/svg-util/src/main/java/com/pudonghot/ambition/svg/SvgUtil.java new file mode 100644 index 0000000..4a4fe12 --- /dev/null +++ b/server/svg-util/src/main/java/com/pudonghot/ambition/svg/SvgUtil.java @@ -0,0 +1,167 @@ +package com.pudonghot.ambition.svg; + +import org.dom4j.Element; +import org.dom4j.Document; +import java.util.Iterator; +import java.io.IOException; +import java.io.InputStream; +import org.dom4j.io.SAXReader; +import org.xml.sax.SAXException; +import lombok.extern.slf4j.Slf4j; +import org.dom4j.DocumentException; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import org.apache.commons.io.IOUtils; +import java.nio.charset.StandardCharsets; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.CharEncoding; +import org.apache.batik.transcoder.TranscoderInput; +import org.apache.batik.transcoder.TranscoderOutput; +import org.apache.batik.transcoder.image.PNGTranscoder; +import org.apache.batik.transcoder.TranscoderException; + +/** + * @version 0.0.1 + * @since 0.0.1 + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Aug 9, 2016 5:52:31 PM + */ +@Slf4j +public class SvgUtil { + + /** + * @param bytesSvg + * @return + */ + public static boolean isSvg(byte[] bytesSvg) { + return isSvg(new ByteArrayInputStream(bytesSvg)); + } + + /** + * @param insSvg + * @return + */ + public static boolean isSvg(InputStream insSvg) { + try { + read(insSvg); + return true; + } + catch (Exception e) { + log.info("Input Stream Is Not Svg.", e); + return false; + } + finally { + IOUtils.closeQuietly(insSvg); + } + } + + /** + * @param bytesSvg + * @param color + * @param width + * @param height + * @return + */ + public static byte[] convertToPng(byte[] bytesSvg, String color, int width, int height) { + return convertToPng(bytesSvg, + color, + toPxOrNull(width), + toPxOrNull(height)); + } + + /** + * @param bytesSvg + * @param color + * @param width + * @param height + * @return + */ + public static byte[] convertToPng(byte[] bytesSvg, String color, String width, String height) { + return convertToPng(new ByteArrayInputStream(bytesSvg), color, width, height); + } + + public static byte[] convertToPng(InputStream insSvg, String color, int width, int height) { + return convertToPng(insSvg, color, toPxOrNull(width), toPxOrNull(height)); + } + + /** + * @param insSvg + * @param color + * @param width + * @param height + * @return + */ + public static byte[] convertToPng(InputStream insSvg, String color, String width, String height) { + ByteArrayOutputStream baosPng = null; + try { + final byte[] bytesSvg = apply(insSvg, color, width, height); + baosPng = new ByteArrayOutputStream(); + final PNGTranscoder transcoder = new PNGTranscoder(); + transcoder.transcode( + new TranscoderInput(new ByteArrayInputStream(bytesSvg)), + new TranscoderOutput(baosPng)); + baosPng.flush(); + return baosPng.toByteArray(); + } + catch (TranscoderException | IOException e) { + throw new IllegalStateException( + "Convert SVG To PNG Error Caused", e); + } + finally { + IOUtils.closeQuietly(baosPng); + IOUtils.closeQuietly(insSvg); + } + } + + protected static byte[] apply(InputStream insSvg, String color, String width, String height) { + return apply0(insSvg, color, width, height).asXML().getBytes(StandardCharsets.UTF_8); + } + + protected static Document apply0(InputStream insSvg, String color, String width, String height) { + Document document = read(insSvg); + log.debug("Process SVG [{}] To Color [{}] Width [{}] Height [{}].", document, width, height); + Element rootEl = document.getRootElement(); + if (StringUtils.isNotBlank(width)) { + rootEl.attribute("width").setValue(width); + } + if (StringUtils.isNotBlank(height)) { + rootEl.attribute("height").setValue(height); + } + @SuppressWarnings("unchecked") + Iterator paths = (Iterator) rootEl.elementIterator("path"); + while (paths.hasNext()) { + paths.next().attribute("fill").setValue(color); + } + return document; + } + + protected static String toPxOrNull(int size) { + return size > 0 ? size + "px" : null; + } + + protected static Document read(InputStream insSvg) { + SAXReader reader = new SAXReader(); + // disable validate + String feature = "http://apache.org/xml/features/nonvalidating/load-external-dtd"; + try { + reader.setFeature(feature, false); + } + catch (SAXException e) { + throw new IllegalStateException( + "SAXReader Disable Feature [" + + feature + "] Errro Caused", e); + } + reader.setEncoding(CharEncoding.UTF_8); + reader.setIncludeExternalDTDDeclarations(false); + reader.setIncludeInternalDTDDeclarations(false); + reader.setValidation(false); + try { + return reader.read(insSvg); + } + catch (DocumentException e) { + throw new IllegalStateException( + "Read SVG Input Stream Error Caused", e); + } + } +} diff --git a/server/svg-util/src/main/resources/codegen/config.properties b/server/svg-util/src/main/resources/codegen/config.properties new file mode 100644 index 0000000..4478681 --- /dev/null +++ b/server/svg-util/src/main/resources/codegen/config.properties @@ -0,0 +1,6 @@ +# CodeGen Config +base.cols=enabled,note,date_created,date_updated,created_by,updated_by +base.package=com.pudonghot.ambition +super.base.model.name=M2 +super.base.model.full.name=me.chyxion.tigon.model.M2 +table.prefix=ph \ No newline at end of file diff --git a/server/svg-util/src/main/resources/config_dev.properties b/server/svg-util/src/main/resources/config_dev.properties new file mode 100644 index 0000000..6ddc32d --- /dev/null +++ b/server/svg-util/src/main/resources/config_dev.properties @@ -0,0 +1,6 @@ +# Config Dev + +# Database +db.url=jdbc:mysql://127.0.0.1:43306/pudong_hot +db.user=root +db.password=696@2^~)oZ@^#*Q \ No newline at end of file diff --git a/server/svg-util/src/main/resources/spring/spring-db.xml b/server/svg-util/src/main/resources/spring/spring-db.xml new file mode 100644 index 0000000..970aa84 --- /dev/null +++ b/server/svg-util/src/main/resources/spring/spring-db.xml @@ -0,0 +1,13 @@ + + + + diff --git a/server/svg-util/src/test/resources/spring/config.properties b/server/svg-util/src/test/resources/spring/config.properties new file mode 100644 index 0000000..3ded7d3 --- /dev/null +++ b/server/svg-util/src/test/resources/spring/config.properties @@ -0,0 +1,11 @@ +# Config Dev + +# Database +db.url=jdbc:mysql://127.0.0.1:3307/echat_sit +db.user=flaginfo_echat +db.password=echat407 + +# Redis +redis.host=127.0.0.1 +redis.port=6379 +redis.password=0211 \ No newline at end of file diff --git a/server/util/README.md b/server/util/README.md new file mode 100644 index 0000000..a330497 --- /dev/null +++ b/server/util/README.md @@ -0,0 +1 @@ +#umsapp-ota-data-model diff --git a/server/util/pom.xml b/server/util/pom.xml new file mode 100644 index 0000000..c60b5dd --- /dev/null +++ b/server/util/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + util + Ambition Util + jar + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + commons-codec + commons-codec + + + org.apache.commons + commons-lang3 + + + org.hibernate + hibernate-validator + + + commons-beanutils + commons-beanutils + + + javax.servlet + javax.servlet-api + provided + + + org.projectlombok + lombok + + + + junit + junit + test + + + diff --git a/server/util/run b/server/util/run new file mode 100755 index 0000000..83c1664 --- /dev/null +++ b/server/util/run @@ -0,0 +1,9 @@ +#!/bin/bash + +export MAVEN_OPTS="-noverify -agentpath:/usr/local/JRebel/6.3.2/lib/libjrebel64.dylib -Drebel.dirs=target -Drebel.disable_update=true -Ddev=true" +set JAVA_OPTS=$MAVEN_OPTS +mvn -Pdev clean tomcat7:run +unset JAVA_OPTS +unset MAVEN_OPTS + + diff --git a/server/util/src/main/java/com/pudonghot/ambition/util/HttpServletRequestUtils.java b/server/util/src/main/java/com/pudonghot/ambition/util/HttpServletRequestUtils.java new file mode 100644 index 0000000..7f10f13 --- /dev/null +++ b/server/util/src/main/java/com/pudonghot/ambition/util/HttpServletRequestUtils.java @@ -0,0 +1,34 @@ +package com.pudonghot.ambition.util; + +import org.apache.commons.lang3.StringUtils; +import javax.servlet.http.HttpServletRequest; + +/** + * @author Donghuang
+ * donghuang@wacai.com
+ * Mar 14, 2017 23:31:15 + */ +public class HttpServletRequestUtils { + + /** + * get client ip + * @param request + * @return + */ + public static String getClientIP(HttpServletRequest request) { + for (String header : new String[] { + "X-Forwarded-For", "X-Real-IP", + "Proxy-Client-IP", "WL-Proxy-Client-IP", + "HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED", + "HTTP_X_CLUSTER_CLIENT_IP", "HTTP_CLIENT_IP", + "HTTP_FORWARDED_FOR", "HTTP_FORWARDED", + "HTTP_VIA", "REMOTE_ADDR" }) { + String ip = request.getHeader(header); + if (StringUtils.isNotBlank(ip) && + !"UNKNOWN".equalsIgnoreCase(ip)) { + return ip; + } + } + return request.getRemoteAddr(); + } +} diff --git a/server/util/src/main/java/com/pudonghot/ambition/util/Sha512Utils.java b/server/util/src/main/java/com/pudonghot/ambition/util/Sha512Utils.java new file mode 100644 index 0000000..bc90d1a --- /dev/null +++ b/server/util/src/main/java/com/pudonghot/ambition/util/Sha512Utils.java @@ -0,0 +1,25 @@ +package com.pudonghot.ambition.util; + +import java.security.MessageDigest; +import org.apache.commons.codec.binary.Hex; +import org.apache.commons.codec.digest.DigestUtils; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 11, 2017 10:33:39 + */ +public final class Sha512Utils { + + /** + * @param value + * @param salt + * @return + */ + public static String encode(String value, String salt) { + MessageDigest digest = DigestUtils.getSha512Digest(); + digest.reset(); + digest.update(salt.getBytes()); + return Hex.encodeHexString(digest.digest(value.getBytes())); + } +} diff --git a/server/util/src/main/resources/.gitkeep b/server/util/src/main/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/util/src/test/resources/.gitkeep b/server/util/src/test/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/web-common/README.md b/server/web-common/README.md new file mode 100644 index 0000000..f9b99f3 --- /dev/null +++ b/server/web-common/README.md @@ -0,0 +1 @@ +#flaginfo-web-parent diff --git a/server/web-common/pom.xml b/server/web-common/pom.xml new file mode 100644 index 0000000..31b96f3 --- /dev/null +++ b/server/web-common/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + web-common + jar + PudongHot Ambition Web Common + PudongHot Ambition Web Common + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + + me.chyxion.tigon + tigon-webmvc-core + + + + org.projectlombok + lombok + provided + + + javax.servlet + javax.servlet-api + provided + + + diff --git a/server/web-common/src/main/java/com/pudonghot/ambition/web/interceptor/DefaultHttpRequestInterceptor.java b/server/web-common/src/main/java/com/pudonghot/ambition/web/interceptor/DefaultHttpRequestInterceptor.java new file mode 100644 index 0000000..8575125 --- /dev/null +++ b/server/web-common/src/main/java/com/pudonghot/ambition/web/interceptor/DefaultHttpRequestInterceptor.java @@ -0,0 +1,51 @@ +package com.pudonghot.ambition.web.interceptor; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.PathMatcher; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.springframework.web.servlet.ModelAndView; +import me.chyxion.tigon.webmvc.TigonHandlerInterceptor; + +/** + * @author Shaun Chyxion
+ * chyxion@163.com
+ * Mar 19, 2017 21:50:57 + */ +@Slf4j +public class DefaultHttpRequestInterceptor implements TigonHandlerInterceptor { + + @Override + public String[] includePathPatterns() { + return new String[] {"/**"}; + } + + @Override + public String[] excludePathPatterns() { + return null; + } + + @Override + public PathMatcher pathMatcher() { + return null; + } + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + log.info("Request [{}] With Params [{}].", request.getRequestURI(), request.getParameterMap()); + request.setAttribute("startTime", System.currentTimeMillis()); + return true; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + log.info("Request [{}] Took {} ms.", + request.getRequestURI(), + System.currentTimeMillis() - (Long) request.getAttribute("startTime")); + } +} diff --git a/server/web-common/src/main/resources/spring/spring-ambition-web-common.xml b/server/web-common/src/main/resources/spring/spring-ambition-web-common.xml new file mode 100644 index 0000000..36f3bab --- /dev/null +++ b/server/web-common/src/main/resources/spring/spring-ambition-web-common.xml @@ -0,0 +1,7 @@ + + + + diff --git a/server/web-parent/README.md b/server/web-parent/README.md new file mode 100644 index 0000000..f9b99f3 --- /dev/null +++ b/server/web-parent/README.md @@ -0,0 +1 @@ +#flaginfo-web-parent diff --git a/server/web-parent/pom.xml b/server/web-parent/pom.xml new file mode 100644 index 0000000..2a6675f --- /dev/null +++ b/server/web-parent/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + web-parent + pom + PudongHot Ambition Web Parent + PudongHot Ambition Web Parent + + + com.pudonghot.ambition + ambition + 0.0.1-SNAPSHOT + ../ + + + + ${project.artifactId} + + + + + me.chyxion.tigon + tigon-webmvc-spring-boot + + + spring-boot-starter-logging + org.springframework.boot + + + + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-core + + + com.pudonghot.ambition + web-common + + + org.projectlombok + lombok + + + + ${project.build.finalName} + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/web/.editorconfig b/web/.editorconfig new file mode 100644 index 0000000..47c5438 --- /dev/null +++ b/web/.editorconfig @@ -0,0 +1,34 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 2 + +[*.js] +indent_style = space +indent_size = 2 + +[*.hbs] +insert_final_newline = false +indent_style = space +indent_size = 2 + +[*.css] +indent_style = space +indent_size = 2 + +[*.html] +indent_style = space +indent_size = 2 + +[*.{diff,md}] +trim_trailing_whitespace = false diff --git a/web/.ember-cli b/web/.ember-cli new file mode 100644 index 0000000..ee64cfe --- /dev/null +++ b/web/.ember-cli @@ -0,0 +1,9 @@ +{ + /** + Ember CLI sends analytics information by default. The data is completely + anonymous, but there are times when you might want to disable this behavior. + + Setting `disableAnalytics` to true will prevent any data from being sent. + */ + "disableAnalytics": false +} diff --git a/web/.jshintrc b/web/.jshintrc new file mode 100644 index 0000000..21c09c5 --- /dev/null +++ b/web/.jshintrc @@ -0,0 +1,35 @@ +{ + "predef": [ + "document", + "window", + "-Promise", + "bootbox", + "validate", + "Cookies" + ], + "browser": true, + "boss": true, + "curly": true, + "debug": false, + "devel": true, + "eqeqeq": true, + "evil": true, + "forin": false, + "immed": false, + "laxbreak": false, + "newcap": true, + "noarg": true, + "noempty": false, + "nonew": false, + "nomen": false, + "onevar": false, + "plusplus": false, + "regexp": false, + "undef": true, + "sub": true, + "strict": false, + "white": false, + "eqnull": true, + "esnext": true, + "unused": true +} diff --git a/web/.travis.yml b/web/.travis.yml new file mode 100644 index 0000000..64533be --- /dev/null +++ b/web/.travis.yml @@ -0,0 +1,22 @@ +--- +language: node_js +node_js: + - "4" + +sudo: false + +cache: + directories: + - node_modules + +before_install: + - npm config set spin false + - npm install -g bower + - npm install phantomjs-prebuilt + +install: + - npm install + - bower install + +script: + - npm test diff --git a/web/.watchmanconfig b/web/.watchmanconfig new file mode 100644 index 0000000..e7834e3 --- /dev/null +++ b/web/.watchmanconfig @@ -0,0 +1,3 @@ +{ + "ignore_dirs": ["tmp", "dist"] +} diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..40ef6c4 --- /dev/null +++ b/web/README.md @@ -0,0 +1,120 @@ +# EChat-ota + +This README outlines the details of collaborating on this Ember application. +A short introduction of this app could easily go here. + +## Prerequisites + +You will need the following things properly installed on your computer. + +* [Git](http://git-scm.com/) +* [Node.js](http://nodejs.org/) (with NPM) +* [Bower](http://bower.io/) +* [Ember CLI](http://www.ember-cli.com/) +* [PhantomJS](http://phantomjs.org/) + +## Installation + +* `git clone ` this repository +* change into the new directory +* `npm install` +* `bower install` + +## Running / Development + +* `ember server` +* Visit your app at [http://localhost:4200](http://localhost:4200). + +### Code Generators + +Make use of the many generators for code, try `ember help generate` for more details + +### Running Tests + +* `ember test` +* `ember test --server` + +### Building + +* `ember build` (development) +* `ember build --environment production` (production) + +### Deploying + +Specify what it takes to deploy your app. + +## Further Reading / Useful Links + +* [ember.js](http://emberjs.com/) +* [ember-cli](http://www.ember-cli.com/) +* Development Browser Extensions +* [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi) +* [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/) + +Install Bootstrap + bower install bootstrap --save +Afterwards add following two lines to your ember-cli-build.js + app.import(app.bowerDirectory + '/bootstrap/dist/js/bootstrap.js'); + app.import(app.bowerDirectory + '/bootstrap/dist/css/bootstrap.css'); + +Install Moment + ember install ember-moment +Install Colorbox + bower install jquery-colorbox --save + app.import(app.bowerDirectory + '/jquery-colorbox/jquery.colorbox-min.js'); + +Install Bootbox + bower install bootbox --save +Afterwards add following two lines to your ember-cli-build.js + app.import(app.bowerDirectory + '/bootstrap/dist/js/bootstrap.js'); + app.import(app.bowerDirectory + '/bootstrap/dist/css/bootstrap.css'); + +Install validate + bower install validate --save + +Install ember-select-2 + ember install ember-select-2 + +Install js-cookie + bower install js-cookie --save + app.import(app.bowerDirectory + '/js-cookie/src/js.cookie.js'); + +Install jQuery-Storage-API + bower install jQuery-Storage-API --save + app.import(app.bowerDirectory + '/jquery-storage-api/jquery.storageapi.min.js'); + +Install Font Awesome + bower install font-awesome --save + app.import(app.bowerDirectory + '/font-awesome/css/font-awesome.min.css'); + +npm install broccoli-funnel --save-dev + +npm install valid-url --save-dev + +Install Bootstrap Color Picker + bower install bootstrap-colorpicker --save + +Install Route Action Helper + ember install ember-route-action-helper + +Install EmberX Select + ember install emberx-select + +Install fuelux +bower install fuelux --save + +This is an example for using the npm package dexie within an Ember CLI app. + +Install browserify: npm install ember-browserify --save-dev + +Install dexie (or whatever module you need): npm install dexie --save-dev + +Import the module like this: import Dexie from 'npm:dexie'; + +Install JQuery HotKeys + bower install jquery.hotkeys + +Install Bootstrap WYSIWYG + bower install bootstrap-wysiwyg + +bower install bootstrap-treeview \ No newline at end of file diff --git a/web/app/app.js b/web/app/app.js new file mode 100644 index 0000000..62f00d1 --- /dev/null +++ b/web/app/app.js @@ -0,0 +1,25 @@ +import Ember from 'ember'; +import Resolver from './resolver'; +import loadInitializers from 'ember-load-initializers'; +import config from './config/environment'; + +let App; + +// Ember.MODEL_FACTORY_INJECTIONS = true; + +App = Ember.Application.extend({ + modulePrefix: config.modulePrefix, + podModulePrefix: config.podModulePrefix, + Resolver +}); + +if (config.environment === 'production') { + Ember.$.ajaxSetup({ + beforeSend(jqXHR, opt) { + opt.url = '/api/' + opt.url; + } + }); +} +loadInitializers(App, config.modulePrefix); + +export default App; diff --git a/web/app/components/ace-login.js b/web/app/components/ace-login.js new file mode 100644 index 0000000..59746e2 --- /dev/null +++ b/web/app/components/ace-login.js @@ -0,0 +1,57 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + classNames: ['container-fluid'], + errors: {}, + model: { + rememberMe: false + }, + constraints: { + loginId: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + password: { + presence: true, + length: { + minimum: 4 + } + } + }, + didInsertElement() { + let me = this; + Ember.$('body').removeClass().addClass('login-layout blur-login'); + }, + willDestroy() { + Ember.$('body').removeClass('login-layout blur-login').addClass('no-skin'); + }, + actions: { + login() { + let me = this; + me.validate() || me.get('onLogin')(me.get('model')); + }, + loginIdInsertNewline(loginId) { + Ember.Logger.info('Login Id Insert Newline', loginId); + this.send('login'); + }, + loginIdKeyPress(loginId) { + loginId && this.set('errors.loginId', null); + }, + passwordInsertNewline(password) { + // Ember.Logger.info('Password Insert Newline', password); + this.send('login'); + }, + passwordKeyPress(password) { + password && this.set('errors.password', null); + }, + }, + validate() { + let me = this; + let vr = validate(me.get('model'), me.get('constraints')); + vr && me.set('errors', vr); + return vr; + } +}); diff --git a/web/app/components/app/app-manage.js b/web/app/components/app/app-manage.js new file mode 100644 index 0000000..bad856a --- /dev/null +++ b/web/app/components/app/app-manage.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + page: 1 +}); diff --git a/web/app/components/app/manage-sidebar.js b/web/app/components/app/manage-sidebar.js new file mode 100644 index 0000000..2b223a9 --- /dev/null +++ b/web/app/components/app/manage-sidebar.js @@ -0,0 +1,33 @@ +import Ember from 'ember'; + +import BaseComponent from '../base-component'; + +export default BaseComponent.extend({ + classNames: ['sidebar'], + didReceiveAttrs() { + let me = this; + if (!me.get('appId')) { + let routeName = me.get('routeName'); + let parentRouteName = null; + let appId = null; + while (parentRouteName !== routeName) { + appId = me.getRouteParams(routeName).appId; + if (appId) { + Ember.Logger.info(`App Id [${appId}] Found In Route [${routeName}]`); + break; + } + if (!parentRouteName) { + parentRouteName = me.getParentRouteName(routeName); + } + routeName = parentRouteName; + parentRouteName = me.getParentRouteName(routeName); + } + if (appId) { + me.set('appId', appId); + } + else { + Ember.Logger.error('No App Id'); + } + } + } +}); diff --git a/web/app/components/base-component.js b/web/app/components/base-component.js new file mode 100644 index 0000000..87a0d74 --- /dev/null +++ b/web/app/components/base-component.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; +import BaseComponentMixin from '../mixins/components/base-component'; + +export default Ember.Component.extend(BaseComponentMixin, {}); diff --git a/web/app/components/base-form-input.js b/web/app/components/base-form-input.js new file mode 100644 index 0000000..69cd91b --- /dev/null +++ b/web/app/components/base-form-input.js @@ -0,0 +1,17 @@ +import Ember from 'ember'; +import BaseComponent from './base-component'; + +export default BaseComponent.extend({ + classNameBindings: ['hasError:has-error'], + model: Ember.computed.alias('route.controller.model'), + errors: Ember.computed.alias('route.controller.errors'), + hasError: Ember.computed('errors', function() { + return this.get('errors.' + this.get('name')); + }), + getVal() { + return this.get('model.' + this.get('name')); + }, + setVal(val) { + this.set('model.' + this.get('name'), val); + } +}); diff --git a/web/app/components/breadcrumbs-bar.js b/web/app/components/breadcrumbs-bar.js new file mode 100644 index 0000000..6b6671a --- /dev/null +++ b/web/app/components/breadcrumbs-bar.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + classNames: ['breadcrumbs'] +}); diff --git a/web/app/components/date-cell.js b/web/app/components/date-cell.js new file mode 100644 index 0000000..e815f7a --- /dev/null +++ b/web/app/components/date-cell.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + tagName: 'span' +}); diff --git a/web/app/components/editable-cell.js b/web/app/components/editable-cell.js new file mode 100644 index 0000000..c5eec5d --- /dev/null +++ b/web/app/components/editable-cell.js @@ -0,0 +1,72 @@ +import Ember from 'ember'; +import BaseComponent from './base-component'; + +export default BaseComponent.extend({ + allowBlank: true, + actions: { + doEdit() { + var me = this; + me.set('oldValue', me.getFieldValue()); + me.set('isEditing', true) + Ember.run.later(() => { + Ember.$('input[type="text"][name="' + me.get('model.id') + '"]').focus(); + }, 128); + }, + doUpdate() { + let me = this; + if (me.get('isUpdating')) { + Ember.Logger.info('Cell Is Updating, Ignore.'); + return; + } + me.set('isUpdating', true); + let newValue = me.getFieldValue(); + if (me.get('oldValue') !== newValue) { + if (!me.get('allowBlank') && !newValue) { + me.get('message').warn('属性不能为空'); + // reset field value + me.resetValue(); + me.set('isUpdating', false); + } + else { + let service = me.get('service'); + let model = me.get('model'); + let vr = service.updateValidate(model); + if (vr) { + Ember.Logger.info('Validate Result: ', vr); + me.get('message').warn(Object.keys(vr).map((e)=> { + return vr[e]; + }).reduce((msg, e)=> { + return (msg ? msg + '
' : '') + e.join('
'); + }, '')); + // reset field value + me.resetValue(); + me.set('isUpdating', false); + } + else { + me.dialog.confirm('确认要更新吗?', () => { + service.update(model, true); + me.set('isUpdating', false); + }, + () => { + // reset field value + me.resetValue(); + me.set('isUpdating', false); + }); + } + } + } + else { + Ember.Logger.info('Field Value Not Changed.') + me.set('isUpdating', false); + } + me.set('isEditing', false); + } + }, + getFieldValue() { + return this.get('model.' + this.get('field')); + }, + resetValue() { + let me = this; + me.set('model.' + me.get('field'), me.get('oldValue')); + } +}); diff --git a/web/app/components/form-content.js b/web/app/components/form-content.js new file mode 100644 index 0000000..7b9fd51 --- /dev/null +++ b/web/app/components/form-content.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + classNames: ['page-content'] +}); diff --git a/web/app/components/form-footer-buttons.js b/web/app/components/form-footer-buttons.js new file mode 100644 index 0000000..2bb94c6 --- /dev/null +++ b/web/app/components/form-footer-buttons.js @@ -0,0 +1,90 @@ +import Ember from 'ember'; +import BaseComponent from './base-component'; + +export default BaseComponent.extend({ + classNames: ['form-actions', 'center', 'no-margin-bottom'], + type: 'create', + form: true, + didReceiveAttrs() { + const me = this; + let backRouteName = me.get('backRouteName'); + if (Ember.isNone(backRouteName)) { + let listRouteName = me.get('routeName').replace(/[^.]+$/, 'list'); + // find route + if (!me.getRoute(listRouteName)) { + // no list route found, find parent + listRouteName = listRouteName.replace(/[^.]+\.[^.]+$/, 'list'); + } + me.set('backRouteName', listRouteName); + // list route params + Ember.isNone(me.get('backRouteParams')) + && me.set('backRouteParams', 1); + } + }, + actions: { + goback() { + let me = this; + let router = me.get('router'); + let routeName = me.get('backRouteName'); + let routeParams = me.get('backRouteParams'); + let queryParams = me.get('backRouteQueryParams'); + let params = [routeName]; + if (!Ember.isNone(routeParams)) { + if (Ember.isArray(routeParams)) { + params = params.concat(routeParams); + } + else if (routeParams !== false) { + params.push(routeParams); + } + } + Ember.isNone(queryParams) || + params.push({queryParams: queryParams}); + router.transitionTo(...params); + }, + save() { + let me = this; + if (!me.validate()) { + me.dialog.confirm('确认要提交吗?', () => { + me.postData().then((m) => { + Ember.Logger.info('Post Model Result: ', m); + // write back + // TODO write update back + Ember.setProperties(me.getModel(), m); + me.alertMessage(); + me.send('goback'); + }); + }); + } + } + }, + isCreate() { + return this.get('type') === 'create'; + }, + validate() { + let me = this; + let vr = me.get('service').validate( + me.getModel(), me.get('type') + 'Constraints'); + me.set('route.controller.errors', vr || {}); + return vr; + }, + postData() { + let me = this; + let data = me.get('form') ? + new FormData(me.$().closest('form')[0]) : + me.getModel(); + let postUrl = me.get('postUrl'); + if (postUrl) { + return me.get('store').ajaxPost(postUrl, data); + } + let service = me.get('service'); + return me.isCreate() ? service.create(data) : service.update(data); + }, + alertMessage() { + let me = this; + me.message.alert(me.get('sucessMsg') || + (me.isCreate() ? '创建成功' : '更新成功')); + }, + getModel() { + return this.get('route.controller.model'); + } +}); diff --git a/web/app/components/form-input-checkbox.js b/web/app/components/form-input-checkbox.js new file mode 100644 index 0000000..16e1a7a --- /dev/null +++ b/web/app/components/form-input-checkbox.js @@ -0,0 +1,13 @@ +import Ember from 'ember'; +import BaseFormInput from './base-form-input'; + +export default BaseFormInput.extend({ + label: '状态', + name: 'enabled', + classNames: ['form-group'], + didReceiveAttrs() { + let me = this; + me._super(...arguments); + Ember.isNone(me.getVal()) && me.setVal(false); + } +}); diff --git a/web/app/components/form-input-color.js b/web/app/components/form-input-color.js new file mode 100644 index 0000000..f849b5b --- /dev/null +++ b/web/app/components/form-input-color.js @@ -0,0 +1,82 @@ +import Ember from 'ember'; +import BaseFormInput from './base-form-input'; + +export default BaseFormInput.extend({ + classNames: ['form-group'], + didReceiveAttrs() { + let me = this; + me._super(...arguments); + + Ember.addObserver(me, me.getFieldPath(), me, 'colorChanged'); + me.colorChanged(); + }, + didInsertElement() { + let me = this; + me._super(...arguments); + me.getInputEl().colorpicker({format: 'rgba'}).on('changeColor', function(e) { + if (!me.get('lockColor')) { + me.set(me.getFieldPath(), e.color.toString()); + } + }); + }, + colorChanged() { + let me = this; + let color = me.get(me.getFieldPath()); + if (!me.get('lockColor')) { + me.set('lockHexColor', true); + me.set('hexColor', me.rgbaStr2hex(color)); + me.set('lockHexColor', false); + } + let el = me.getInputEl(); + if (el) { + me.set('lockColor', true); + el.colorpicker('setValue', color); + me.set('lockColor', false); + } + }, + hexColorObserver: Ember.observer('hexColor', function() { + let me = this; + if (!me.get('lockHexColor')) { + let hexColor = me.get('hexColor'); + if (hexColor && (hexColor = hexColor.trim())) { + let rgb = me.hexToRgb(hexColor); + if (rgb) { + Ember.Logger.info('Hex Color Changed.', rgb); + me.set('lockColor', true); + me.set(me.getFieldPath(), `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 1)`); + me.set('lockColor', false); + } + } + } + }), + getFieldPath() { + return 'model.' + this.get('name'); + }, + getInputEl() { + return this.$('.colorpicker-component'); + }, + rgbaRegex: /\s*rgba\s*\(\s*([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\s*,\s*([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\s*,\s*([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\s*,\s*(0(?:\.\d+)?|1(?:\.0+)?)\s*\)\s*/i, + rgbaStr2hex(rgba) { + let me = this; + if (rgba) { + let m = rgba.match(me.rgbaRegex); + return me.rgb2hex(m[1], m[2], m[3]); + } + }, + rgb2hex(red, green, blue) { + return '#' + (0x1000000 + (blue | (green << 8) | (red << 16))).toString(16).slice(1); + }, + hexToRgb(hex) { + // #rgb -> #rrggbb + hex = hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + + let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; + } +}); diff --git a/web/app/components/form-input-errors-msg.js b/web/app/components/form-input-errors-msg.js new file mode 100644 index 0000000..590fc4c --- /dev/null +++ b/web/app/components/form-input-errors-msg.js @@ -0,0 +1,6 @@ +import Ember from 'ember'; +import BaseFormInput from './base-form-input'; + +export default BaseFormInput.extend({ + classNames: ['inline'] +}); diff --git a/web/app/components/form-input-modal-select.js b/web/app/components/form-input-modal-select.js new file mode 100644 index 0000000..0b8194a --- /dev/null +++ b/web/app/components/form-input-modal-select.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import BaseFormInput from './base-form-input'; + +export default BaseFormInput.extend({ + classNames: ['form-group'], + classNameBindings: ['hasError:has-error'], + hasError: Ember.computed('route.controller.errors', function() { + return this.get('errors.' + this.get('idField')); + }), + btnIcon: 'fa-server', + isFaBtnIcon: Ember.computed.match('btnIcon', /^fa-/) +}); diff --git a/web/app/components/form-input-select.js b/web/app/components/form-input-select.js new file mode 100644 index 0000000..0a89b0f --- /dev/null +++ b/web/app/components/form-input-select.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseFormInput from './base-form-input'; + +export default BaseFormInput.extend({ + classNames: ['form-group'], + classNameBindings: ['hasError:has-error'], + colWidth: 6 +}); diff --git a/web/app/components/form-input-spinner.js b/web/app/components/form-input-spinner.js new file mode 100644 index 0000000..6009ea3 --- /dev/null +++ b/web/app/components/form-input-spinner.js @@ -0,0 +1,26 @@ +import Ember from 'ember'; +import BaseFormInput from './base-form-input'; + +export default BaseFormInput.extend({ + classNames: ['form-group'], + min: 0, + max: 64, + step: 1, + didReceiveAttrs() { + this.getVal() || this.setVal(0); + }, + didInsertElement() { + let me = this; + me.$('input[type=text]').ace_spinner({ + value: me.getVal(), + min: me.get('min'), + max: me.get('max'), + step: me.get('step'), + btn_up_class: 'btn-info', + btn_down_class: 'btn-info'}) + .closest('.ace-spinner') + .on('changed.fu.spinbox', function() { + me.setVal(me.$('input[type=text]').val()); + }); + } +}); diff --git a/web/app/components/form-input.js b/web/app/components/form-input.js new file mode 100644 index 0000000..fa97f35 --- /dev/null +++ b/web/app/components/form-input.js @@ -0,0 +1,45 @@ +import Ember from 'ember'; +import BaseFormInput from './base-form-input'; + +export default BaseFormInput.extend({ + classNames: ['form-group'], + type: 'text', + setFilename(filename) { + let me = this; + Ember.set(me.get('model'), me.get('name'), filename); + }, + didReceiveAttrs() { + let me = this; + let isFile = me.get('type') === 'file'; + !me.get('inputClass') && + me.set('inputClass', isFile ? 'col-xs-3' : 'col-xs-4'); + let image = me.get('image'); + if (isFile && image) { + me.set('imageUrl', me.get('model.' + image)); + } + }, + didInsertElement() { + let me = this; + me.get('type') === 'file' && + me.$('input[type=file]').ace_file_input({ + no_file: '没有选择文件...', + btn_choose: '选择', + btn_change: '更换', + droppable: true, + before_change: function() { + let filename = Ember.$(this).val(); + Ember.Logger.info('Before File [' + filename + '] Changed.'); + me.setFilename(filename); + return true; + }, + before_remove: function() { + let filename = Ember.$(this).val(); + Ember.Logger.info('Before File [' + filename + '] Removed.'); + me.setFilename(null); + return true; + }, + thumbnail: false, //| true | large + blacklist: 'exe|php|jsp' + }); + } +}); diff --git a/web/app/components/gender-cell.js b/web/app/components/gender-cell.js new file mode 100644 index 0000000..e815f7a --- /dev/null +++ b/web/app/components/gender-cell.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + tagName: 'span' +}); diff --git a/web/app/components/grid-header.js b/web/app/components/grid-header.js new file mode 100644 index 0000000..7a8566c --- /dev/null +++ b/web/app/components/grid-header.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + classNames: ['widget-header'] +}); diff --git a/web/app/components/image-previews.js b/web/app/components/image-previews.js new file mode 100644 index 0000000..27022d5 --- /dev/null +++ b/web/app/components/image-previews.js @@ -0,0 +1,50 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + tagName: 'span', + classNames: ['inline'], + didReceiveAttrs() { + let me = this; + let previews = me.get('previews'); + if (Ember.$.type(previews) === 'string') { + let sep = me.get('separator'); + me.set('previews', sep ? previews.split(sep) : [previews]); + } + }, + imageHeight: 22, + imageStyle: 'border-radius: 8%; border: 1px solid #DCDCDC; max-width: 32px;', + didInsertElement() { + let me = this; + let rel = me.get('elementId') + '_preview'; + let $overflow = ''; + + me.$('a[data-rel="' + rel + '"]').colorbox({ + rel: rel, + reposition: true, + // scalePhotos: true, + scrolling: false, + photo: true, + previous: '', + next: '', + close: '×', + current: '{current} of {total}', + maxWidth: '100%', + maxHeight: '100%', + onOpen: function() { + $overflow = document.body.style.overflow; + document.body.style.overflow = 'hidden'; + }, + onClosed: function() { + document.body.style.overflow = $overflow; + }, + onComplete: function() { + Ember.$.colorbox.resize(); + } + }); + + Ember.run.once(() => { + // add a custom loading icon + $('#cboxLoadingGraphic').html(''); + }); + } +}); diff --git a/web/app/components/list-select-checkbox.js b/web/app/components/list-select-checkbox.js new file mode 100644 index 0000000..2c4e824 --- /dev/null +++ b/web/app/components/list-select-checkbox.js @@ -0,0 +1,9 @@ +import Ember from 'ember'; +import BaseComponentMixin from '../mixins/components/base-component'; + +export default Ember.Component.extend(BaseComponentMixin, { + tagName: 'label', + selectedId: Ember.computed.alias('route.controller.selectedId'), + selectedModel: Ember.computed.alias('route.controller.selectedModel'), + classNames: ['pos-rel'] +}); diff --git a/web/app/components/main-container.js b/web/app/components/main-container.js new file mode 100644 index 0000000..04bb492 --- /dev/null +++ b/web/app/components/main-container.js @@ -0,0 +1,430 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + elementId: 'main-container', + classNames: ['main-container'], + didInsertElement() { + let me = this; + // Ember.$('body').removeClass().addClass('login-layout blur-login'); + (function($) { + basics(); + enableSidebar(); + + enableDemoAjax(); + handleScrollbars(); + + dropdownAutoPos(); + + navbarHelpers(); + sidebarTooltips(); + + scrollTopBtn(); + + someBrowserFix(); + + bsCollapseToggle(); + smallDeviceDropdowns(); + + //////////////////////////// + + function basics() { + // for android and ios we don't use "top:auto" when breadcrumbs is fixed + if(ace.vars['non_auto_fixed']) { + $('body').addClass('mob-safari'); + } + + ace.vars['transition'] = !!$.support.transition.end + } + + function enableSidebar() { + //initiate sidebar function + var $sidebar = $('.sidebar'); + if($.fn.ace_sidebar) $sidebar.ace_sidebar(); + if($.fn.ace_sidebar_scroll) $sidebar.ace_sidebar_scroll({ + //for other options please see documentation + 'include_toggle': false || ace.vars['safari'] || ace.vars['ios_safari'] //true = include toggle button in the scrollbars + }); + if($.fn.ace_sidebar_hover) $sidebar.ace_sidebar_hover({ + 'sub_hover_delay': 750, + 'sub_scroll_style': 'no-track scroll-thin scroll-margin scroll-visible' + }); + } + + + //Load content via ajax + function enableDemoAjax() { + if(!$.fn.ace_ajax) return; + + if(window.Pace) { + window.paceOptions = { + ajax: true, + document: true, + eventLag: false // disabled + //elements: {selectors: ['.page-content-area']} + } + } + + var demo_ajax_options = { + 'close_active': true, + + 'default_url': 'page/index',//default hash + 'content_url': function(hash) { + //***NOTE*** + //this is for Ace demo only, you should change it to return a valid URL + //please refer to documentation for more info + + if( !hash.match(/^page\//) ) return false; + var path = document.location.pathname; + + //for example in Ace HTML demo version we convert /ajax/index.html#page/gallery to > /ajax/content/gallery.html and load it + if(path.match(/(\/ajax\/)(index\.html)?/)) + return path.replace(/(\/ajax\/)(index\.html)?/, '/ajax/content/'+hash.replace(/^page\//, '')+'.html') ; + + //for example in Ace PHP demo version we convert "ajax.php#page/dashboard" to "ajax.php?page=dashboard" and load it + return path + "?" + hash.replace(/\//, "="); + } + } + + //for IE9 and below we exclude PACE loader (using conditional IE comments) + //for other browsers we use the following extra ajax loader options + if(window.Pace) { + demo_ajax_options['loading_overlay'] = 'body';//the opaque overlay is applied to 'body' + } + + //initiate ajax loading on this element( which is .page-content-area[data-ajax-content=true] in Ace's demo) + $('[data-ajax-content=true]').ace_ajax(demo_ajax_options) + + //if general error happens and ajax is working, let's stop loading icon & PACE + $(window).on('error.ace_ajax', function() { + $('[data-ajax-content=true]').each(function() { + var $this = $(this); + if( $this.ace_ajax('working') ) { + if(window.Pace && Pace.running) Pace.stop(); + $this.ace_ajax('stopLoading', true); + } + }) + }) + } + + ///////////////////////////// + + function handleScrollbars() { + //add scrollbars for navbar dropdowns + var has_scroll = !!$.fn.ace_scroll; + if(has_scroll) $('.dropdown-content').ace_scroll({reset: false, mouseWheelLock: true}) + + //reset scrolls bars on window resize + if(has_scroll && !ace.vars['old_ie']) {//IE has an issue with widget fullscreen on ajax?!!! + $(window).on('resize.reset_scroll', function() { + $('.ace-scroll:not(.scroll-disabled)').not(':hidden').ace_scroll('reset'); + }); + if(has_scroll) $(document).on('settings.ace.reset_scroll', function(e, name) { + if(name == 'sidebar_collapsed') $('.ace-scroll:not(.scroll-disabled)').not(':hidden').ace_scroll('reset'); + }); + } + } + + + function dropdownAutoPos() { + //change a dropdown to "dropup" depending on its position + $(document).on('click.dropdown.pos', '.dropdown-toggle[data-position="auto"]', function() { + var offset = $(this).offset(); + var parent = $(this.parentNode); + + if ( parseInt(offset.top + $(this).height()) + 50 + > + (ace.helper.scrollTop() + ace.helper.winHeight() - parent.find('.dropdown-menu').eq(0).height()) + ) parent.addClass('dropup'); + else parent.removeClass('dropup'); + }); + } + + + function navbarHelpers() { + //prevent dropdowns from hiding when a from is clicked + /**$(document).on('click', '.dropdown-navbar form', function(e){ + e.stopPropagation(); + });*/ + + + //disable navbar icon animation upon click + $('.ace-nav [class*="icon-animated-"]').closest('a').one('click', function(){ + var icon = $(this).find('[class*="icon-animated-"]').eq(0); + var $match = icon.attr('class').match(/icon\-animated\-([\d\w]+)/); + icon.removeClass($match[0]); + }); + + + //prevent dropdowns from hiding when a tab is selected + $(document).on('click', '.dropdown-navbar .nav-tabs', function(e){ + e.stopPropagation(); + var $this , href + var that = e.target + if( ($this = $(e.target).closest('[data-toggle=tab]')) && $this.length > 0) { + $this.tab('show'); + e.preventDefault(); + $(window).triggerHandler('resize.navbar.dropdown') + } + }); + } + + + function sidebarTooltips() { + //tooltip in sidebar items + $('.sidebar .nav-list .badge[title],.sidebar .nav-list .badge[title]').each(function() { + var tooltip_class = $(this).attr('class').match(/tooltip\-(?:\w+)/); + tooltip_class = tooltip_class ? tooltip_class[0] : 'tooltip-error'; + $(this).tooltip({ + 'placement': function (context, source) { + var offset = $(source).offset(); + + if( parseInt(offset.left) < parseInt(document.body.scrollWidth / 2) ) return 'right'; + return 'left'; + }, + container: 'body', + template: '
' + }); + }); + /* + //or something like this if items are dynamically inserted + $('.sidebar').tooltip({ + 'placement': function (context, source) { + let offset = $(source).offset(); + return parseInt(offset.left) < parseInt(document.body.scrollWidth / 2) ? 'right' : 'left'; + }, + selector: '.nav-list .badge[title],.nav-list .label[title]', + container: 'body', + template: '
' + }); + */ + } + + function scrollTopBtn() { + //the scroll to top button + var scroll_btn = $('.btn-scroll-up'); + if(scroll_btn.length > 0) { + var is_visible = false; + $(window).on('scroll.scroll_btn', function() { + var scroll = ace.helper.scrollTop(); + var h = ace.helper.winHeight(); + var body_sH = document.body.scrollHeight; + if(scroll > parseInt(h / 4) || (scroll > 0 && body_sH >= h && h + scroll >= body_sH - 1)) {//|| for smaller pages, when reached end of page + if(!is_visible) { + scroll_btn.addClass('display'); + is_visible = true; + } + } else { + if(is_visible) { + scroll_btn.removeClass('display'); + is_visible = false; + } + } + }).triggerHandler('scroll.scroll_btn'); + + scroll_btn.on(ace.click_event, function(){ + var duration = Math.min(500, Math.max(100, parseInt(ace.helper.scrollTop() / 3))); + $('html,body').animate({scrollTop: 0}, duration); + return false; + }); + } + } + + function someBrowserFix() { + //chrome and webkit have a problem here when resizing from 479px to more + //we should force them redraw the navbar! + if( ace.vars['webkit'] ) { + var ace_nav = $('.ace-nav').get(0); + if( ace_nav ) $(window).on('resize.webkit_fix' , function(){ + ace.helper.redraw(ace_nav); + }); + } + + + //fix an issue with ios safari, when an element is fixed and an input receives focus + if(ace.vars['ios_safari']) { + $(document).on('ace.settings.ios_fix', function(e, event_name, event_val) { + if(event_name != 'navbar_fixed') return; + + $(document).off('focus.ios_fix blur.ios_fix', 'input,textarea,.wysiwyg-editor'); + if(event_val == true) { + $(document).on('focus.ios_fix', 'input,textarea,.wysiwyg-editor', function() { + $(window).on('scroll.ios_fix', function() { + var navbar = $('#navbar').get(0); + if(navbar) ace.helper.redraw(navbar); + }); + }).on('blur.ios_fix', 'input,textarea,.wysiwyg-editor', function() { + $(window).off('scroll.ios_fix'); + }) + } + }).triggerHandler('ace.settings.ios_fix', ['navbar_fixed', $('#navbar').css('position') == 'fixed']); + } + } + + + + function bsCollapseToggle() { + //bootstrap collapse component icon toggle + $(document).on('hide.bs.collapse show.bs.collapse', function (ev) { + var panel_id = ev.target.getAttribute('id') + var panel = $('a[href*="#'+ panel_id+'"]'); + if(panel.length == 0) panel = $('a[data-target*="#'+ panel_id+'"]'); + if(panel.length == 0) return; + + panel.find(ace.vars['.icon']).each(function(){ + var $icon = $(this) + + var $match + var $icon_down = null + var $icon_up = null + if( ($icon_down = $icon.attr('data-icon-show')) ) { + $icon_up = $icon.attr('data-icon-hide') + } + else if( $match = $icon.attr('class').match(/fa\-(.*)\-(up|down)/) ) { + $icon_down = 'fa-'+$match[1]+'-down' + $icon_up = 'fa-'+$match[1]+'-up' + } + + if($icon_down) { + if(ev.type == 'show') $icon.removeClass($icon_down).addClass($icon_up) + else $icon.removeClass($icon_up).addClass($icon_down) + + return false;//ignore other icons that match, one is enough + } + + }); + }) + } + + + + //in small devices display navbar dropdowns like modal boxes + function smallDeviceDropdowns() { + if(ace.vars['old_ie']) return; + + $('.ace-nav > li') + .on('shown.bs.dropdown.navbar', function(e) { + adjustNavbarDropdown.call(this); + }) + .on('hidden.bs.dropdown.navbar', function(e) { + $(window).off('resize.navbar.dropdown'); + resetNavbarDropdown.call(this); + }) + + function adjustNavbarDropdown() { + var $sub = $(this).find('> .dropdown-menu'); + + if( $sub.css('position') == 'fixed' ) { + var win_width = parseInt($(window).width()); + var offset_w = win_width > 320 ? 60 : (win_width > 240 ? 40 : 30); + var avail_width = parseInt(win_width) - offset_w; + var avail_height = parseInt($(window).height()) - 30; + + var width = parseInt(Math.min(avail_width , 320)); + //we set 'width' here for text wrappings and spacings to take effect before calculating scrollHeight + $sub.css('width', width); + + var tabbed = false; + var extra_parts = 0; + var dropdown_content = $sub.find('.tab-pane.active .dropdown-content.ace-scroll'); + if(dropdown_content.length == 0) dropdown_content = $sub.find('.dropdown-content.ace-scroll'); + else tabbed = true; + + var parent_menu = dropdown_content.closest('.dropdown-menu'); + var scrollHeight = $sub[0].scrollHeight; + if(dropdown_content.length == 1) { + //sometimes there's no scroll-content, for example in detached scrollbars + var content = dropdown_content.find('.scroll-content')[0]; + if(content) { + scrollHeight = content.scrollHeight; + } + + extra_parts += parent_menu.find('.dropdown-header').outerHeight(); + extra_parts += parent_menu.find('.dropdown-footer').outerHeight(); + + var tab_content = parent_menu.closest('.tab-content'); + if( tab_content.length != 0 ) { + extra_parts += tab_content.siblings('.nav-tabs').eq(0).height(); + } + } + + + + var height = parseInt(Math.min(avail_height , 480, scrollHeight + extra_parts)); + var left = parseInt(Math.abs((avail_width + offset_w - width)/2)); + var top = parseInt(Math.abs((avail_height + 30 - height)/2)); + + + var zindex = parseInt($sub.css('z-index')) || 0; + + $sub.css({'height': height, 'left': left, 'right': 'auto', 'top': top - (!tabbed ? 1 : 3)}); + if(dropdown_content.length == 1) { + if(!ace.vars['touch']) { + dropdown_content.ace_scroll('update', {size: height - extra_parts}).ace_scroll('enable').ace_scroll('reset'); + } + else { + dropdown_content + .ace_scroll('disable').css('max-height', height - extra_parts).addClass('overflow-scroll'); + } + } + $sub.css('height', height + (!tabbed ? 2 : 7));//for bottom border adjustment and tab content paddings + + + if($sub.hasClass('user-menu')) { + $sub.css('height', '');//because of user-info hiding/showing at different widths, which changes above 'scrollHeight', so we remove it! + + //user menu is re-positioned in small widths + //but we need to re-position again in small heights as well (modal mode) + var user_info = $(this).find('.user-info'); + if(user_info.length == 1 && user_info.css('position') == 'fixed') { + user_info.css({'left': left, 'right': 'auto', 'top': top, 'width': width - 2, 'max-width': width - 2, 'z-index': zindex + 1}); + } + else user_info.css({'left': '', 'right': '', 'top': '', 'width': '', 'max-width': '', 'z-index': ''}); + } + + //dropdown's z-index is limited by parent .navbar's z-index (which doesn't make sense because dropdowns are fixed!) + //so for example when in 'content-slider' page, fixed modal toggle buttons go above are dropdowns + //so we increase navbar's z-index to fix this! + $(this).closest('.navbar.navbar-fixed-top').css('z-index', zindex); + } + else { + if($sub.length != 0) resetNavbarDropdown.call(this, $sub); + } + + var self = this; + $(window) + .off('resize.navbar.dropdown') + .one('resize.navbar.dropdown', function() { + $(self).triggerHandler('shown.bs.dropdown.navbar'); + }) + } + + //reset scrollbars and user menu + function resetNavbarDropdown($sub) { + $sub = $sub || $(this).find('> .dropdown-menu'); + + if($sub.length > 0) { + $sub + .css({'width': '', 'height': '', 'left': '', 'right': '', 'top': ''}) + .find('.dropdown-content').each(function() { + if(ace.vars['touch']) { + $(this).css('max-height', '').removeClass('overflow-scroll'); + } + + var size = parseInt($(this).attr('data-size') || 0) || $.fn.ace_scroll.defaults.size; + $(this).ace_scroll('update', {size: size}).ace_scroll('enable').ace_scroll('reset'); + }) + + if( $sub.hasClass('user-menu') ) { + var user_info = + $(this).find('.user-info') + .css({'left': '', 'right': '', 'top': '', 'width': '', 'max-width': '', 'z-index': ''}); + } + } + + $(this).closest('.navbar').css('z-index', ''); + } + } + + })(Ember.$); //jQuery document ready + }, +}); diff --git a/web/app/components/main-content.js b/web/app/components/main-content.js new file mode 100644 index 0000000..dd1a7b8 --- /dev/null +++ b/web/app/components/main-content.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + classNames: ['main-content'] +}); diff --git a/web/app/components/modal-dialog.js b/web/app/components/modal-dialog.js new file mode 100644 index 0000000..6e705e6 --- /dev/null +++ b/web/app/components/modal-dialog.js @@ -0,0 +1,3 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({}); diff --git a/web/app/components/modal-frame.js b/web/app/components/modal-frame.js new file mode 100644 index 0000000..5b4a4a4 --- /dev/null +++ b/web/app/components/modal-frame.js @@ -0,0 +1,24 @@ +import Ember from 'ember'; +import BaseComponent from './base-component'; + +export default BaseComponent.extend({ + classNames: ['modal', 'fade'], + initModal: true, + transitionToParentRouteAfterClose: true, + didInsertElement() { + let me = this; + if (me.get('initModal')) { + me.$().modal().on('hidden.bs.modal', ()=> { + me.$() && me.get('transitionToParentRouteAfterClose') && + me.get('router').transitionTo( + me.get('parentRouteName') || + me.get('routeName').replace(/\.[^.]+$/, '')); + let onClose = me.get('onClose'); + onClose && onClose(); + }); + } + }, + willDestroyElement() { + this.$().modal('hide'); + } +}); diff --git a/web/app/components/modal-list-select.js b/web/app/components/modal-list-select.js new file mode 100644 index 0000000..926b613 --- /dev/null +++ b/web/app/components/modal-list-select.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ +}); diff --git a/web/app/components/op-detail.js b/web/app/components/op-detail.js new file mode 100644 index 0000000..964a77c --- /dev/null +++ b/web/app/components/op-detail.js @@ -0,0 +1,18 @@ +import Ember from 'ember'; +import BaseComponentMixin from '../mixins/components/base-component'; + +export default Ember.LinkComponent.extend(BaseComponentMixin, { + classNames: ['btn', 'btn-xs', 'btn-info2'], + role: 'button', + rel: 'tooltip', + title: '操作详情', + activeClass: '', + willRender() { + let me = this; + let params = me.get('params'); + params.unshift(me.get('service.modelName')); + params.unshift('op-detail'); + params.unshift('操作详情'); + me._super(...arguments); + } +}); diff --git a/web/app/components/pagination-bar.js b/web/app/components/pagination-bar.js new file mode 100644 index 0000000..18e0756 --- /dev/null +++ b/web/app/components/pagination-bar.js @@ -0,0 +1,43 @@ +import Ember from 'ember'; +import BaseComponent from './base-component'; + +export default BaseComponent.extend({ + classNames: ['widget-toolbox', 'clearfix'], + total: Ember.computed.alias('route.controller.model.total'), + prevPage: Ember.computed('currPage', function() { + return this.get('currPage') - 1 || 1; + }), + nextPage: Ember.computed('currPage', function() { + let me = this; + let page = me.get('currPage'); + return page + 1 <= me.get('totalPage') ? page + 1 : page; + }), + currPage: Ember.computed('params.page', function() { + let me = this; + let currPage = parseInt(me.get('params.page')); + Ember.Logger.info('Get Curr Page [' + currPage + ']'); + return currPage; + }), + pages: Ember.computed('total', function() { + let i = 0; + let pages = []; + while (i++ < this.get('totalPage')) { + pages.push(i); + } + return pages; + }), + totalPage: Ember.computed('total', function() { + let me = this; + let pageSize = me.get('service.pageSize') || 16; + return parseInt((me.get('total') + pageSize - 1) / pageSize); + }), + actions: { + gotoPage(page) { + let me = this; + let router = me.get('router'); + let params = me.get('params'); + Ember.Logger.info('To Page [' + page + '], Params: ', params); + router.transitionTo(me.get('routeName'), page, {queryParams: params}); + } + } +}); diff --git a/web/app/components/qr-code.js b/web/app/components/qr-code.js new file mode 100644 index 0000000..1f0610e --- /dev/null +++ b/web/app/components/qr-code.js @@ -0,0 +1,78 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + classNames: ['btn-group'], + didReceiveAttrs() { + let me = this; + let iconUrl = me.get('iconUrl'); + let iconImg; + if (iconUrl) { + iconImg = new Image(); + iconImg.src = iconUrl; + me.set('iconImg', iconImg); + } + // let label = me.get('label'); + let label = null; + me.set('qrConfigMerged', Ember.$.extend({ + // render method: 'canvas', 'image' or 'div' + render: 'canvas', + + // version range somewhere in 1 .. 40 + minVersion: 1, + maxVersion: 40, + + // error correction level: 'L', 'M', 'Q' or 'H' + ecLevel: 'Q', + + // size in pixel + size: 320, + + // code color or image element + fill: '#333', + + // background color or image element, null for transparent background + background: null, + + // content + text: me.get('text'), + + // corner radius relative to module width: 0.0 .. 0.5 + radius: 0.1, + + // quiet zone in modules + quiet: 4, + + // modes + // 0: normal + // 1: label strip + // 2: label box + // 3: image strip + // 4: image box + mode: iconUrl ? 4 : label ? 2 : 0, + + label: label, + fontname: 'sans', + fontcolor: '#ff9818', + + mSize: 0.13, + mPosX: 0.5, + mPosY: 0.5, + image: iconImg + }, me.get('qrConfig'))); + }, + didInsertElement() { + let me = this; + let iconImg = me.get('iconImg'); + if (iconImg) { + iconImg.onload = function() { + me.renderQrCode(); + }; + } + else { + me.renderQrCode(); + } + }, + renderQrCode() { + this.$('.qr-code').qrcode(this.get('qrConfigMerged')); + } +}); diff --git a/web/app/components/reload-btn.js b/web/app/components/reload-btn.js new file mode 100644 index 0000000..2f7eb89 --- /dev/null +++ b/web/app/components/reload-btn.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import BaseComponent from './base-component'; + +export default BaseComponent.extend({ + tagName: 'a', + attributeBindings: ['href', 'title'], + title: '刷新', + href: 'javascript:;', + click() { + this.get('route').refresh(); + } +}); diff --git a/web/app/components/search-box.js b/web/app/components/search-box.js new file mode 100644 index 0000000..61eafe2 --- /dev/null +++ b/web/app/components/search-box.js @@ -0,0 +1,18 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + classNames: ['widget-toolbar', 'no-border'], + searchText: function() { + let me = this; + let routeName = me.get('router.currentRouteName'); + return Ember.getOwner(me).lookup('route:' + routeName).paramsFor(routeName).search; + }.property('router.location'), + actions: { + search() { + let me = this; + let router = me.get('router'); + let routeName = router.get('currentRouteName'); + router.transitionTo(routeName, 1, {queryParams: {search: me.get('searchText')}}); + } + } +}); diff --git a/web/app/components/sortable-list-item.js b/web/app/components/sortable-list-item.js new file mode 100644 index 0000000..2679646 --- /dev/null +++ b/web/app/components/sortable-list-item.js @@ -0,0 +1,33 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + tagName: 'li', + classNames: ['clearfix'], + classNameBindings: ['selected:selected'], + attributeBindings: ['itemId:data-item-id'], + selected: false, + index: 0, + didReceiveAttrs() { + let me = this; + me._super(...arguments); + let cc = me.get('colorClasses'); + me.get('classNames').push(cc.objectAt(me.get('index') % cc.length)); + }, + colorClasses: [ + 'item-orange', + 'item-orange2', + 'item-red', + 'item-red2', + 'item-green', + 'item-green2', + 'item-blue', + 'item-blue2', + 'item-blue3', + 'item-pink', + 'item-purple', + 'item-black', + 'item-grey', + 'item-brown', + 'item-default' + ], +}); diff --git a/web/app/components/sortable-list.js b/web/app/components/sortable-list.js new file mode 100644 index 0000000..b530352 --- /dev/null +++ b/web/app/components/sortable-list.js @@ -0,0 +1,39 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + tagName: 'ul', + classNames: ['item-list'], + didInsertElement() { + let me = this; + me.set('prevIds', me.get('model').mapBy('id')); + me.$().sortable({ + opacity: 0.8, + revert: true, + forceHelperSize: true, + placeholder: 'draggable-placeholder', + forcePlaceholderSize: true, + tolerance: 'pointer', + stop: function (event, ui) { + // just for Chrome!!!! so that dropdowns on items don't appear below other items after being moved + $(ui.item).css('z-index', 'auto'); + + if (me.get('onSortStopped')) { + let prevIds = me.get('prevIds'); + let changed = false; + let ids = Array.prototype.map.call(me.$('li'), (li, i) => { + let id = Ember.$(li).data('item-id'); + if (id !== prevIds[i] && !changed) { + changed = true; + } + return id; + }); + if (changed) { + me.set('prevIds', ids); + me.sendAction('onSortStopped', ids); + } + } + } + }); + } +}); + diff --git a/web/app/components/status-cell.js b/web/app/components/status-cell.js new file mode 100644 index 0000000..87f53e7 --- /dev/null +++ b/web/app/components/status-cell.js @@ -0,0 +1,23 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + tagName: 'span', + classNames: ['label', 'label-sm'], + classNameBindings: ['enabled:label-success:label-warning'], + field: 'enabled', + name: Ember.computed.alias('field'), + didReceiveAttrs() { + let me = this; + me._super(...arguments); + me.set('enabled', me.get(me.getFieldPath())); + Ember.addObserver(me, me.getFieldPath(), function() { + me.set('enabled', me.get(me.getFieldPath())); + }); + }, + enabledText: '启用', + disabledText: '禁用', + getFieldPath() { + let me = this; + return 'model.' + (me.get('field') || 'enabled'); + }, +}); diff --git a/web/app/components/status-toggle-button.js b/web/app/components/status-toggle-button.js new file mode 100644 index 0000000..eaf5acc --- /dev/null +++ b/web/app/components/status-toggle-button.js @@ -0,0 +1,38 @@ +import Ember from 'ember'; +import BaseComponent from './base-component'; + +export default BaseComponent.extend({ + tagName: 'a', + attributeBindings: ['title', 'href', 'role', 'rel'], + role: 'button', + rel: 'tooltip', + href: 'javascript:;', + enabled: Ember.computed.alias('model.enabled'), + title: Ember.computed('enabled', function() { + return this.get('enabled') ? '禁用' : '启用'; + }), + iconSizeClass: 'bigger-120', + didReceiveAttrs() { + let me = this; + if (me.get('iconOnly')) { + me.set('iconSizeClass', 'bigger-130'); + me.set('classNameBindings', ['enabled:orange:light-green']); + } + else { + me.set('classNameBindings', + ['enabled:btn-warning:btn-success', + 'iconOnly::btn', + 'iconOnly::btn-xs']); + } + }, + click() { + let me = this; + me.dialog.confirm('确认要' + me.get('title') + '状态么?', () => { + let model = me.get('model'); + Ember.set(model, 'enabled', !me.get('enabled')); + let params = me.get('params'); + me.get('service').update(params ? + Ember.merge(params, model) : model, true); + }); + } +}); diff --git a/web/app/components/top-navbar.js b/web/app/components/top-navbar.js new file mode 100644 index 0000000..d55a3b8 --- /dev/null +++ b/web/app/components/top-navbar.js @@ -0,0 +1,35 @@ +import Ember from 'ember'; +import BaseComponent from './base-component'; + +export default BaseComponent.extend({ + classNames: ['navbar', 'navbar-default', 'navbar-collapse'], + user: Ember.computed.alias('ajax.user'), + didReceiveAttrs() { + let me = this; + let user = me.get('user'); + if (!user) { + user = Ember.$.sessionStorage.get('user'); + if (user) { + me.set('ajax.user', user); + } + else { + Ember.Logger.info('No User Found In Session Storage, Try To Load From Cloud'); + me.ajax.doGet(false, 'auth/info', (u) => { + me.set('ajax.user', u); + Ember.$.sessionStorage.set('user', u); + }); + } + } + }, + actions: { + logout() { + let me = this; + me.ajax.doPost(false, 'auth/logout', () => { + me.set('ajax.user', null); + Ember.$.sessionStorage.set('user', null); + me.get('message').alert('注销成功'); + me.get('router').transitionTo('login'); + }); + } + } +}); diff --git a/web/app/components/tree-view.js b/web/app/components/tree-view.js new file mode 100644 index 0000000..f7f6591 --- /dev/null +++ b/web/app/components/tree-view.js @@ -0,0 +1,15 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + classNames: ['widget-box', 'widget-color-blue2'], + didReceiveAttrs() { + let me = this; + }, + didInsertElement() { + let me = this; + console.log(me.get('data')); + me.$('div.widget-main > div').treeview({ + data: me.get('data') + }); + } +}); diff --git a/web/app/components/wysiwyg-editor.js b/web/app/components/wysiwyg-editor.js new file mode 100644 index 0000000..f46b811 --- /dev/null +++ b/web/app/components/wysiwyg-editor.js @@ -0,0 +1,28 @@ +import Ember from 'ember'; +import BaseFormInput from './base-form-input'; + +export default BaseFormInput.extend({ + didInsertElement() { + let me = this; + //intialize wysiwyg editor + me.$('.wysiwyg-editor').ace_wysiwyg({ + toolbar: [ + 'bold', + 'italic', + 'strikethrough', + 'underline', + null, + 'justifyleft', + 'justifycenter', + 'justifyright', + null, + 'createLink', + 'unlink', + null, + 'undo', + 'redo' + ]}).on('DOMSubtreeModified propertychange', function() { + me.setVal(Ember.$(this).html()); + }).html(me.getVal()).prev().addClass('wysiwyg-style1'); + } +}); diff --git a/web/app/helpers/array.js b/web/app/helpers/array.js new file mode 100644 index 0000000..c7c35e1 --- /dev/null +++ b/web/app/helpers/array.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; + +export function array(params/*, hash*/) { + return params; +} + +export default Ember.Helper.helper(array); diff --git a/web/app/helpers/loose-eq.js b/web/app/helpers/loose-eq.js new file mode 100644 index 0000000..9e394f7 --- /dev/null +++ b/web/app/helpers/loose-eq.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; + +export function looseEq(params) { + return params[0] == params[1]; +} + +export default Ember.Helper.helper(looseEq); diff --git a/web/app/helpers/obj-merge.js b/web/app/helpers/obj-merge.js new file mode 100644 index 0000000..eae2edf --- /dev/null +++ b/web/app/helpers/obj-merge.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; + +export function objMerge(params) { + return Ember.$.extend(true, {}, ...params); +} + +export default Ember.Helper.helper(objMerge); diff --git a/web/app/helpers/obj-query-params.js b/web/app/helpers/obj-query-params.js new file mode 100644 index 0000000..b69c8dd --- /dev/null +++ b/web/app/helpers/obj-query-params.js @@ -0,0 +1,11 @@ +import Ember from 'ember'; + +export function objQueryParams(params, hash) { + Ember.Logger.debug('Obj Query Params: ', params, hash); + return Ember.Object.create({ + isQueryParams: true, + values: hash.length > 0 ? hash : params[0] + }); +} + +export default Ember.Helper.helper(objQueryParams); diff --git a/web/app/index.html b/web/app/index.html new file mode 100644 index 0000000..a1f1b9d --- /dev/null +++ b/web/app/index.html @@ -0,0 +1,38 @@ + + + + + + Ambition CRM + + + {{content-for 'head'}} + + + + + + + + + {{content-for 'head-footer'}} + + + + {{content-for 'body'}} + + + + {{content-for 'body-footer'}} + + diff --git a/web/app/initializers/application.js b/web/app/initializers/application.js new file mode 100644 index 0000000..90c447c --- /dev/null +++ b/web/app/initializers/application.js @@ -0,0 +1,32 @@ +export function initialize(app) { + // route + app.inject('route', 'ajax', 'service:ajax'); + app.inject('route', 'store', 'service:store'); + app.inject('route', 'message', 'service:message'); + app.inject('route', 'dialog', 'service:dialog'); + app.inject('route', 'router', 'router:main'); + // controller + app.inject('controller', 'ajax', 'service:ajax'); + app.inject('controller', 'store', 'service:store'); + app.inject('controller', 'message', 'service:message'); + app.inject('controller', 'dialog', 'service:dialog'); + app.inject('controller', 'router', 'router:main'); + // component + app.inject('component', 'ajax', 'service:ajax'); + app.inject('component', 'store', 'service:store'); + app.inject('component', 'message', 'service:message'); + app.inject('component', 'dialog', 'service:dialog'); + app.inject('component', 'router', 'router:main'); + // store + app.inject('service:store', 'message', 'service:message'); + app.inject('service:store', 'dialog', 'service:dialog'); + app.inject('service:store', 'ajax', 'service:ajax'); + // ajax + app.inject('service:ajax', 'message', 'service:message'); + app.inject('service:ajax', 'dialog', 'service:dialog'); +} + +export default { + name: 'application', + initialize: initialize +}; diff --git a/web/app/mixins/components/base-component.js b/web/app/mixins/components/base-component.js new file mode 100644 index 0000000..5c43832 --- /dev/null +++ b/web/app/mixins/components/base-component.js @@ -0,0 +1,32 @@ +import Ember from 'ember'; + +export default Ember.Mixin.create({ + toolService: Ember.inject.service('tool-service'), + routeName: Ember.computed.alias('router.currentRouteName'), + route: Ember.computed('routeName', function() { + return this.getRoute(); + }), + service: Ember.computed('routeName', function() { + return this.getService(); + }), + params: Ember.computed('router.location.lastSetURL', function() { + let me = this; + return me.getRouteParams(me.get('routeName')); + }), + getRouteParams(routeName) { + return this.get('route').paramsFor(routeName); + }, + getRoute(routeName) { + return Ember.getOwner(this).lookup( + 'route:' + (routeName || this.get('routeName'))); + }, + getParentRouteName(routeName) { + return routeName.replace(/\.[^\.]+$/, ''); + }, + getService(name) { + let me = this; + return name ? me.get('toolService').getServiceByRouteName(name) : + me.getRoute().get('service') || + me.get('toolService').getServiceByRouteName(me.get('routeName')); + } +}); diff --git a/web/app/mixins/services/base-service.js b/web/app/mixins/services/base-service.js new file mode 100644 index 0000000..bfd36ef --- /dev/null +++ b/web/app/mixins/services/base-service.js @@ -0,0 +1,87 @@ +import Ember from 'ember'; + +export default Ember.Mixin.create({ + store: Ember.inject.service(), + message: Ember.inject.service(), + pageSize: 10, + constraints: {}, + createConstraints: null, + updateConstraints: null, + find(params) { + Ember.Logger.debug('Find Model: ', params); + return this._getStore().find(this.get('modelName'), params); + }, + list(start, limit, params) { + Ember.Logger.debug('List Models Start: ', start, ', Limit: ', limit, ", Search: ", params); + return this._getStore().list(this.get('modelName'), start, limit, params); + }, + listPage(page, params) { + page > 0 || (page = 1); + let me = this; + let pageSize = me.get('pageSize'); + return me.list((page - 1) * pageSize, pageSize, params); + }, + create(model) { + Ember.Logger.debug('Create Model: ', model); + return this._getStore().create(this.get('modelName'), model); + }, + update(model, defaultPromise) { + Ember.Logger.debug('Update Model: ', model); + let me = this; + let p = me._getStore().update(me.get('modelName'), model); + if (defaultPromise) { + p.then((m) => { + Ember.Logger.debug('After Update: ', m); + !(model instanceof FormData) && + Object.keys(m).forEach((prop) => { + Ember.set(model, prop, m[prop]); + }); + me.get('message').alert('更新成功'); + }) + } + return p; + }, + del(params) { + Ember.Logger.debug('Update Model: ', params); + return this._getStore().del(this.get('modelName'), params); + }, + ajaxGet(path, params) { + return this._getStore().modelAjaxGet(this.get('modelName'), path, params); + }, + ajaxPost(path, params) { + return this._getStore().modelAjaxPost(this.get('modelName'), path, params); + }, + validate(model, constraints) { + let me = this; + Ember.Logger.debug('Validate Model: ', model); + if (constraints) { + if (Ember.$.type(constraints) === 'string') { + constraints = me.get(constraints); + } + else if (Ember.$.type(constraints) !== 'object') { + validation = me.get('constraints'); + } + } + else { + constraints = me.get('constraints'); + } + return validate(model, constraints || me.get('constraints')); + }, + createValidate(model) { + Ember.Logger.debug('Create Validate Model: ', model); + let me = this; + let constraints = me.get('createConstraints') || me.get('constraints') || null; + return constraints && validate(model, constraints); + }, + updateValidate(model) { + Ember.Logger.debug('Update Validate Model: ', model); + let me = this; + let constraints = me.get('updateConstraints') || me.get('constraints') || null; + return constraints && validate(model, constraints); + }, + _getStore() { + return this.get('store'); + } +}); + + diff --git a/web/app/resolver.js b/web/app/resolver.js new file mode 100644 index 0000000..2fb563d --- /dev/null +++ b/web/app/resolver.js @@ -0,0 +1,3 @@ +import Resolver from 'ember-resolver'; + +export default Resolver; diff --git a/web/app/router.js b/web/app/router.js new file mode 100644 index 0000000..57fe85d --- /dev/null +++ b/web/app/router.js @@ -0,0 +1,250 @@ +import Ember from 'ember'; +import config from './config/environment'; + +const Router = Ember.Router.extend({ + location: config.locationType +}); + +Router.map(function() { + this.route('login'); + this.route('app', function() { + this.route('list', {path: '/list/:page'}); + this.route('create', {path: '/create'}, function() { + this.route('api-group-select', {path: '/api-group-select/:page'}); + this.route('app-config-select', {path: '/app-config-select/:page'}); + this.route('splash-select', {path: '/splash-select/:page'}); + this.route('theme-select', {path: '/theme-select/:page'}); + }); + this.route('edit', {path: '/:id/edit'}, function() { + this.route('api-group-select', {path: '/api-group-select/:page'}); + this.route('app-config-select', {path: '/app-config-select/:page'}); + this.route('splash-select', {path: '/splash-select/:page'}); + this.route('theme-select', {path: '/theme-select/:page'}); + }); + this.route('version', {path: '/:appId/:platform/version'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}, function() { + this.route('api-group-select', {path: '/api-group-select/:page'}); + this.route('app-config-select', {path: '/app-config-select/:page'}); + this.route('splash-select', {path: '/splash-select/:page'}); + this.route('theme-select', {path: '/theme-select/:page'}); + this.route('version-select', {path: '/version-select/:page'}); + }); + }); + + this.route('release', {path: '/:appId/:platform/release'}, function() { + this.route('show'); + this.route('edit', {path: '/:id/edit'}, function() { + this.route('version-select', {path: '/version-select/:page'}); + }); + }); + + this.route('appoint', {path: '/:appId/:platform/appoint'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create', function() { + this.route('version-select', {path: '/version-select/:page'}); + }); + this.route('edit', {path: '/:id/edit'}, function() { + this.route('version-select', {path: '/version-select/:page'}); + }); + }); + + this.route('version-group', {path: '/:appId/version-group'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create', function() { + this.route('version-select', {path: '/version-select/:page'}); + }); + this.route('edit', {path: '/:id/edit'}, function() { + this.route('version-select', {path: '/version-select/:page'}); + }); + }); + }); + + this.route('api-group', function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + this.route('api', {path: '/:apiGroupId/api'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + this.route('import'); + this.route('substitute'); + }); + }); + + this.route('splash', function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + + this.route('theme', function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + this.route('app-config', function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + this.route('manage', {path: '/:id/manage'}); + + this.route('footer-item', {path: '/:appConfigId/footer-item'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + }); + + this.route('role', function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + + this.route('user', function() { + this.route('list', {path: '/list/:page'}); + this.route('create', function() { + this.route('role-select'); + }); + this.route('edit', {path: '/:id/edit'}, function() { + this.route('role-select'); + }); + this.route('profile', function() { + this.route('upload-avatar'); + }); + this.route('show', {path: '/:id/show'}); + }); + + this.route('corp', function() { + this.route('list', {path: '/list/:page'}); + this.route('create', {path: '/create'}, function() { + this.route('api-group-select', {path: '/api-group-select/:page'}); + this.route('app-config-select', {path: '/app-config-select/:page'}); + this.route('splash-select', {path: '/splash-select/:page'}); + this.route('theme-select', {path: '/theme-select/:page'}); + }); + this.route('edit', {path: '/:id/edit'}, function() { + this.route('tiny-app-group-select', {path: '/tiny-app-group-select/:page'}); + this.route('api-group-select', {path: '/api-group-select/:page'}); + this.route('app-config-select', {path: '/app-config-select/:page'}); + this.route('splash-select', {path: '/splash-select/:page'}); + this.route('theme-select', {path: '/theme-select/:page'}); + }); + + // employee + this.route('employee', {path: '/:corpId/employee'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + + // tiny app group + this.route('tiny-app-group', {path: '/:corpId/tiny-app-group'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + + // tiny app + this.route('tiny-app', {path: '/:corpId/tiny-app'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create', {path: '/create'}, function() { + this.route('tiny-app-group-select', {path: '/tiny-app-group-select/:page'}); + }); + this.route('edit', {path: '/:id/edit'}, function() { + this.route('tiny-app-group-select', {path: '/tiny-app-group-select/:page'}); + }); + }); + this.route('dept', {path: '/:corpId/dept'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + this.route('tree'); + }); + this.route('contact', {path: '/:corpId/contact'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + }); + + this.route('admin', function() { + this.route('list', {path: '/list/:page'}); + this.route('create', function() { + this.route('role-select'); + }); + this.route('edit', {path: '/:id/edit'}, function() { + this.route('role-select'); + }); + this.route('profile', function() { + this.route('upload-avatar'); + }); + this.route('show', {path: '/:id/show'}); + }); + + this.route('cloud', function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + + this.route('corp', {path: '/:cloudId/corp'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('manage', {path: '/:corpId/manage'}, function() { + this.route('app-select', {path: '/app-select/:page'}); + this.route('splash-select', {path: '/splash-select/:page'}); + this.route('app-config-select', {path: '/app-config-select/:page'}); + this.route('theme-select', {path: '/theme-select/:page'}); + this.route('version-select', {path: '/version-select/:page'}); + this.route('app-select-for-version-select', + {path: '/app-select-for-version-select/:page'}); + this.route('app-select-for-version-group-select', + {path: '/app-select-for-version-group-select/:page'}); + this.route('version-group-select', + {path: '/version-group-select/:page'}); + }); + + this.route('member', function() { + this.route('list'); + }); + this.route('biz-manage', {path: '/:corpId/biz-manage'}); + + this.route('biz-group', {path: '/:corpId/biz-group'}, function() { + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + + this.route('biz', {path: '/:corpId/biz'}, function() { + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + }); + + this.route('ad-slide', {path: '/:cloudId/ad-slide'}, function() { + this.route('list', {path: '/list/:page'}); + this.route('create', function() { + this.route('app-select', {path: '/app-select/:page'}); + this.route('app-select-for-version-select', {path: '/app-select-for-version-select/:page'}); + this.route('version-select', {path: '/version-select/:page'}); + this.route('corp-select', {path: '/corp-select/:page'}); + }); + this.route('edit', {path: '/:id/edit'}); + this.route('manage'); + }); + }); + + this.route('app-alias', function() { + this.route('list', {path: '/list/:page'}); + }); + + this.route('app-version-alias', function() { + this.route('list', {path: '/list/:page'}); + this.route('create'); + this.route('edit', {path: '/:id/edit'}); + }); + this.route('op-detail', {path: '/:model/:id/op-detail'}); +}); + +export default Router; diff --git a/web/app/routes/admin/create.js b/web/app/routes/admin/create.js new file mode 100644 index 0000000..498fe18 --- /dev/null +++ b/web/app/routes/admin/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return {}; + } +}); diff --git a/web/app/routes/admin/create/role-select.js b/web/app/routes/admin/create/role-select.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/admin/create/role-select.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/admin/edit.js b/web/app/routes/admin/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/admin/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/admin/edit/role-select.js b/web/app/routes/admin/edit/role-select.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/admin/edit/role-select.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/admin/list.js b/web/app/routes/admin/list.js new file mode 100644 index 0000000..a848ee3 --- /dev/null +++ b/web/app/routes/admin/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from './../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/admin/profile.js b/web/app/routes/admin/profile.js new file mode 100644 index 0000000..cee591e --- /dev/null +++ b/web/app/routes/admin/profile.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return this.get('store').ajaxGet('user/profile'); + } +}); diff --git a/web/app/routes/admin/profile/upload-avatar.js b/web/app/routes/admin/profile/upload-avatar.js new file mode 100644 index 0000000..96a9fa6 --- /dev/null +++ b/web/app/routes/admin/profile/upload-avatar.js @@ -0,0 +1,43 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + actions: { + didTransition() { + var me = this; + me.set('working', false) + Ember.run.later(function() { + Ember.$('input[type=file]').ace_file_input({ + style: 'well', + btn_choose: 'Click to choose new avatar', + btn_change: null, + no_icon: 'ace-icon fa fa-picture-o', + thumbnail: 'small', + before_remove: function() { + //don't remove/reset files while being uploaded + return !me.get('working') + }, + allowExt: ['jpg', 'jpeg', 'png', 'gif'], + allowMime: ['image/jpg', 'image/jpeg', 'image/png', 'image/gif'] + }); + }, 48); + // Bubble the didTransition event + return true; + }, + submit() { + let me = this; + if (!Ember.$('input[type=file]').val()) { + me.get('message').warn('请选择文件'); + } + else { + me.get('dialog').confirm('确认要更新头像吗?', () => { + me.get('store').ajaxPost('user/upload-avatar', + new FormData(Ember.$('#form_upload_avatar')[0])).then((user) => { + me.get('message').alert('头像更新成功'); + Ember.getOwner(me).lookup('route:user.profile').set('controller.model.avatar', user.avatar); + me.transitionTo('user.profile'); + }); + }); + } + } + } +}); diff --git a/web/app/routes/admin/show.js b/web/app/routes/admin/show.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/admin/show.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/api-group/api/create.js b/web/app/routes/api-group/api/create.js new file mode 100644 index 0000000..90d74d8 --- /dev/null +++ b/web/app/routes/api-group/api/create.js @@ -0,0 +1,10 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + model() { + return { + apiGroupId: this.paramsFor('api-group.api').apiGroupId + }; + } +}); diff --git a/web/app/routes/api-group/api/edit.js b/web/app/routes/api-group/api/edit.js new file mode 100644 index 0000000..eaac598 --- /dev/null +++ b/web/app/routes/api-group/api/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/api-group/api/import.js b/web/app/routes/api-group/api/import.js new file mode 100644 index 0000000..064fc30 --- /dev/null +++ b/web/app/routes/api-group/api/import.js @@ -0,0 +1,10 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + model() { + return { + apiGroupId: this.paramsFor('api-group.api').apiGroupId, + override: false + }; + } +}); diff --git a/web/app/routes/api-group/api/list.js b/web/app/routes/api-group/api/list.js new file mode 100644 index 0000000..45ea8d5 --- /dev/null +++ b/web/app/routes/api-group/api/list.js @@ -0,0 +1,23 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['api-group.api']; + }, + actions: { + remove(it) { + Ember.Logger.info('Remove Api: ', it); + let me = this; + me.get('dialog').confirm(`确认要删除Api[${it.name}]吗?`,()=> { + me.get('ajax').doPost('api/delete', { + id: it.id + }, ()=> { + me.get('message').alert('删除成功'); + me.get('controller.model.data').removeObject(it); + me.set('controller.model.total', me.get('controller.model.total') - 1); + }); + }); + } + } +}); diff --git a/web/app/routes/api-group/api/substitute.js b/web/app/routes/api-group/api/substitute.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/api-group/api/substitute.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/api-group/create.js b/web/app/routes/api-group/create.js new file mode 100644 index 0000000..498fe18 --- /dev/null +++ b/web/app/routes/api-group/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return {}; + } +}); diff --git a/web/app/routes/api-group/edit.js b/web/app/routes/api-group/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/api-group/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/api-group/list-select.js b/web/app/routes/api-group/list-select.js new file mode 100644 index 0000000..9302677 --- /dev/null +++ b/web/app/routes/api-group/list-select.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; +import BaseListSelectRoute from '../base-list-select'; + +export default BaseListSelectRoute.extend({ + templateName: 'api-group/list-select', + service: Ember.inject.service('api-group.service') +}); diff --git a/web/app/routes/api-group/list.js b/web/app/routes/api-group/list.js new file mode 100644 index 0000000..a964d56 --- /dev/null +++ b/web/app/routes/api-group/list.js @@ -0,0 +1,32 @@ +import Ember from 'ember'; +import BaseListRoute from '../base-list'; + +export default BaseListRoute.extend({ + actions: { + duplicate(it) { + Ember.Logger.info('Duplicate Api Group: ', it); + let me = this; + me.get('dialog').confirm(`确认要复制Api组[${it.name}]吗?`,()=> { + me.get('ajax').doPost('api-group/duplicate', { + id: it.id + }, (m)=> { + me.get('message').alert('复制成功'); + me.get('controller.model.data').pushObject(m); + }); + }); + }, + remove(it) { + Ember.Logger.info('Remove Api Group: ', it); + let me = this; + me.get('dialog').confirm(`确认要删除API组[${it.name}]吗?`,()=> { + me.get('ajax').doPost('api-group/delete', { + id: it.id + }, ()=> { + me.get('message').alert('删除成功'); + me.get('controller.model.data').removeObject(it); + me.set('controller.model.total', me.get('controller.model.total') - 1); + }); + }); + } + } +}); diff --git a/web/app/routes/app-alias/list.js b/web/app/routes/app-alias/list.js new file mode 100644 index 0000000..a848ee3 --- /dev/null +++ b/web/app/routes/app-alias/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from './../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/app-config/app-config-preview-action.js b/web/app/routes/app-config/app-config-preview-action.js new file mode 100644 index 0000000..757b093 --- /dev/null +++ b/web/app/routes/app-config/app-config-preview-action.js @@ -0,0 +1,41 @@ +import Ember from 'ember'; + +export default function(it) { + let me = this; + let id = it.id; + console.log('Preview: ', id); + let iframeId = 'iframe_preview_' + id; + me.get('dialog').dialog({ + title: `App配置[${it.name}]预览`, + message: ` +
+
+ +
+
+ `, + backdrop: true, + onEscape: true, + buttons: { + success: { + label: '确定', + className: 'btn-success' + } + } + }); + me.get('service').ajaxGet('preview', id).then((m) => { + Ember.Logger.debug('App Config Preview: ', m) + let iframeEl = document.getElementById(iframeId); + let iframeWindow = + iframeEl.contentWindow || + iframeEl.contentDocument.parentWindow; + iframeWindow.onload = function() { + iframeWindow.postMessage(JSON.stringify(m), '*'); + }; + }); +}; diff --git a/web/app/routes/app-config/create.js b/web/app/routes/app-config/create.js new file mode 100644 index 0000000..67ad7b7 --- /dev/null +++ b/web/app/routes/app-config/create.js @@ -0,0 +1,14 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return { + themeColor: 'rgba(23, 143, 221, 1)', + headerBgColor: 'rgba(23, 143, 221, 1)', + headerTextColor: 'rgba(255, 255, 255, 1)', + footerTopBorderColor: 'rgba(0, 0, 0, 1)', + footerBgColor: 'rgba(249, 249, 249, 1)' + }; + } +}); diff --git a/web/app/routes/app-config/edit.js b/web/app/routes/app-config/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/app-config/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/app-config/footer-item/abservers.js b/web/app/routes/app-config/footer-item/abservers.js new file mode 100644 index 0000000..511cf14 --- /dev/null +++ b/web/app/routes/app-config/footer-item/abservers.js @@ -0,0 +1,34 @@ +import Ember from 'ember'; + +export default { + actionInputOrTypeChanged: function() { + let me = this; + let action = null; + let actionType = Ember.get(me, 'actionType'); + Ember.Logger.debug(`Action Type ${actionType} Changed.`); + if (actionType === 'MESSSAGE') { + action = 'ph://view/room-list'; + } + else if (actionType === 'WORKBENCH') { + action = 'ph://view/workbench'; + } + else if (actionType === 'CONTACTS') { + action = 'ph://view/contacts'; + } + else if (actionType === 'ALERT') { + action = 'ph://view/alert-list'; + } + else if (actionType === 'ME') { + action = 'ph://view/me'; + } + else if (actionType === 'CUSTOM') { + action = Ember.get(me, 'actionInput'); + } + action && Ember.set(me, 'action', action); + }, + // set enabled when model active + activeChangeUpdateStatus: function() { + let me = this; + Ember.get(me, 'active') && Ember.set(me, 'enabled', true); + } +}; diff --git a/web/app/routes/app-config/footer-item/create.js b/web/app/routes/app-config/footer-item/create.js new file mode 100644 index 0000000..41e48c8 --- /dev/null +++ b/web/app/routes/app-config/footer-item/create.js @@ -0,0 +1,26 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; +import Abservers from './abservers'; + +export default BaseRoute.extend({ + queryParams: { + firstItem: { + refreshModel: true + } + }, + model(params) { + return Ember.Object.extend({ + appConfigId: this.paramsFor('app-config.footer-item').appConfigId, + textColorNormal: 'rgba(124, 124, 124, 1)', + textColorActive: 'rgba(0, 122, 255, 1)', + actionType: 'MESSAGE', + action: 'ph://view/room-list', + active: 'true' === params.firstItem, + enabled: true, + actionInputOrTypeChanged: Ember.observer('actionInput', + 'actionType', Abservers.actionInputOrTypeChanged), + activeChangeUpdateStatus: Ember.observer('active', + Abservers.activeChangeUpdateStatus) + }).create(); + } +}); diff --git a/web/app/routes/app-config/footer-item/edit.js b/web/app/routes/app-config/footer-item/edit.js new file mode 100644 index 0000000..40b033c --- /dev/null +++ b/web/app/routes/app-config/footer-item/edit.js @@ -0,0 +1,42 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; +import Abservers from './abservers'; + +export default BaseEditRoute.extend({ + afterModel: function(model) { + Ember.Logger.debug('Footer Item After Model: ', model); + let action = Ember.get(model, 'action'); + let actionType = null; + if (action.startsWith('ph://view/room-list')) { + actionType = 'MESSAGE'; + } + else if (action.startsWith('ph://view/workbench')) { + actionType = 'WORKBENCH'; + } + else if (action.startsWith('ph://view/contacts')) { + actionType = 'CONTACTS'; + } + else if (action.startsWith('ph://view/alert-list')) { + actionType = 'ALERT'; + } + else if (action.startsWith('ph://view/me')) { + actionType = 'ME'; + } + else { + actionType = 'CUSTOM'; + Ember.set(model, 'actionInput', action); + } + Ember.set(model, 'actionType', actionType); + + Ember.addObserver(model, + 'actionInput', + Abservers.actionInputOrTypeChanged); + Ember.addObserver(model, + 'actionType', + Abservers.actionInputOrTypeChanged); + // mark model is active + Ember.set(model, 'activeItem', Ember.get(model, 'active') === true); + Ember.addObserver(model, 'active', + Abservers.activeChangeUpdateStatus); + } +}); diff --git a/web/app/routes/app-config/footer-item/list.js b/web/app/routes/app-config/footer-item/list.js new file mode 100644 index 0000000..3eedcdf --- /dev/null +++ b/web/app/routes/app-config/footer-item/list.js @@ -0,0 +1,46 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['app-config.footer-item']; + }, + actions: { + moveUp(it) { + let me = this; + let data = me.get('controller.model.data'); + if (data && data.length > 1) { + let index = data.indexOf(it); + data.removeObject(it); + data.insertAt(index - 1, it); + me.updateSort(); + } + }, + moveDown(it) { + let me = this; + let data = me.get('controller.model.data'); + if (data && data.length > 1) { + let index = data.indexOf(it); + data.removeObject(it); + data.insertAt(index + 1, it); + me.updateSort(); + } + }, + remove(it) { + let me = this; + me.get('dialog').confirm('确认要删除[' + it.name + ']吗?', ()=> { + me.get('service').del({id: it.id}).then(()=> { + me.get('message').alert('删除成功'); + me.get('controller.model.data').removeObject(it); + me.set('controller.model.total', me.get('controller.model.total') - 1); + }); + }); + } + }, + updateSort() { + let me = this; + me.get('ajax').doPost('app-config-footer-item/update-sort', { + ids: JSON.stringify(me.get('controller.model.data').mapBy('id')) + }, false); + } +}); diff --git a/web/app/routes/app-config/list-select.js b/web/app/routes/app-config/list-select.js new file mode 100644 index 0000000..1619fc0 --- /dev/null +++ b/web/app/routes/app-config/list-select.js @@ -0,0 +1,11 @@ +import Ember from 'ember'; +import BaseListSelectRoute from '../base-list-select'; +import PreviewAction from './app-config-preview-action'; + +export default BaseListSelectRoute.extend({ + templateName: 'app-config/list-select', + service: Ember.inject.service('app-config.service'), + actions: { + preview: PreviewAction + } +}); diff --git a/web/app/routes/app-config/list.js b/web/app/routes/app-config/list.js new file mode 100644 index 0000000..3a7589e --- /dev/null +++ b/web/app/routes/app-config/list.js @@ -0,0 +1,20 @@ +import Ember from 'ember'; +import BaseListRoute from '../base-list'; +import PreviewAction from './app-config-preview-action'; + +export default BaseListRoute.extend({ + actions: { + preview: PreviewAction, + duplicate(it) { + let me = this; + me.get('dialog').confirm(`确认要复制App配置[${it.name}]吗?`,()=> { + me.get('ajax').doPost('app-config/duplicate', { + id: it.id + }, (m)=> { + me.get('message').alert('复制成功'); + me.get('controller.model.data').pushObject(m); + }); + }); + } + } +}); diff --git a/web/app/routes/app-config/manage.js b/web/app/routes/app-config/manage.js new file mode 100644 index 0000000..f97a2ac --- /dev/null +++ b/web/app/routes/app-config/manage.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from './../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/app-version-alias/list.js b/web/app/routes/app-version-alias/list.js new file mode 100644 index 0000000..a848ee3 --- /dev/null +++ b/web/app/routes/app-version-alias/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from './../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/app/appoint.js b/web/app/routes/app/appoint.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/app/appoint.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/app/appoint/create.js b/web/app/routes/app/appoint/create.js new file mode 100644 index 0000000..1945149 --- /dev/null +++ b/web/app/routes/app/appoint/create.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + model() { + return this.paramsFor('app.appoint'); + } +}); diff --git a/web/app/routes/app/appoint/create/version-select.js b/web/app/routes/app/appoint/create/version-select.js new file mode 100644 index 0000000..8517c08 --- /dev/null +++ b/web/app/routes/app/appoint/create/version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../version/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/appoint/edit.js b/web/app/routes/app/appoint/edit.js new file mode 100644 index 0000000..4911510 --- /dev/null +++ b/web/app/routes/app/appoint/edit.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ + extraParams(params, transition) { + return transition.params['app.appoint']; + } +}); diff --git a/web/app/routes/app/appoint/edit/version-select.js b/web/app/routes/app/appoint/edit/version-select.js new file mode 100644 index 0000000..8517c08 --- /dev/null +++ b/web/app/routes/app/appoint/edit/version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../version/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/appoint/list.js b/web/app/routes/app/appoint/list.js new file mode 100644 index 0000000..378d47f --- /dev/null +++ b/web/app/routes/app/appoint/list.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['app.appoint']; + } +}); diff --git a/web/app/routes/app/create.js b/web/app/routes/app/create.js new file mode 100644 index 0000000..498fe18 --- /dev/null +++ b/web/app/routes/app/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return {}; + } +}); diff --git a/web/app/routes/app/create/api-group-select.js b/web/app/routes/app/create/api-group-select.js new file mode 100644 index 0000000..6448440 --- /dev/null +++ b/web/app/routes/app/create/api-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../api-group/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/create/app-config-select.js b/web/app/routes/app/create/app-config-select.js new file mode 100644 index 0000000..a67c92b --- /dev/null +++ b/web/app/routes/app/create/app-config-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../app-config/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/create/splash-select.js b/web/app/routes/app/create/splash-select.js new file mode 100644 index 0000000..5f7b981 --- /dev/null +++ b/web/app/routes/app/create/splash-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../splash/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/create/theme-select.js b/web/app/routes/app/create/theme-select.js new file mode 100644 index 0000000..151c61c --- /dev/null +++ b/web/app/routes/app/create/theme-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../theme/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/edit.js b/web/app/routes/app/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/app/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/app/edit/api-group-select.js b/web/app/routes/app/edit/api-group-select.js new file mode 100644 index 0000000..6448440 --- /dev/null +++ b/web/app/routes/app/edit/api-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../api-group/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/edit/app-config-select.js b/web/app/routes/app/edit/app-config-select.js new file mode 100644 index 0000000..a67c92b --- /dev/null +++ b/web/app/routes/app/edit/app-config-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../app-config/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/edit/splash-select.js b/web/app/routes/app/edit/splash-select.js new file mode 100644 index 0000000..5f7b981 --- /dev/null +++ b/web/app/routes/app/edit/splash-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../splash/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/edit/theme-select.js b/web/app/routes/app/edit/theme-select.js new file mode 100644 index 0000000..151c61c --- /dev/null +++ b/web/app/routes/app/edit/theme-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../theme/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/list-select-for-subitem-select.js b/web/app/routes/app/list-select-for-subitem-select.js new file mode 100644 index 0000000..996fbbb --- /dev/null +++ b/web/app/routes/app/list-select-for-subitem-select.js @@ -0,0 +1,32 @@ +import Ember from 'ember'; +import BaseListRoute from '../base-list'; + +export default BaseListRoute.extend({ + queryParams: { + search: { + refreshModel: true + }, + selectedId: { + refreshModel: false + }, + idField: { + refreshModel: false + }, + nameField: { + refreshModel: false + }, + platform: { + refreshModel: false + }, + subitemRouteName: { + refreshModel: false + } + }, + templateName: 'app/list-select-for-subitem-select', + service: Ember.inject.service('app.service'), + setupController(controller) { + controller.set('parentRouteName', + this.get('routeName').replace(/\.[^\.]+$/, '')); + this._super(...arguments); + } +}); diff --git a/web/app/routes/app/list-select-for-version-select.js b/web/app/routes/app/list-select-for-version-select.js new file mode 100644 index 0000000..b3384a0 --- /dev/null +++ b/web/app/routes/app/list-select-for-version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from './list-select-for-subitem-select'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/app/list-select.js b/web/app/routes/app/list-select.js new file mode 100644 index 0000000..04b58a9 --- /dev/null +++ b/web/app/routes/app/list-select.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; +import BaseListSelectRoute from '../base-list-select'; + +export default BaseListSelectRoute.extend({ + templateName: 'app/list-select', + service: Ember.inject.service('app.service') +}); diff --git a/web/app/routes/app/list.js b/web/app/routes/app/list.js new file mode 100644 index 0000000..0031280 --- /dev/null +++ b/web/app/routes/app/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from '../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/app/release.js b/web/app/routes/app/release.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/app/release.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/app/release/edit.js b/web/app/routes/app/release/edit.js new file mode 100644 index 0000000..30f9f0c --- /dev/null +++ b/web/app/routes/app/release/edit.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ + extraParams(params, transition) { + return transition.params['app.release']; + } +}); diff --git a/web/app/routes/app/release/edit/version-select.js b/web/app/routes/app/release/edit/version-select.js new file mode 100644 index 0000000..8517c08 --- /dev/null +++ b/web/app/routes/app/release/edit/version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../version/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/release/show.js b/web/app/routes/app/release/show.js new file mode 100644 index 0000000..30f9f0c --- /dev/null +++ b/web/app/routes/app/release/show.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ + extraParams(params, transition) { + return transition.params['app.release']; + } +}); diff --git a/web/app/routes/app/version-group/create.js b/web/app/routes/app/version-group/create.js new file mode 100644 index 0000000..c9a9c54 --- /dev/null +++ b/web/app/routes/app/version-group/create.js @@ -0,0 +1,9 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + model() { + return { + appId: this.paramsFor('app.version-group').appId + }; + } +}); diff --git a/web/app/routes/app/version-group/create/version-select.js b/web/app/routes/app/version-group/create/version-select.js new file mode 100644 index 0000000..8517c08 --- /dev/null +++ b/web/app/routes/app/version-group/create/version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../version/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/version-group/edit.js b/web/app/routes/app/version-group/edit.js new file mode 100644 index 0000000..693d84a --- /dev/null +++ b/web/app/routes/app/version-group/edit.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ + extraParams(params, transition) { + return transition.params['app.version-group']; + } +}); diff --git a/web/app/routes/app/version-group/edit/version-select.js b/web/app/routes/app/version-group/edit/version-select.js new file mode 100644 index 0000000..8517c08 --- /dev/null +++ b/web/app/routes/app/version-group/edit/version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../version/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/version-group/list-select.js b/web/app/routes/app/version-group/list-select.js new file mode 100644 index 0000000..4854e79 --- /dev/null +++ b/web/app/routes/app/version-group/list-select.js @@ -0,0 +1,24 @@ +import Ember from 'ember'; +import BaseListSelectRoute from '../../base-list-select'; + +export default BaseListSelectRoute.extend({ + queryParams: { + appId: { + refreshModel: true + }, + search: { + refreshModel: true + }, + selectedId: { + refreshModel: false + }, + idField: { + refreshModel: false + }, + nameField: { + refreshModel: false + } + }, + templateName: 'app/version-group/list-select', + service: Ember.inject.service('app.version-group.service') +}); diff --git a/web/app/routes/app/version-group/list.js b/web/app/routes/app/version-group/list.js new file mode 100644 index 0000000..080ea81 --- /dev/null +++ b/web/app/routes/app/version-group/list.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['app.version-group']; + } +}); diff --git a/web/app/routes/app/version.js b/web/app/routes/app/version.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/app/version.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/app/version/create.js b/web/app/routes/app/version/create.js new file mode 100644 index 0000000..6a9fd3a --- /dev/null +++ b/web/app/routes/app/version/create.js @@ -0,0 +1,9 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + model() { + return Ember.$.extend({ + override: false + }, this.paramsFor('app.version')); + } +}); diff --git a/web/app/routes/app/version/edit.js b/web/app/routes/app/version/edit.js new file mode 100644 index 0000000..10d9d9c --- /dev/null +++ b/web/app/routes/app/version/edit.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ + extraParams(params, transition) { + return transition.params['app.version']; + } +}); diff --git a/web/app/routes/app/version/edit/api-group-select.js b/web/app/routes/app/version/edit/api-group-select.js new file mode 100644 index 0000000..64f18ab --- /dev/null +++ b/web/app/routes/app/version/edit/api-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../api-group/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/version/edit/app-config-select.js b/web/app/routes/app/version/edit/app-config-select.js new file mode 100644 index 0000000..748ee0f --- /dev/null +++ b/web/app/routes/app/version/edit/app-config-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app-config/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/version/edit/splash-select.js b/web/app/routes/app/version/edit/splash-select.js new file mode 100644 index 0000000..fb3d905 --- /dev/null +++ b/web/app/routes/app/version/edit/splash-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../splash/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/version/edit/theme-select.js b/web/app/routes/app/version/edit/theme-select.js new file mode 100644 index 0000000..ea4fa1d --- /dev/null +++ b/web/app/routes/app/version/edit/theme-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../theme/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/version/edit/version-select.js b/web/app/routes/app/version/edit/version-select.js new file mode 100644 index 0000000..1569321 --- /dev/null +++ b/web/app/routes/app/version/edit/version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/app/version/list-select.js b/web/app/routes/app/version/list-select.js new file mode 100644 index 0000000..141d8ae --- /dev/null +++ b/web/app/routes/app/version/list-select.js @@ -0,0 +1,56 @@ +import Ember from 'ember'; +import BaseListSelectRoute from '../../base-list-select'; + +export default BaseListSelectRoute.extend({ + queryParams: { + appId: { + refreshModel: true + }, + platform: { + refreshModel: true + }, + search: { + refreshModel: true + }, + selectedId: { + refreshModel: false + }, + idField: { + refreshModel: false + }, + nameField: { + refreshModel: false + } + }, + templateName: 'app/version/list-select', + service: Ember.inject.service('app.version.service'), + extraParams(params, transition) { + let appId = params.appId; + let platform = params.platform; + if (!appId || !platform) { + Object.keys(transition.params).some((k) => { + let props = transition.params[k]; + if (!appId && props.appId) { + appId = props.appId; + } + if (!platform && props.platform) { + platform = props.platform; + } + if (appId && platform) { + return true; + } + }); + } + let eParams = { + appId: appId, + platform: platform + }; + this.set('eParams', eParams); + return eParams; + }, + setupController(controller) { + let me = this; + me._super(...arguments); + controller.setProperties(me.get('eParams')); + } +}); diff --git a/web/app/routes/app/version/list.js b/web/app/routes/app/version/list.js new file mode 100644 index 0000000..1783a3c --- /dev/null +++ b/web/app/routes/app/version/list.js @@ -0,0 +1,23 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['app.version']; + }, + actions: { + hide(av) { + Ember.Logger.info('Remove App Version: ', av); + let me = this; + me.get('dialog').confirm(`确认要删除App版本[${av.name}]吗?`,()=> { + me.get('ajax').doPost('app-version/hide', { + id: av.id + }, ()=> { + me.get('message').alert('删除成功'); + me.get('controller.model.data').removeObject(av); + me.set('controller.model.total', me.get('controller.model.total') - 1); + }); + }); + } + } +}); diff --git a/web/app/routes/application.js b/web/app/routes/application.js new file mode 100644 index 0000000..1e3bd2b --- /dev/null +++ b/web/app/routes/application.js @@ -0,0 +1,42 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + getLoginRoute() { + return Ember.getOwner(this).lookup('route:login'); + }, + transitionIntercept(transition) { + if (transition.targetName !== 'login') { + this.getLoginRoute().set('prevTransition', transition); + } + }, + beforeModel: function(transition) { + Ember.Logger.info('Before Application Model.', transition); + this.transitionIntercept(transition); + }, + activate() { + Ember.Logger.info('Application Activate.'); + Ember.$('body').addClass('no-skin'); + try{ace.settings.check('navbar', 'fixed');}catch(e){console.log(e)} + try{ace.settings.check('main-container', 'fixed');}catch(e){console.log(e)} + }, + actions: { + loading(transition, originRoute) { + Ember.Logger.info('Application Loading...'); + // var appCtrl = this.controllerFor('application'); + this.router.one('didTransition', function() { + // appCtrl.set('loading', false); + }); + return true; + }, + willTransition(transition) { + Ember.Logger.info('Application Will Transition.', transition); + this.transitionIntercept(transition); + }, + goback() { + history.back(); + }, + reload() { + this.refresh(); + } + } +}); diff --git a/web/app/routes/base-edit.js b/web/app/routes/base-edit.js new file mode 100644 index 0000000..23961b4 --- /dev/null +++ b/web/app/routes/base-edit.js @@ -0,0 +1,18 @@ +import Ember from 'ember'; +import BaseRoute from './base'; + +export default BaseRoute.extend({ + model(params, transition) { + let me = this; + let extParams = null; + if (Ember.$.type(me.extraParams) === 'function') { + extParams = me.extraParams(params, transition); + } + if (Object.getOwnPropertyNames(params).length === 0 && + /\.index$/.test(me.routeName)) { + params = transition.params[me.routeName.replace(/\.index$/, '')]; + } + return me.get('service').find( + extParams ? Ember.$.extend(true, params, extParams) : params); + } +}); diff --git a/web/app/routes/base-list-select.js b/web/app/routes/base-list-select.js new file mode 100644 index 0000000..840f13e --- /dev/null +++ b/web/app/routes/base-list-select.js @@ -0,0 +1,61 @@ +import Ember from 'ember'; +import BaseListRoute from './base-list'; + +export default BaseListRoute.extend({ + queryParams: { + search: { + refreshModel: true + }, + selectedId: { + refreshModel: false + }, + idField: { + refreshModel: false + }, + nameField: { + refreshModel: false + } + }, + setupController(controller) { + controller.set('selectedModel', null); + this._super(...arguments); + }, + actions: { + select(it, selected) { + let me = this; + Ember.Logger.info('select: ', it, selected); + if (selected) { + me.set('controller.selectedId', it.id); + me.set('controller.selectedModel', it); + } + else { + me.set('controller.selectedId', ''); + me.set('controller.selectedModel', null); + } + }, + submit() { + let me = this; + let parentRouteName = me.getParentRouteName(); + const parentModel = me.modelFor(parentRouteName); + let itId = me.get('controller.selectedId'); + if (itId) { + let it = me.get('controller.selectedModel'); + if (it) { + Ember.Logger.info('select: ', it); + Ember.set(parentModel, me.get('controller.idField'), itId); + Ember.set(parentModel, me.get('controller.nameField'), it.name); + } + } + // not select + else { + Ember.set(parentModel, me.get('controller.idField'), ''); + Ember.set(parentModel, me.get('controller.nameField'), ''); + } + me.transitionTo(parentRouteName); + } + }, + getParentRouteName() { + return this.get('parentRouteName') || + this.get('routeName').replace(/\.[^.]+$/, ''); + } +}); diff --git a/web/app/routes/base-list.js b/web/app/routes/base-list.js new file mode 100644 index 0000000..bf909ff --- /dev/null +++ b/web/app/routes/base-list.js @@ -0,0 +1,26 @@ +import Ember from 'ember'; +import BaseRoute from './base'; + +export default BaseRoute.extend({ + queryParams: { + search: { + refreshModel: true + } + }, + model(params, transition) { + let me = this; + let extParams = null; + if (Ember.$.type(me.extraParams) === 'function') { + extParams = me.extraParams(params, transition); + } + let page = params.page; + if (!Number.isInteger(page)) { + page = parseInt(page); + } + if (page < 1) { + page = 1; + } + return me.get('service').listPage(page, + extParams ? Ember.$.extend(true, params, extParams) : params); + } +}); diff --git a/web/app/routes/base.js b/web/app/routes/base.js new file mode 100644 index 0000000..89a710b --- /dev/null +++ b/web/app/routes/base.js @@ -0,0 +1,37 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + toolService: Ember.inject.service('tool-service'), + beforeModel(transition) { + let me = this; + let service = me.get('service'); + if (!service) { + const routeName = me.get('routeName'); + let service = me.get('toolService').getServiceByRouteName(routeName); + if (service) { + Ember.Logger.info(`Set Route [${routeName}] Service [${service}]`); + me.set('service', service); + } + else { + Ember.Logger.info(`No Service Found For Route [${routeName}]`); + } + } + me._super(...arguments); + }, + setupController(controller) { + let me = this; + controller.set('service', me.get('service')); + me._super(...arguments); + }, + findParam(transition, name) { + let param = null + Object.keys(transition.params).some((k) => { + let props = transition.params[k]; + if (props[name]) { + param = props[name]; + return true; + } + }); + return param; + } +}); diff --git a/web/app/routes/cloud/ad-slide/create.js b/web/app/routes/cloud/ad-slide/create.js new file mode 100644 index 0000000..902b7d1 --- /dev/null +++ b/web/app/routes/cloud/ad-slide/create.js @@ -0,0 +1,16 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + queryParams: { + corpId: { + refreshModel: true + } + }, + model(params, transition) { + return this.get('store').ajaxGet('ad-slide/find-for-create', { + cloudId: this.findParam(transition, 'cloudId'), + corpId: params.corpId + }); + } +}); diff --git a/web/app/routes/cloud/ad-slide/create/app-select-for-version-select.js b/web/app/routes/cloud/ad-slide/create/app-select-for-version-select.js new file mode 100644 index 0000000..3f5f1ad --- /dev/null +++ b/web/app/routes/cloud/ad-slide/create/app-select-for-version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app/list-select-for-version-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/ad-slide/create/app-select.js b/web/app/routes/cloud/ad-slide/create/app-select.js new file mode 100644 index 0000000..516045d --- /dev/null +++ b/web/app/routes/cloud/ad-slide/create/app-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/ad-slide/create/corp-select.js b/web/app/routes/cloud/ad-slide/create/corp-select.js new file mode 100644 index 0000000..72d4197 --- /dev/null +++ b/web/app/routes/cloud/ad-slide/create/corp-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../corp/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/ad-slide/create/version-select.js b/web/app/routes/cloud/ad-slide/create/version-select.js new file mode 100644 index 0000000..3bb64a3 --- /dev/null +++ b/web/app/routes/cloud/ad-slide/create/version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app/version/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/ad-slide/edit.js b/web/app/routes/cloud/ad-slide/edit.js new file mode 100644 index 0000000..e605678 --- /dev/null +++ b/web/app/routes/cloud/ad-slide/edit.js @@ -0,0 +1,11 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ + model(params, transition) { + return this.get('store').ajaxGet('ad-slide/find-for-edit', { + cloudId: this.findParam(transition, 'cloudId'), + id: params.id + }); + } +}); diff --git a/web/app/routes/cloud/ad-slide/list.js b/web/app/routes/cloud/ad-slide/list.js new file mode 100644 index 0000000..68dcaf2 --- /dev/null +++ b/web/app/routes/cloud/ad-slide/list.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['cloud.ad-slide']; + } +}); diff --git a/web/app/routes/cloud/ad-slide/manage.js b/web/app/routes/cloud/ad-slide/manage.js new file mode 100644 index 0000000..9bc1a87 --- /dev/null +++ b/web/app/routes/cloud/ad-slide/manage.js @@ -0,0 +1,37 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + queryParams: { + corpId: { + refreshModel: true + }, + appId: { + refreshModel: true + }, + platform: { + refreshModel: true + }, + appVersion: { + refreshModel: true + } + }, + model(params, transition) { + let me = this; + let cloudId = me.findParam(transition, 'cloudId'); + me.set('cloudId', cloudId); + return me.get('store').ajaxGet('ad-slide/list-for-manage', + Ember.merge(params, { + cloudId: cloudId + })); + }, + actions: { + adSlideSortStopped(ids) { + let me = this; + ids && ids.length && me.get('ajax').doPost('ad-slide/update-sort', { + cloudId: me.get('cloudId'), + ids: JSON.stringify(ids) + }, false); + } + } +}); diff --git a/web/app/routes/cloud/corp/biz-group/create.js b/web/app/routes/cloud/corp/biz-group/create.js new file mode 100644 index 0000000..fd7fe6f --- /dev/null +++ b/web/app/routes/cloud/corp/biz-group/create.js @@ -0,0 +1,11 @@ +import Ember from 'ember'; +import BaseRoute from '../../../base'; + +export default BaseRoute.extend({ + model() { + return this.get('store').ajaxGet('corp/find-for-subitem', { + cloudId: this.paramsFor('cloud.corp').cloudId, + corpId: this.paramsFor('cloud.corp.biz-group').corpId + }); + } +}); diff --git a/web/app/routes/cloud/corp/biz-group/edit.js b/web/app/routes/cloud/corp/biz-group/edit.js new file mode 100644 index 0000000..a424d64 --- /dev/null +++ b/web/app/routes/cloud/corp/biz-group/edit.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../../base-edit'; + +export default BaseEditRoute.extend({ + model(params) { + return this.get('store').ajaxGet('biz-group/find-for-edit', { + cloudId: this.paramsFor('cloud.corp').cloudId, + corpId: this.paramsFor('cloud.corp.biz-group').corpId, + id: params.id + }); + } +}); diff --git a/web/app/routes/cloud/corp/biz-manage.js b/web/app/routes/cloud/corp/biz-manage.js new file mode 100644 index 0000000..35e5b8d --- /dev/null +++ b/web/app/routes/cloud/corp/biz-manage.js @@ -0,0 +1,91 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + queryParams: { + selected: { + refreshModel: true + }, + showDisabled: { + refreshModel: true, + replace: false + } + }, + model(params) { + return this.get('store').ajaxGet('biz-group/list', { + cloudId: this.paramsFor('cloud.corp').cloudId, + corpId: params.corpId, + selectedId: params.selected, + showDisabled: params.showDisabled + }); + }, + setupController(controller, model, transition) { + let me = this; + controller.set('showDisabled', + transition.queryParams.showDisabled ? + JSON.parse(transition.queryParams.showDisabled) : false) + me._super(...arguments); + }, + actions: { + bizGroupSortStopped(ids) { + let me = this; + ids && ids.length && me.get('ajax').doPost('biz-group/update-sort', { + cloudId: me.paramsFor('cloud.corp').cloudId, + ids: JSON.stringify(ids) + }, false); + }, + bizSortStopped(ids) { + let me = this; + ids && ids.length && me.get('ajax').doPost('biz/update-sort', { + cloudId: me.paramsFor('cloud.corp').cloudId, + groupId: me.get('controller.selected'), + ids: JSON.stringify(ids) + }, false); + }, + deleteBizGroup(bizGroup) { + let me = this; + me.get('dialog').confirm('确认要删除业务分组[' + bizGroup.name + ']吗?', () => { + me.get('ajax').doPost('biz-group/delete', { + cloudId: this.paramsFor('cloud.corp').cloudId, + id: bizGroup.id + }, () => { + me.get('message').alert('删除成功'); + me.get('controller.model.bizGroups').removeObject(bizGroup); + }); + }); + }, + selectGroup(biz) { + let me = this; + me.set('controller.isEditing', true); + me.set('controller.isEditingBiz', biz); + me.set('controller.isEditingBiz', biz); + me.set('controller.selectedGroupId', me.get('controller.selected')); + }, + cancelSelectGroup() { + let me = this; + me.set('controller.isEditing', false); + me.set('controller.isEditingBiz', null); + }, + saveSelectGroup(biz) { + let me = this; + let groupId = me.get('controller.selectedGroupId'); + if (groupId !== me.get('controller.selected')) { + let model = me.get('controller.model'); + me.get('dialog').confirm('确认要更新业务分组吗?', ()=> { + let params = Ember.merge({ + cloudId: model.cloud.id, + corpId: model.corp.id + }, biz); + params.groupId = groupId; + params.icon = null; + me.get('ajax').doPost('biz/update', params, ()=> { + me.get('message').alert('更新成功'); + me.refresh(); + }); + }); + } + me.set('controller.isEditing', false); + me.set('controller.isEditingBiz', null); + } + } +}); diff --git a/web/app/routes/cloud/corp/biz/create.js b/web/app/routes/cloud/corp/biz/create.js new file mode 100644 index 0000000..a144b0b --- /dev/null +++ b/web/app/routes/cloud/corp/biz/create.js @@ -0,0 +1,11 @@ +import Ember from 'ember'; +import BaseRoute from '../../../base'; + +export default BaseRoute.extend({ + model() { + return this.get('store').ajaxGet('biz/find-for-create', { + cloudId: this.paramsFor('cloud.corp').cloudId, + corpId: this.paramsFor('cloud.corp.biz').corpId + }); + } +}); diff --git a/web/app/routes/cloud/corp/biz/edit.js b/web/app/routes/cloud/corp/biz/edit.js new file mode 100644 index 0000000..cbf9560 --- /dev/null +++ b/web/app/routes/cloud/corp/biz/edit.js @@ -0,0 +1,9 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../../base-edit'; + +export default BaseEditRoute.extend({ + extraParams(params, transition) { + return Ember.merge(transition.params['cloud.corp'], + transition.params['cloud.corp.biz']); + } +}); diff --git a/web/app/routes/cloud/corp/list-select.js b/web/app/routes/cloud/corp/list-select.js new file mode 100644 index 0000000..43ae16b --- /dev/null +++ b/web/app/routes/cloud/corp/list-select.js @@ -0,0 +1,13 @@ +import Ember from 'ember'; +import BaseListSelectRoute from '../../base-list-select'; + +export default BaseListSelectRoute.extend({ + templateName: 'cloud/corp/list-select', + service: Ember.inject.service('cloud.corp.service'), + extraParams(params, transition) { + return { + cloudId: params.cloudId || + this.findParam(transition, 'cloudId') + }; + } +}); diff --git a/web/app/routes/cloud/corp/list.js b/web/app/routes/cloud/corp/list.js new file mode 100644 index 0000000..5ab0ecc --- /dev/null +++ b/web/app/routes/cloud/corp/list.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return {cloudId: params.cloudId || this.findParam(transition, 'cloudId')}; + } +}); diff --git a/web/app/routes/cloud/corp/manage.js b/web/app/routes/cloud/corp/manage.js new file mode 100644 index 0000000..fe4e4c2 --- /dev/null +++ b/web/app/routes/cloud/corp/manage.js @@ -0,0 +1,11 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + model(params) { + return this.get('store').ajaxGet('corp/find-for-edit', { + cloudId: this.paramsFor('cloud.corp').cloudId, + corpId: params.corpId + }); + } +}); diff --git a/web/app/routes/cloud/corp/manage/app-config-select.js b/web/app/routes/cloud/corp/manage/app-config-select.js new file mode 100644 index 0000000..748ee0f --- /dev/null +++ b/web/app/routes/cloud/corp/manage/app-config-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app-config/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/corp/manage/app-select-for-version-group-select.js b/web/app/routes/cloud/corp/manage/app-select-for-version-group-select.js new file mode 100644 index 0000000..0ddadc8 --- /dev/null +++ b/web/app/routes/cloud/corp/manage/app-select-for-version-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app/list-select-for-subitem-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/corp/manage/app-select-for-version-select.js b/web/app/routes/cloud/corp/manage/app-select-for-version-select.js new file mode 100644 index 0000000..3f5f1ad --- /dev/null +++ b/web/app/routes/cloud/corp/manage/app-select-for-version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app/list-select-for-version-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/corp/manage/app-select.js b/web/app/routes/cloud/corp/manage/app-select.js new file mode 100644 index 0000000..516045d --- /dev/null +++ b/web/app/routes/cloud/corp/manage/app-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/corp/manage/splash-select.js b/web/app/routes/cloud/corp/manage/splash-select.js new file mode 100644 index 0000000..fb3d905 --- /dev/null +++ b/web/app/routes/cloud/corp/manage/splash-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../splash/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/corp/manage/theme-select.js b/web/app/routes/cloud/corp/manage/theme-select.js new file mode 100644 index 0000000..ea4fa1d --- /dev/null +++ b/web/app/routes/cloud/corp/manage/theme-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../theme/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/corp/manage/version-group-select.js b/web/app/routes/cloud/corp/manage/version-group-select.js new file mode 100644 index 0000000..b1daa7c --- /dev/null +++ b/web/app/routes/cloud/corp/manage/version-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app/version-group/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/corp/manage/version-select.js b/web/app/routes/cloud/corp/manage/version-select.js new file mode 100644 index 0000000..3bb64a3 --- /dev/null +++ b/web/app/routes/cloud/corp/manage/version-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../../app/version/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/cloud/corp/member/list.js b/web/app/routes/cloud/corp/member/list.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/cloud/corp/member/list.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/cloud/create.js b/web/app/routes/cloud/create.js new file mode 100644 index 0000000..498fe18 --- /dev/null +++ b/web/app/routes/cloud/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return {}; + } +}); diff --git a/web/app/routes/cloud/edit.js b/web/app/routes/cloud/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/cloud/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/cloud/list.js b/web/app/routes/cloud/list.js new file mode 100644 index 0000000..0031280 --- /dev/null +++ b/web/app/routes/cloud/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from '../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/corp/contact.js b/web/app/routes/corp/contact.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/corp/contact.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/corp/contact/create.js b/web/app/routes/corp/contact/create.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/corp/contact/create.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/corp/contact/edit.js b/web/app/routes/corp/contact/edit.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/corp/contact/edit.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/corp/contact/list.js b/web/app/routes/corp/contact/list.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/corp/contact/list.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/corp/create.js b/web/app/routes/corp/create.js new file mode 100644 index 0000000..498fe18 --- /dev/null +++ b/web/app/routes/corp/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return {}; + } +}); diff --git a/web/app/routes/corp/create/api-group-select.js b/web/app/routes/corp/create/api-group-select.js new file mode 100644 index 0000000..6448440 --- /dev/null +++ b/web/app/routes/corp/create/api-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../api-group/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/create/app-config-select.js b/web/app/routes/corp/create/app-config-select.js new file mode 100644 index 0000000..a67c92b --- /dev/null +++ b/web/app/routes/corp/create/app-config-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../app-config/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/create/splash-select.js b/web/app/routes/corp/create/splash-select.js new file mode 100644 index 0000000..5f7b981 --- /dev/null +++ b/web/app/routes/corp/create/splash-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../splash/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/create/theme-select.js b/web/app/routes/corp/create/theme-select.js new file mode 100644 index 0000000..151c61c --- /dev/null +++ b/web/app/routes/corp/create/theme-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../theme/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/dept.js b/web/app/routes/corp/dept.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/corp/dept.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/corp/dept/create.js b/web/app/routes/corp/dept/create.js new file mode 100644 index 0000000..34ff2fc --- /dev/null +++ b/web/app/routes/corp/dept/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + model() { + return Ember.$.extend({}, this.paramsFor('corp.dept')); + } +}); diff --git a/web/app/routes/corp/dept/edit.js b/web/app/routes/corp/dept/edit.js new file mode 100644 index 0000000..eaac598 --- /dev/null +++ b/web/app/routes/corp/dept/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/corp/dept/list.js b/web/app/routes/corp/dept/list.js new file mode 100644 index 0000000..7c0729f --- /dev/null +++ b/web/app/routes/corp/dept/list.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['corp.dept']; + } +}); diff --git a/web/app/routes/corp/dept/tree.js b/web/app/routes/corp/dept/tree.js new file mode 100644 index 0000000..a52e4eb --- /dev/null +++ b/web/app/routes/corp/dept/tree.js @@ -0,0 +1,9 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + model(params, transition) { + let me = this; + return me.get('store').ajaxGet('dept/tree', transition.params['corp.dept']); + } +}); diff --git a/web/app/routes/corp/edit.js b/web/app/routes/corp/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/corp/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/corp/edit/api-group-select.js b/web/app/routes/corp/edit/api-group-select.js new file mode 100644 index 0000000..6448440 --- /dev/null +++ b/web/app/routes/corp/edit/api-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../api-group/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/edit/app-config-select.js b/web/app/routes/corp/edit/app-config-select.js new file mode 100644 index 0000000..a67c92b --- /dev/null +++ b/web/app/routes/corp/edit/app-config-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../app-config/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/edit/splash-select.js b/web/app/routes/corp/edit/splash-select.js new file mode 100644 index 0000000..5f7b981 --- /dev/null +++ b/web/app/routes/corp/edit/splash-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../splash/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/edit/theme-select.js b/web/app/routes/corp/edit/theme-select.js new file mode 100644 index 0000000..151c61c --- /dev/null +++ b/web/app/routes/corp/edit/theme-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../theme/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/edit/tiny-app-group-select.js b/web/app/routes/corp/edit/tiny-app-group-select.js new file mode 100644 index 0000000..c212581 --- /dev/null +++ b/web/app/routes/corp/edit/tiny-app-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../tiny-app-group/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/employee/create.js b/web/app/routes/corp/employee/create.js new file mode 100644 index 0000000..e69e27c --- /dev/null +++ b/web/app/routes/corp/employee/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + model() { + return Ember.$.extend({}, this.paramsFor('corp.employee')); + } +}); diff --git a/web/app/routes/corp/employee/edit.js b/web/app/routes/corp/employee/edit.js new file mode 100644 index 0000000..eaac598 --- /dev/null +++ b/web/app/routes/corp/employee/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/corp/employee/list.js b/web/app/routes/corp/employee/list.js new file mode 100644 index 0000000..1827848 --- /dev/null +++ b/web/app/routes/corp/employee/list.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['corp.employee']; + } +}); diff --git a/web/app/routes/corp/employee/show.js b/web/app/routes/corp/employee/show.js new file mode 100644 index 0000000..eaac598 --- /dev/null +++ b/web/app/routes/corp/employee/show.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/corp/list.js b/web/app/routes/corp/list.js new file mode 100644 index 0000000..0031280 --- /dev/null +++ b/web/app/routes/corp/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from '../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/corp/show.js b/web/app/routes/corp/show.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/corp/show.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/corp/tiny-app-group/create.js b/web/app/routes/corp/tiny-app-group/create.js new file mode 100644 index 0000000..9d07d56 --- /dev/null +++ b/web/app/routes/corp/tiny-app-group/create.js @@ -0,0 +1,9 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + model() { + return Ember.$.extend({}, this.paramsFor('corp.tiny-app-group')); + } +}); + diff --git a/web/app/routes/corp/tiny-app-group/edit.js b/web/app/routes/corp/tiny-app-group/edit.js new file mode 100644 index 0000000..fdf1f49 --- /dev/null +++ b/web/app/routes/corp/tiny-app-group/edit.js @@ -0,0 +1,6 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ +}); + diff --git a/web/app/routes/corp/tiny-app-group/list-select.js b/web/app/routes/corp/tiny-app-group/list-select.js new file mode 100644 index 0000000..fc9ab36 --- /dev/null +++ b/web/app/routes/corp/tiny-app-group/list-select.js @@ -0,0 +1,24 @@ +import Ember from 'ember'; +import BaseListSelectRoute from '../../base-list-select'; + +export default BaseListSelectRoute.extend({ + queryParams: { + corpId: { + refreshModel: true + }, + search: { + refreshModel: true + }, + selectedId: { + refreshModel: false + }, + idField: { + refreshModel: false + }, + nameField: { + refreshModel: false + } + }, + templateName: 'corp/tiny-app-group/list-select', + service: Ember.inject.service('corp.tiny-app-group.service') +}); diff --git a/web/app/routes/corp/tiny-app-group/list.js b/web/app/routes/corp/tiny-app-group/list.js new file mode 100644 index 0000000..154b0a8 --- /dev/null +++ b/web/app/routes/corp/tiny-app-group/list.js @@ -0,0 +1,9 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['corp.tiny-app-group']; + } +}); + diff --git a/web/app/routes/corp/tiny-app/create.js b/web/app/routes/corp/tiny-app/create.js new file mode 100644 index 0000000..55f918f --- /dev/null +++ b/web/app/routes/corp/tiny-app/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../../base'; + +export default BaseRoute.extend({ + model() { + return Ember.$.extend({}, this.paramsFor('corp.tiny-app')); + } +}); diff --git a/web/app/routes/corp/tiny-app/create/tiny-app-group-select.js b/web/app/routes/corp/tiny-app/create/tiny-app-group-select.js new file mode 100644 index 0000000..7ab025c --- /dev/null +++ b/web/app/routes/corp/tiny-app/create/tiny-app-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../tiny-app-group/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/tiny-app/edit.js b/web/app/routes/corp/tiny-app/edit.js new file mode 100644 index 0000000..eaac598 --- /dev/null +++ b/web/app/routes/corp/tiny-app/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/corp/tiny-app/edit/tiny-app-group-select.js b/web/app/routes/corp/tiny-app/edit/tiny-app-group-select.js new file mode 100644 index 0000000..7ab025c --- /dev/null +++ b/web/app/routes/corp/tiny-app/edit/tiny-app-group-select.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import SelectRoute from '../../tiny-app-group/list-select'; + +export default SelectRoute.extend({ +}); diff --git a/web/app/routes/corp/tiny-app/list.js b/web/app/routes/corp/tiny-app/list.js new file mode 100644 index 0000000..7e3e218 --- /dev/null +++ b/web/app/routes/corp/tiny-app/list.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseListRoute from '../../base-list'; + +export default BaseListRoute.extend({ + extraParams(params, transition) { + return transition.params['corp.tiny-app']; + } +}); diff --git a/web/app/routes/corp/tiny-app/show.js b/web/app/routes/corp/tiny-app/show.js new file mode 100644 index 0000000..eaac598 --- /dev/null +++ b/web/app/routes/corp/tiny-app/show.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/index.js b/web/app/routes/index.js new file mode 100644 index 0000000..012ab7c --- /dev/null +++ b/web/app/routes/index.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + beforeModel() { + // this.transitionTo('app.list', 1); + } +}); diff --git a/web/app/routes/login.js b/web/app/routes/login.js new file mode 100644 index 0000000..6c7d1ed --- /dev/null +++ b/web/app/routes/login.js @@ -0,0 +1,34 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + activate() { + this.controllerFor('application').set('login', true); + }, + deactivate() { + this.controllerFor('application').set('login', false); + }, + actions: { + doLogin(model) { + let me = this; + me.get('ajax').doPost('auth/login', model, + function(user) { + Ember.Logger.debug(`User ${user} Loggedin`); + Ember.$.sessionStorage.set('user', user); + me.set('ajax.user', user); + me.message.alert('登录成功'); + // Log the user in, then reattempt previous transition if it exists. + let prevTransition = me.get('prevTransition'); + if (prevTransition) { + me.set('prevTransition', null); + prevTransition.retry(); + } + else { + // Default back to app list + me.transitionTo('index'); + } + }, function(msg) { + me.get('message').warn('Login Fail [' + msg + ']'); + }); + } + } +}); diff --git a/web/app/routes/op-detail.js b/web/app/routes/op-detail.js new file mode 100644 index 0000000..593fc85 --- /dev/null +++ b/web/app/routes/op-detail.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + model(params) { + return this.get('store').find(params.model, params.id); + } +}); diff --git a/web/app/routes/role/create.js b/web/app/routes/role/create.js new file mode 100644 index 0000000..8fd2a04 --- /dev/null +++ b/web/app/routes/role/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return {type: 'U'}; + } +}); diff --git a/web/app/routes/role/edit.js b/web/app/routes/role/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/role/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/role/list.js b/web/app/routes/role/list.js new file mode 100644 index 0000000..a848ee3 --- /dev/null +++ b/web/app/routes/role/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from './../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/splash/create.js b/web/app/routes/splash/create.js new file mode 100644 index 0000000..bab50c4 --- /dev/null +++ b/web/app/routes/splash/create.js @@ -0,0 +1,10 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return { + duration: 1000 + }; + } +}); diff --git a/web/app/routes/splash/edit.js b/web/app/routes/splash/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/splash/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/splash/list-select.js b/web/app/routes/splash/list-select.js new file mode 100644 index 0000000..f19e707 --- /dev/null +++ b/web/app/routes/splash/list-select.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; +import BaseListSelectRoute from '../base-list-select'; + +export default BaseListSelectRoute.extend({ + templateName: 'splash/list-select', + service: Ember.inject.service('splash.service') +}); diff --git a/web/app/routes/splash/list.js b/web/app/routes/splash/list.js new file mode 100644 index 0000000..a848ee3 --- /dev/null +++ b/web/app/routes/splash/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from './../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/theme/create.js b/web/app/routes/theme/create.js new file mode 100644 index 0000000..498fe18 --- /dev/null +++ b/web/app/routes/theme/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return {}; + } +}); diff --git a/web/app/routes/theme/edit.js b/web/app/routes/theme/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/theme/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/theme/list-select.js b/web/app/routes/theme/list-select.js new file mode 100644 index 0000000..3b9310b --- /dev/null +++ b/web/app/routes/theme/list-select.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; +import BaseListSelectRoute from '../base-list-select'; + +export default BaseListSelectRoute.extend({ + templateName: 'theme/list-select', + service: Ember.inject.service('theme.service') +}); diff --git a/web/app/routes/theme/list.js b/web/app/routes/theme/list.js new file mode 100644 index 0000000..a848ee3 --- /dev/null +++ b/web/app/routes/theme/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from './../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/user/create.js b/web/app/routes/user/create.js new file mode 100644 index 0000000..498fe18 --- /dev/null +++ b/web/app/routes/user/create.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return {}; + } +}); diff --git a/web/app/routes/user/create/role-select.js b/web/app/routes/user/create/role-select.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/user/create/role-select.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/user/edit.js b/web/app/routes/user/edit.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/user/edit.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/routes/user/edit/role-select.js b/web/app/routes/user/edit/role-select.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/web/app/routes/user/edit/role-select.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/web/app/routes/user/list.js b/web/app/routes/user/list.js new file mode 100644 index 0000000..a848ee3 --- /dev/null +++ b/web/app/routes/user/list.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseListRoute from './../base-list'; + +export default BaseListRoute.extend({ +}); diff --git a/web/app/routes/user/profile.js b/web/app/routes/user/profile.js new file mode 100644 index 0000000..cee591e --- /dev/null +++ b/web/app/routes/user/profile.js @@ -0,0 +1,8 @@ +import Ember from 'ember'; +import BaseRoute from '../base'; + +export default BaseRoute.extend({ + model() { + return this.get('store').ajaxGet('user/profile'); + } +}); diff --git a/web/app/routes/user/profile/upload-avatar.js b/web/app/routes/user/profile/upload-avatar.js new file mode 100644 index 0000000..b40562b --- /dev/null +++ b/web/app/routes/user/profile/upload-avatar.js @@ -0,0 +1,43 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + actions: { + didTransition() { + var me = this; + me.set('working', false) + Ember.run.later(function() { + Ember.$('input[type=file]').ace_file_input({ + style: 'well', + btn_choose: 'Click to choose new avatar', + btn_change: null, + no_icon: 'ace-icon fa fa-picture-o', + thumbnail: 'small', + before_remove: function() { + //don't remove/reset files while being uploaded + return !me.get('working') + }, + allowExt: ['jpg', 'jpeg', 'png', 'gif'], + allowMime: ['image/jpg', 'image/jpeg', 'image/png', 'image/gif'] + }); + }, 48); + // Bubble the didTransition event + return true; + }, + submit() { + let me = this; + if (!Ember.$('input[type=file]').val()) { + me.get('message').warn('请选择文件'); + } + else { + me.get('dialog').confirm('确认要更新头像吗?', () => { + me.get('store').ajaxPost('admin/upload-avatar', + new FormData(Ember.$('#form_upload_avatar')[0])).then((admin) => { + me.get('message').alert('头像更新成功'); + Ember.getOwner(me).lookup('route:admin.profile').set('controller.model.avatar', admin.avatar); + me.transitionTo('admin.profile'); + }); + }); + } + } + } +}); diff --git a/web/app/routes/user/show.js b/web/app/routes/user/show.js new file mode 100644 index 0000000..7c73c90 --- /dev/null +++ b/web/app/routes/user/show.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; +import BaseEditRoute from '../base-edit'; + +export default BaseEditRoute.extend({ +}); diff --git a/web/app/services/admin/service.js b/web/app/services/admin/service.js new file mode 100644 index 0000000..afe8edc --- /dev/null +++ b/web/app/services/admin/service.js @@ -0,0 +1,36 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'Admin', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + password: { + presence: true, + length: { + minimum: 4, + maximum: 36 + } + }, + confirmPassword: { + equality: 'password' + } + }, + updateConstraints: { + password: { + length: { + minimum: 4, + maximum: 36 + } + }, + confirmPassword: { + equality: 'password' + } + } +}); diff --git a/web/app/services/ajax.js b/web/app/services/ajax.js new file mode 100644 index 0000000..fe0d7db --- /dev/null +++ b/web/app/services/ajax.js @@ -0,0 +1,167 @@ +import Ember from 'ember'; + +export default Ember.Service.extend({ + /** + * Ajax.doGet('url.get', + * {id: 001, name: 'foo'}, + * function(data) { + * // success + * }, function(msg) { + * // fail + * }); + * no params + * Ajax.doGet('url.get', + * function(data) { + * // success + * }, function(msg){ + * // fail + * }); + * @param {Boolean} [loadmask], option + * @param {String} url + * @param {Object} [params] + * @param {Function} [fnSucc] + * @param {Function} [fnFail] + */ + doGet() { + this._process_request(arguments, 'GET'); + }, + /** + * @see #get + */ + doPost() { + this._process_request(arguments, 'POST'); + }, + /** + * @see #get + */ + doPut() { + this._process_request(arguments, 'PUT'); + }, + /** + * @see #get + */ + doDel() { + this._process_request(arguments, 'DELETE'); + }, + /** + * private + */ + _request(p) { + var me = this; + p.loadmask && me.set('loading', true); + var formDataCfg; + if (p.params instanceof FormData) { + formDataCfg = false; + } + + Ember.$.ajax({ + url: p.url, + data: p.params, + type: (/get/i).test(p.method) ? 'GET' : 'POST', + contentType: formDataCfg, + processData: formDataCfg, + success(r, status, resp) { + if (r.success) { + // ignore success callback + if (p.fnSucc !== false) { + let keys = Object.keys(r); + me._isFunc(p.fnSucc) ? + p.fnSucc(keys.length === 3 && + keys.includes('data') ? r.data : r) : + me.message.alert(r.data || 'Ajax Request Successfully'); + } + } + else if (r.errcode === 4011) { + Ember.getOwner(me).lookup('route:application').transitionTo('login'); + } + // ignore fail callback + else if (p.fnFail !== false) { + me._isFunc(p.fnFail) ? p.fnFail(r.errmsg, r) : + me.dialog.error(r.errmsg || 'Ajax Request Error Caused'); + } + else { + me.dialog.error(r.errmsg || 'Ajax Request Error Caused'); + } + p.loadmask && me.set('loading', false); + }, + error(jqXHR, textStatus) { + Ember.Logger.error('Ajax Request Error Caused', arguments); + if (textStatus === 'timeout') { + me.dialog.error('Ajax Request Timeout Error Caused.'); + } + else if (textStatus === 'abort') { + me.dialog.error('Ajax Request Client Abort Error Caused.'); + } + else { + me.dialog.error('Ajax Request Error Caused.'); + } + p.loadmask && me.set('loading', false); + } + }); + }, + /** + * { + * [lm], [url], [params], [fnSucc], [fnFail] + * } + */ + _process_request(args, method) { + var me = this; + if (args && args.length) { + // args to array + args = Array.prototype.slice.call(args); + var lm = args.shift(), // loadmask + url, + p, + fnSucc, + fnFail; + // loadmask + if (Ember.$.type(lm) === 'boolean') { + url = args.shift(); + } + else { + url = lm; + // default loadmask + lm = true; + } + me._parse_params_and_callbacks(args); + // params + p = args.shift(); + // callbacks + fnSucc = args.shift(); + fnFail = args.shift(); + // Ajax Request + me._request({ + loadmask: lm, + method: method || 'GET', + url: url, + params: p, + fnSucc: fnSucc, + fnFail: fnFail + }); + } + else { + console.error('Ajax No Args Given.'); + } + }, + /** + * params, fnSucc, fnFail + * fnSucc, fnFail + * fnFail + */ + _parse_params_and_callbacks(args) { + // has callbacks + if (this._isFunc(args[1]) && this._isFunc(args[2])) { + this._isFunc(args[0]) && (args[0] = args[0]()); + } + // no params, params is success callback + else if (this._isFunc(args[0])) { + args[2] = args[1]; + args[1] = args[0]; + args[0] = null; + } + }, + _isFunc(f) { + return Ember.$.type(f) === 'function'; + } +}); + diff --git a/web/app/services/api-group/api/service.js b/web/app/services/api-group/api/service.js new file mode 100644 index 0000000..1b49d39 --- /dev/null +++ b/web/app/services/api-group/api/service.js @@ -0,0 +1,27 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'Api', + constraints: { + name: { + presence: true + }, + api: { + presence: true, + url: { + allowLocal: true + } + } + }, + importConstraints: { + apiFile: { + presence: true + } + }, + substituteConstraints: { + target: { + presence: true + } + } +}); diff --git a/web/app/services/api-group/service.js b/web/app/services/api-group/service.js new file mode 100644 index 0000000..7fd7bf6 --- /dev/null +++ b/web/app/services/api-group/service.js @@ -0,0 +1,14 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'ApiGroup', + constraints: { + name: { + presence: true + }, + loginType: { + presence: true + } + } +}); diff --git a/web/app/services/app-alias/service.js b/web/app/services/app-alias/service.js new file mode 100644 index 0000000..253679a --- /dev/null +++ b/web/app/services/app-alias/service.js @@ -0,0 +1,15 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'AppAlias', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + } + } +}); diff --git a/web/app/services/app-config/footer-item/service.js b/web/app/services/app-config/footer-item/service.js new file mode 100644 index 0000000..227f8f0 --- /dev/null +++ b/web/app/services/app-config/footer-item/service.js @@ -0,0 +1,91 @@ +import Ember from 'ember'; +import BaseService from '../../service'; +import ValidUrl from 'npm:valid-url'; + +export default BaseService.extend({ + modelName: 'AppConfigFooterItem', + createConstraints: { + name: { + presence: true, + length: { + maximum: 36 + } + }, + text: { + presence: true, + length: { + maximum: 4 + } + }, + action: { + presence: true, + equality: { + attribute: 'actionType', + message: 'should be a URL or [ph] protocal', + comparator: function(action, actionType) { + let rtn = true; + if (actionType === 'CUSTOM') { + if (/^ph\:\/\/(action|view|data|webview)\/[a-zA-z][0-9a-zA-z]*(\-\w+)*/.test(action)) { + rtn = ValidUrl.isWebUri(action.replace(/^umsapp/, 'http')); + } + else { + rtn = ValidUrl.isWebUri(action); + } + } + return rtn; + } + } + }, + textColorNormal: { + presence: true + }, + textColorActive: { + presence: true + }, + iconNormal: { + presence: true + }, + iconActive: { + presence: true + } + }, + updateConstraints: { + name: { + presence: true, + length: { + maximum: 36 + } + }, + text: { + presence: true, + length: { + maximum: 4 + } + }, + action: { + presence: true, + equality: { + attribute: 'actionType', + message: 'should be a URL or UmsApp protocal', + comparator: function(action, actionType) { + let rtn = true; + if (actionType === 'CUSTOM') { + if (/^ph\:\/\/(action|view|data|webview)\/[a-zA-z][0-9a-zA-z]*(\-\w+)*/.test(action)) { + rtn = ValidUrl.isWebUri(action.replace(/^umsapp/, 'http')); + } + else { + rtn = ValidUrl.isWebUri(action); + } + } + return rtn; + } + } + }, + textColorNormal: { + presence: true + }, + textColorActive: { + presence: true + } + }, +}); diff --git a/web/app/services/app-config/service.js b/web/app/services/app-config/service.js new file mode 100644 index 0000000..b772f39 --- /dev/null +++ b/web/app/services/app-config/service.js @@ -0,0 +1,24 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'AppConfig', + createConstraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + } + }, + updateConstraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + } + } +}); diff --git a/web/app/services/app-version-alias/service.js b/web/app/services/app-version-alias/service.js new file mode 100644 index 0000000..aec66a8 --- /dev/null +++ b/web/app/services/app-version-alias/service.js @@ -0,0 +1,15 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'AppVersionAlias', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + } + } +}); diff --git a/web/app/services/app/appoint/service.js b/web/app/services/app/appoint/service.js new file mode 100644 index 0000000..e5a8556 --- /dev/null +++ b/web/app/services/app/appoint/service.js @@ -0,0 +1,21 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'AppVersionAppoint', + constraints: { + name: { + presence: true, + }, + mobile: { + presence: true, + format: { + pattern: /^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/, + message: 'Invalid mobile' + } + }, + versionId: { + presence: true, + } + } +}); diff --git a/web/app/services/app/release/service.js b/web/app/services/app/release/service.js new file mode 100644 index 0000000..a4baefd --- /dev/null +++ b/web/app/services/app/release/service.js @@ -0,0 +1,35 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'AppRelease', + constraints: { + versionId: { + presence: true, + equality: { + attribute: 'minVersionName', + message: '发布版本不能低于最低版本', + comparator: function(versionId, minVersionName, constraints, attr, model) { + if (minVersionName) { + let av1 = model.versionName.split('.'); + let av2 = minVersionName.split('.'); + + for (let i = 0; i < (Math.max(av1.length, av2.length)); ++i) { + av1[i] = typeof av1[i] === 'undefined' ? 0 : Number(av1[i]); + av2[i] = typeof av2[i] === 'undefined' ? 0 : Number(av2[i]); + + if (av1[i] > av2[i]) { + return true; + } + if (av1[i] < av2[i]) { + return false; + } + } + return true; + } + return true; + } + } + } + }, +}); diff --git a/web/app/services/app/service.js b/web/app/services/app/service.js new file mode 100644 index 0000000..9fc75cf --- /dev/null +++ b/web/app/services/app/service.js @@ -0,0 +1,39 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'App', + createConstraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + icon: { + presence: true + }, + apiGroupId: { + presence: true + }, + appConfigId: { + presence: true + } + }, + updateConstraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + apiGroupId: { + presence: true + }, + appConfigId: { + presence: true + } + } +}); diff --git a/web/app/services/app/version-group/service.js b/web/app/services/app/version-group/service.js new file mode 100644 index 0000000..ac933ac --- /dev/null +++ b/web/app/services/app/version-group/service.js @@ -0,0 +1,20 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'AppVersionGroup', + constraints: { + appId: { + presence: true + }, + name: { + presence: true + }, + androidPhoneVersionId: { + presence: true + }, + iphoneVersionId: { + presence: true + } + } +}); diff --git a/web/app/services/app/version/service.js b/web/app/services/app/version/service.js new file mode 100644 index 0000000..465a66b --- /dev/null +++ b/web/app/services/app/version/service.js @@ -0,0 +1,35 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'AppVersion', + createConstraints: { + appId: { + presence: true + }, + platform: { + presence: true + }, + pkg: { + presence: true + } + }, + updateConstraints: { + metaData: function(value, attributes, attributeName, options, constraints) { + if (value) { + try { + JSON.parse(value); + } + catch (e) { + return { + format: { + pattern: '^{}$', + message: '无效JSONObject格式' + } + }; + } + } + return null; + } + } +}); diff --git a/web/app/services/cloud/ad-slide/service.js b/web/app/services/cloud/ad-slide/service.js new file mode 100644 index 0000000..b7ab00c --- /dev/null +++ b/web/app/services/cloud/ad-slide/service.js @@ -0,0 +1,24 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'AdSlide', + pageSize: 64, + createConstraints: { + url: { + url: { + allowLocal: true + } + }, + image: { + presence: true, + } + }, + updateConstraints: { + url: { + url: { + allowLocal: true + } + } + } +}); diff --git a/web/app/services/cloud/corp/biz-group/service.js b/web/app/services/cloud/corp/biz-group/service.js new file mode 100644 index 0000000..62eff89 --- /dev/null +++ b/web/app/services/cloud/corp/biz-group/service.js @@ -0,0 +1,15 @@ +import Ember from 'ember'; +import BaseService from '../../../service'; + +export default BaseService.extend({ + modelName: 'BizGroup', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + } + } +}); diff --git a/web/app/services/cloud/corp/biz/service.js b/web/app/services/cloud/corp/biz/service.js new file mode 100644 index 0000000..e621c43 --- /dev/null +++ b/web/app/services/cloud/corp/biz/service.js @@ -0,0 +1,39 @@ +import Ember from 'ember'; +import BaseService from '../../../service'; + +export default BaseService.extend({ + modelName: 'Biz', + createConstraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + url: { + presence: true, + url: { + allowLocal: true + } + }, + icon: { + presence: true, + } + }, + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + url: { + presence: true, + url: { + allowLocal: true + } + } + } +}); diff --git a/web/app/services/cloud/corp/service.js b/web/app/services/cloud/corp/service.js new file mode 100644 index 0000000..429f3cc --- /dev/null +++ b/web/app/services/cloud/corp/service.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'Corp', + pageSize: 64 +}); diff --git a/web/app/services/cloud/service.js b/web/app/services/cloud/service.js new file mode 100644 index 0000000..f2cb9bb --- /dev/null +++ b/web/app/services/cloud/service.js @@ -0,0 +1,21 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'Cloud', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + dataApiUrl: { + presence: true, + url: { + allowLocal: true + } + } + } +}); diff --git a/web/app/services/corp/contact/service.js b/web/app/services/corp/contact/service.js new file mode 100644 index 0000000..d986a4b --- /dev/null +++ b/web/app/services/corp/contact/service.js @@ -0,0 +1,14 @@ +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'Contact', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + } + } +}); diff --git a/web/app/services/corp/dept/service.js b/web/app/services/corp/dept/service.js new file mode 100644 index 0000000..a492bdb --- /dev/null +++ b/web/app/services/corp/dept/service.js @@ -0,0 +1,14 @@ +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'Dept', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + } + } +}); diff --git a/web/app/services/corp/employee/service.js b/web/app/services/corp/employee/service.js new file mode 100644 index 0000000..fe937eb --- /dev/null +++ b/web/app/services/corp/employee/service.js @@ -0,0 +1,22 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'Employee', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + mobile: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + } +}); diff --git a/web/app/services/corp/service.js b/web/app/services/corp/service.js new file mode 100644 index 0000000..dbe697b --- /dev/null +++ b/web/app/services/corp/service.js @@ -0,0 +1,22 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'Corp', + constraints: { + name: { + presence: true, + length: { + minimum: 2, + maximum: 36 + } + }, + shortName: { + presence: true, + length: { + minimum: 2, + maximum: 36 + } + } + } +}); diff --git a/web/app/services/corp/tiny-app-group/service.js b/web/app/services/corp/tiny-app-group/service.js new file mode 100644 index 0000000..6a4c0a4 --- /dev/null +++ b/web/app/services/corp/tiny-app-group/service.js @@ -0,0 +1,16 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'TinyAppGroup', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + } + } +}); + diff --git a/web/app/services/corp/tiny-app/service.js b/web/app/services/corp/tiny-app/service.js new file mode 100644 index 0000000..f5b1bfa --- /dev/null +++ b/web/app/services/corp/tiny-app/service.js @@ -0,0 +1,39 @@ +import Ember from 'ember'; +import BaseService from '../../service'; + +export default BaseService.extend({ + modelName: 'TinyApp', + createConstraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + url: { + presence: true, + url: { + allowLocal: true + } + }, + icon: { + presence: true, + } + }, + updateConstraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + url: { + presence: true, + url: { + allowLocal: true + } + } + } +}); diff --git a/web/app/services/dialog.js b/web/app/services/dialog.js new file mode 100644 index 0000000..af17de9 --- /dev/null +++ b/web/app/services/dialog.js @@ -0,0 +1,39 @@ +import Ember from 'ember'; + +export default Ember.Service.extend({ + alert(msg) { + bootbox.alert(msg); + }, + error(msg, fnClose) { + bootbox.dialog({ + message: msg, + buttons: { + danger: { + label: '关闭', + className: 'btn-danger', + callback: fnClose || Ember.$.noop + } + } + }); + }, + confirm(msg, fnYes, fnNo) { + bootbox.dialog({ + message: msg, + buttons: { + success: { + label: '确定', + className: 'btn-success', + callback: fnYes + }, + danger: { + label: '取消', + className: 'btn-danger', + callback: fnNo || Ember.$.noop + } + } + }); + }, + dialog(config) { + bootbox.dialog(config); + } +}); diff --git a/web/app/services/message.js b/web/app/services/message.js new file mode 100644 index 0000000..8331463 --- /dev/null +++ b/web/app/services/message.js @@ -0,0 +1,30 @@ +import Ember from 'ember'; + +export default Ember.Service.extend({ + alert(msg) { + this._show_alert_(msg); + }, + warn(msg) { + this._show_alert_(msg, '#F6F0F0'); + }, + _show_alert_(msg, bg) { + Ember.$([ + '
', + '
', + '

', + msg, + '

', + '
' + ].join('')) + .prependTo(Ember.$('body')) + .animate({'top': '12px' }, 'slow') + .fadeOut(2000, function() { + Ember.$(this).remove(); + }); + } +}); diff --git a/web/app/services/role/service.js b/web/app/services/role/service.js new file mode 100644 index 0000000..a21bea3 --- /dev/null +++ b/web/app/services/role/service.js @@ -0,0 +1,15 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'Role', + constraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + } + } +}); diff --git a/web/app/services/service.js b/web/app/services/service.js new file mode 100644 index 0000000..e5a0751 --- /dev/null +++ b/web/app/services/service.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; +import BaseServiceMixin from '../mixins/services/base-service'; + +export default Ember.Service.extend(BaseServiceMixin, {}); diff --git a/web/app/services/splash/service.js b/web/app/services/splash/service.js new file mode 100644 index 0000000..6ca3737 --- /dev/null +++ b/web/app/services/splash/service.js @@ -0,0 +1,43 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'Splash', + createConstraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + duration: { + presence: true, + numericality: { + strict: true, + onlyInteger: true, + greaterThan: 0 + } + }, + image: { + presence: true, + } + }, + updateConstraints: { + name: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + duration: { + presence: true, + numericality: { + strict: true, + onlyInteger: true, + greaterThan: 0 + } + } + } +}); diff --git a/web/app/services/store.js b/web/app/services/store.js new file mode 100644 index 0000000..9c3bf66 --- /dev/null +++ b/web/app/services/store.js @@ -0,0 +1,65 @@ +import Ember from 'ember'; + +export default Ember.Service.extend({ + list(modelName, start, limit, params) { + var p = { + start: start, + limit: limit + }; + if (Ember.$.type(params) === 'string') { + p.search = params; + } + else { + Ember.$.extend(true, p, params); + } + return this.ajaxGet(this._pathForType(modelName, '/list'), p); + }, + find(modelName, params) { + return this.ajaxGet(this._pathForType(modelName, '/find'), params); + }, + count(modelName) { + return this.ajaxGet(this._pathForType(modelName, '/count')); + }, + create(modelName, model) { + return this.ajaxPost(this._pathForType(modelName, '/create'), model); + }, + update(modelName, model) { + return this.ajaxPost(this._pathForType(modelName, '/update'), model); + }, + del(modelName, model) { + return this.ajaxPost(this._pathForType(modelName, '/delete'), model); + }, + modelAjaxGet: function(modelName, path, params) { + return this.ajaxGet(this._pathForType(modelName, path), params); + }, + modelAjaxPost(modelName, path, params) { + return this.ajaxPost(this._pathForType(modelName, path), params); + }, + ajaxGet(url, params) { + return this._ajax_request('doGet', url, params); + }, + ajaxPost(url, params) { + return this._ajax_request('doPost', url, params); + }, + _ajax_request(method, url, params) { + let me = this; + return new Ember.RSVP.Promise((resolve, reject) => { + let paramsType = Ember.$.type(params); + me.ajax[method ? method : 'doGet'](url, + paramsType === 'string' || + paramsType === 'number' ? + {id: params} : params, + (data) => { + Ember.run(null, resolve, data); + }, (msg, r) => { + reject(msg); + me.dialog.error(msg || 'Ajax request erorr caused'); + }); + }, 'Ambition: Store#ajax request [' + url + ']'); + }, + _pathForType(modelName, path) { + return (/^[a-zA-Z_][a-zA-Z0-9_]+$/.test(modelName) ? + Ember.String.dasherize(modelName) : modelName) + + (/^\//.test(path) ? path : '/' + path); + } +}); diff --git a/web/app/services/theme/service.js b/web/app/services/theme/service.js new file mode 100644 index 0000000..14fb81f --- /dev/null +++ b/web/app/services/theme/service.js @@ -0,0 +1,11 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'Theme', + createConstraints: { + pkg: { + presence: true + } + } +}); diff --git a/web/app/services/tool-service.js b/web/app/services/tool-service.js new file mode 100644 index 0000000..ff29955 --- /dev/null +++ b/web/app/services/tool-service.js @@ -0,0 +1,48 @@ +import Ember from 'ember'; +import BaseService from './service'; +import Ajax from './ajax'; +import Store from './store'; + +export default Ember.Service.extend({ + getServiceByRouteName: function(routeName) { + let me = this; + let container = Ember.getOwner(me); + let service = container.lookup('service:' + routeName); + Ember.Logger.debug(`No Route Service [${routeName}] Found, Try To Find Model Service`); + let indexTrimmedRouteName = null; + if (/\.index$/.test(routeName)) { + Ember.Logger.debug(`Route [${routeName}] Is Index, Try To Trim index Find Model Service`); + indexTrimmedRouteName = routeName.replace(/\.index$/, ''); + service = container.lookup('service:' + indexTrimmedRouteName); + if (!service) { + Ember.Logger.debug(`Route [${indexTrimmedRouteName}] Is Trimed Index, But No Service Found Still.`); + service = container.lookup('service:' + indexTrimmedRouteName + '.service'); + } + } + else { + service = container.lookup('service:' + routeName + '.service'); + } + + if (!service) { + let parentRouteName = (indexTrimmedRouteName || routeName).replace(/\.[^\.]+$/, ''); + Ember.Logger.debug(`No Route Model Service [${routeName}.service] Found, Try To Find Parent Service [${parentRouteName}.service]`); + if (parentRouteName) { + Ember.Logger.debug(`Route [${parentRouteName}] Service Found`); + service = container.lookup('service:' + parentRouteName + '.service'); + } + + if (!service) { + Ember.Logger.info('No Service Found, Create Default'); + let ajax = Ajax.create(); + service = BaseService.create({ + modelName: parentRouteName.match(/\.?([^\.]+)$/)[1], + store: Store.create({ + ajax: ajax + }), + ajax: ajax + }); + } + } + return service; + } +}); diff --git a/web/app/services/user/service.js b/web/app/services/user/service.js new file mode 100644 index 0000000..1f9aa59 --- /dev/null +++ b/web/app/services/user/service.js @@ -0,0 +1,25 @@ +import Ember from 'ember'; +import BaseService from '../service'; + +export default BaseService.extend({ + modelName: 'User', + createConstraints: { + mobile: { + presence: true, + length: { + minimum: 1, + maximum: 36 + } + }, + password: { + presence: true, + length: { + minimum: 4, + maximum: 36 + } + }, + confirmPassword: { + equality: 'password' + } + } +}); diff --git a/web/app/styles/app.css b/web/app/styles/app.css new file mode 100644 index 0000000..b5dc211 --- /dev/null +++ b/web/app/styles/app.css @@ -0,0 +1,31 @@ +.umsapp-logo { + width: 24px; + height: 24px; + background: url(../images/umsapp-logo-24x24.png) no-repeat; + display: inline-block; +} + +.device { + margin: 0 auto; + width: 230px; + height: 480px; + background: url('../images/device-sprite-iPhone-5s.png') no-repeat; + background-size: contain; +} + +.device-content { + padding: 31% 0 0 0; + margin: 0 0 0 8.6%; + width: 83%; + height: 85.6%; + overflow: hidden; +} + +.spinbox-up { + border-top-left-radius: 0 !important; +} + +.desktop { + background: url('../images/desktop.jpg') no-repeat center center; + background-size: contain; +} diff --git a/web/app/templates/admin/create.hbs b/web/app/templates/admin/create.hbs new file mode 100644 index 0000000..ebbd6b4 --- /dev/null +++ b/web/app/templates/admin/create.hbs @@ -0,0 +1,28 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'user.list' 1}} + 用户列表 + {{/link-to}} +
  • +
  • 新建用户
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{form-input name='name' label='姓名'}} + {{form-input type='file' name='avatar' label='头像'}} + + {{#form-input-select label='性别' name='gender' as |xs|}} + {{#xs.option value='M'}}男{{/xs.option}} + {{#xs.option value='F'}}女{{/xs.option}} + {{/form-input-select}} + + {{form-input name='loginId' label='账号'}} + {{form-input name='mobile' label='手机号'}} + {{form-input name='email' label='邮箱'}} + {{form-input type='password' name='password' label='登录密码'}} + {{form-input type='password' name='confirmPassword' label='重复密码'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/admin/edit.hbs b/web/app/templates/admin/edit.hbs new file mode 100644 index 0000000..614f761 --- /dev/null +++ b/web/app/templates/admin/edit.hbs @@ -0,0 +1,30 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'admin.list' 1}} + 用户列表 + {{/link-to}} +
  • +
  • 编辑用户[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='姓名'}} + {{form-input type='file' name='avatar' label='头像' image='avatar'}} + + {{#form-input-select label='性别' name='gender' as |xs|}} + {{#xs.option value='M'}}男{{/xs.option}} + {{#xs.option value='F'}}女{{/xs.option}} + {{/form-input-select}} + + {{form-input name='loginId' label='账号'}} + {{form-input name='mobile' label='手机号'}} + {{form-input name='email' label='邮箱'}} + {{form-input type='password' name='password' label='登录密码'}} + {{form-input type='password' name='confirmPassword' label='重复密码'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/admin/list.hbs b/web/app/templates/admin/list.hbs new file mode 100644 index 0000000..b9b9668 --- /dev/null +++ b/web/app/templates/admin/list.hbs @@ -0,0 +1,82 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • 用户列表
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'admin.create'}} + 新建用户 + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + {{/each}} + +
    + 姓名 + + 账户 + + 头像 + + + 备注 + + + 状态 + + + 管理 +
    + {{it.name}} + + {{it.loginId}} + + {{image-previews previews=it.avatar}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + + +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} diff --git a/web/app/templates/admin/profile.hbs b/web/app/templates/admin/profile.hbs new file mode 100644 index 0000000..7e5a0d0 --- /dev/null +++ b/web/app/templates/admin/profile.hbs @@ -0,0 +1,97 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • 用户信息[{{model.name}}]
  • + {{/breadcrumbs-bar}} + +
    + +
    +{{/main-content}} +{{outlet}} + diff --git a/web/app/templates/admin/profile/upload-avatar.hbs b/web/app/templates/admin/profile/upload-avatar.hbs new file mode 100644 index 0000000..1d8eb25 --- /dev/null +++ b/web/app/templates/admin/profile/upload-avatar.hbs @@ -0,0 +1,8 @@ +{{#modal-dialog title='上传头像'}} +
    +
    +
    + +
    +
    +{{/modal-dialog}} diff --git a/web/app/templates/admin/show.hbs b/web/app/templates/admin/show.hbs new file mode 100644 index 0000000..b1e52f0 --- /dev/null +++ b/web/app/templates/admin/show.hbs @@ -0,0 +1,42 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • 用户详情
  • + {{/breadcrumbs-bar}} + +
    +
    + +
    + {{image-previews previews=model.avatar}} +
    +
    +
    + +
    {{model.name}}
    +
    +
    + +
    {{if (eq 'M' model.gender) '男' '女'}}
    +
    +
    + +
    {{model.mobile}}
    +
    +
    + +
    + + + {{model.email}} + +
    +
    + + +
    +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/api-group/api/create.hbs b/web/app/templates/api-group/api/create.hbs new file mode 100644 index 0000000..767edce --- /dev/null +++ b/web/app/templates/api-group/api/create.hbs @@ -0,0 +1,24 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'api-group.list' 1}} + API组列表 + {{/link-to}} +
  • +
  • + {{#link-to 'api-group.api.list' 1}} + API列表 + {{/link-to}} +
  • +
  • 创建API
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='apiGroupId' value=model.apiGroupId}} + {{form-input name='name' label='名称'}} + {{form-input name='api' label='API'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/api-group/api/edit.hbs b/web/app/templates/api-group/api/edit.hbs new file mode 100644 index 0000000..fba0ac5 --- /dev/null +++ b/web/app/templates/api-group/api/edit.hbs @@ -0,0 +1,25 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'api-group.list' 1}} + API组列表 + {{/link-to}} +
  • +
  • + {{#link-to 'api-group.api.list' 1}} + API列表 + {{/link-to}} +
  • +
  • 编辑API[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + + {{form-input name='name' label='名称' readonly="readonly"}} + {{form-input name='api' label='API'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/api-group/api/import.hbs b/web/app/templates/api-group/api/import.hbs new file mode 100644 index 0000000..2dfa1ab --- /dev/null +++ b/web/app/templates/api-group/api/import.hbs @@ -0,0 +1,24 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'api-group.list' 1}} + API组列表 + {{/link-to}} +
  • +
  • + {{#link-to 'api-group.api.list' 1}} + API列表 + {{/link-to}} +
  • +
  • 导入API
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='apiGroupId' value=model.apiGroupId}} + {{form-input type='file' name='apiFile' label='API JSON 文件'}} + {{form-input-checkbox name='override' booleanValue=true label='强制覆盖'}} + {{form-input name='note' label='备注'}} + + {{! use service#importConstraints to validate}} + {{form-footer-buttons type='import' postUrl='api/import' successMsg='导入成功'}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/api-group/api/list.hbs b/web/app/templates/api-group/api/list.hbs new file mode 100644 index 0000000..dc426d2 --- /dev/null +++ b/web/app/templates/api-group/api/list.hbs @@ -0,0 +1,86 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'api-group.list' 1}} + API组列表 + {{/link-to}} +
  • +
  • [{{model.apiGroup.name}}]API列表
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'api-group.api.create'}} + 新建API + {{/link-to}} +
  • +
  • + {{#link-to 'api-group.api.import'}} + 导入API + {{/link-to}} +
  • +
  • + {{#link-to 'api-group.api.substitute'}} + 查找/替换 + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + {{/each}} + +
    名称备注API状态 + + 管理 +
    + {{it.name}} + + {{editable-cell model=it field='note'}} + + {{it.api}} + + {{status-cell model=it}} + +
    + {{status-toggle-button model=it}} + {{#link-to 'api-group.api.edit' it.apiGroupId it.id class="btn btn-xs btn-info" title="编辑"}} + + {{/link-to}} + {{#if (eq false it.enabled)}} + + {{/if}} + {{op-detail it.id}} +
    +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} diff --git a/web/app/templates/api-group/api/substitute.hbs b/web/app/templates/api-group/api/substitute.hbs new file mode 100644 index 0000000..dc75c1e --- /dev/null +++ b/web/app/templates/api-group/api/substitute.hbs @@ -0,0 +1,24 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'api-group.list' 1}} + API组列表 + {{/link-to}} +
  • +
  • + {{#link-to 'api-group.api.list' 1}} + API列表 + {{/link-to}} +
  • +
  • 替换API
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='apiGroupId' value=model.apiGroupId}} + {{form-input name='target' label='查找'}} + {{form-input-checkbox name='regexp' label='正则表达式' booleanValue=true}} + {{form-input name='replacement' label='替换为'}} + + {{! use service#substituteConstraints to validate}} + {{form-footer-buttons type='substitute' postUrl='api/substitute' successMsg='替换成功'}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/api-group/create.hbs b/web/app/templates/api-group/create.hbs new file mode 100644 index 0000000..ed1138a --- /dev/null +++ b/web/app/templates/api-group/create.hbs @@ -0,0 +1,24 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'api-group.list' 1}} + API组列表 + {{/link-to}} +
  • +
  • 创建API组
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{form-input name='name' label='名称'}} + + {{#form-input-select label='登录方式' name='loginType' as |xs|}} + {{#xs.option value='PASSWORD'}}密码{{/xs.option}} + {{#xs.option value='SMS_CODE'}}验证码{{/xs.option}} + {{#xs.option value='NONE'}}无{{/xs.option}} + {{/form-input-select}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/api-group/edit.hbs b/web/app/templates/api-group/edit.hbs new file mode 100644 index 0000000..5263734 --- /dev/null +++ b/web/app/templates/api-group/edit.hbs @@ -0,0 +1,25 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'api-group.list' 1}} + API组列表 + {{/link-to}} +
  • +
  • 编辑API组[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type="hidden" name="id" value=model.id}} + {{form-input name='name' label='名称'}} + + {{#form-input-select label='登录方式' name='loginType' as |xs|}} + {{#xs.option value='PASSWORD'}}密码{{/xs.option}} + {{#xs.option value='SMS_CODE'}}验证码{{/xs.option}} + {{#xs.option value='NONE'}}无{{/xs.option}} + {{/form-input-select}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/api-group/list-select.hbs b/web/app/templates/api-group/list-select.hbs new file mode 100644 index 0000000..25314c7 --- /dev/null +++ b/web/app/templates/api-group/list-select.hbs @@ -0,0 +1,48 @@ +{{#modal-list-select title='API组列表'}} + + + + + + 名称 + + + + 备注 + + + + 状态 + + + + 创建时间 + + + + 更新时间 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it}} + + + {{it.name}} + + + {{it.note}} + + + {{status-cell model=it}} + + {{date-cell model=it.dateCreated}} + {{date-cell model=it.dateUpdated}} + + {{/each}} + +{{/modal-list-select}} diff --git a/web/app/templates/api-group/list.hbs b/web/app/templates/api-group/list.hbs new file mode 100644 index 0000000..bb0faf0 --- /dev/null +++ b/web/app/templates/api-group/list.hbs @@ -0,0 +1,81 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • API组列表
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'api-group.create'}} + 新建API组 + {{/link-to}} +
  • + {{/grid-header}} + +
    +
    + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + {{/each}} + +
    + 名称 + + + 备注 + + + 状态 + + + 管理 +
    + {{editable-cell model=it field='name' allowBlank=false}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + +
    + {{status-toggle-button model=it}} + {{#link-to 'api-group.edit' it.id class="btn btn-xs btn-info" rel="tooltip" title="编辑"}} + + {{/link-to}} + + {{#if (and (eq false it.enabled) (eq 0 it.countApis))}} + + {{/if}} + {{#link-to 'api-group.api.list' it.id 1 class="btn btn-xs" rel="tooltip" title="管理"}} + + {{/link-to}} + {{op-detail it.id}} +
    +
    +
    + {{pagination-bar}} +
    +
    + +
    +{{/main-content}} diff --git a/web/app/templates/app-alias/list.hbs b/web/app/templates/app-alias/list.hbs new file mode 100644 index 0000000..ad4499f --- /dev/null +++ b/web/app/templates/app-alias/list.hbs @@ -0,0 +1,66 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • App别名列表
  • + {{/breadcrumbs-bar}} + +
    +
    + {{grid-header}} +
    + +
    + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + {{/each}} + +
    + App ID + + 别名 + + + 备注 + + + 状态 + + + 管理 +
    + {{it.appId}} + + {{it.alias}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + + +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/app-config/create.hbs b/web/app/templates/app-config/create.hbs new file mode 100644 index 0000000..7483d1d --- /dev/null +++ b/web/app/templates/app-config/create.hbs @@ -0,0 +1,29 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'app-config.list' 1}} + App配置列表 + {{/link-to}} +
  • +
  • 新建App配置
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{form-input name='name' label='名称'}} + + {{!form-input-color name='themeColor' label='主题色'}} + {{input type='hidden' name='themeColor' value=model.themeColor}} + + {{form-input-color name='headerBgColor' label='顶部导航背景色'}} + {{form-input-color name='headerTextColor' label='顶部导航文本色'}} + {{form-input type='file' name='headerBgImg' label='顶部导航背景图'}} + + {{form-input-color name='footerTopBorderColor' label='底部菜单上边框颜色'}} + {{form-input-color name='footerBgColor' label='底部菜单背景色'}} + {{form-input type='file' name='footerBgImg' label='底部菜单背景图'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/app-config/edit.hbs b/web/app/templates/app-config/edit.hbs new file mode 100644 index 0000000..201b3e4 --- /dev/null +++ b/web/app/templates/app-config/edit.hbs @@ -0,0 +1,36 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'app-config.list' 1}} + App配置列表 + {{/link-to}} +
  • +
  • 编辑App配置[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + + {{!form-input-color name='themeColor' label='主题色'}} + {{input type='hidden' name='themeColor' value=model.themeColor}} + + {{form-input-color name='headerBgColor' label='顶部导航背景色'}} + {{form-input-color name='headerTextColor' label='顶部导航文本色'}} + {{form-input type='file' name='headerBgImg' label='顶部导航背景图' image='headerBgImgUrl'}} + {{#if model.headerBgImgUrl}} + {{form-input-checkbox name='deleteHeaderBgImg' label='删除顶部导航背景图' booleanValue=true}} + {{/if}} + + {{form-input-color name='footerTopBorderColor' label='底部菜单上边框颜色'}} + {{form-input-color name='footerBgColor' label='底部菜单背景色'}} + {{form-input type='file' name='footerBgImg' label='底部菜单背景图' image='footerBgImgUrl'}} + {{#if model.footerBgImgUrl}} + {{form-input-checkbox name='deleteFooterBgImg' label='删除底部菜单背景图' booleanValue=true}} + {{/if}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/app-config/footer-item/create.hbs b/web/app/templates/app-config/footer-item/create.hbs new file mode 100644 index 0000000..638bb3b --- /dev/null +++ b/web/app/templates/app-config/footer-item/create.hbs @@ -0,0 +1,19 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'app-config.list' 1}} + App配置列表 + {{/link-to}} +
  • +
  • + {{#link-to 'app-config.footer-item.list' 1}} + App配置底部项列表 + {{/link-to}} +
  • +
  • 创建App配置底部项
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{partial 'app-config/footer-item/form'}} + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/app-config/footer-item/edit.hbs b/web/app/templates/app-config/footer-item/edit.hbs new file mode 100644 index 0000000..92fe098 --- /dev/null +++ b/web/app/templates/app-config/footer-item/edit.hbs @@ -0,0 +1,20 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'app-config.list' 1}} + App配置列表 + {{/link-to}} +
  • +
  • + {{#link-to 'app-config.footer-item.list' 1}} + App配置底部项列表 + {{/link-to}} +
  • +
  • 编辑App配置底部项[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{partial 'app-config/footer-item/form'}} + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/app-config/footer-item/form.hbs b/web/app/templates/app-config/footer-item/form.hbs new file mode 100644 index 0000000..1d1dcdc --- /dev/null +++ b/web/app/templates/app-config/footer-item/form.hbs @@ -0,0 +1,53 @@ +{{input type='hidden' name='appConfigId' value=model.appConfigId}} +{{form-input name='name' label='名称'}} +{{form-input name='text' label='文本'}} +{{#form-input name='action' label='点击动作' inputClass='col-xs-4 no-padding-right'}} +
    +
    + {{#x-select class='form-control' value=model.actionType as |xs|}} + {{#xs.option value='MESSAGE'}}消息{{/xs.option}} + {{#xs.option value='WORKBENCH'}}工作台{{/xs.option}} + {{#xs.option value='CONTACTS'}}通讯录{{/xs.option}} + {{#xs.option value='ALERT'}}提醒{{/xs.option}} + {{#xs.option value='ME'}}我{{/xs.option}} + {{#xs.option value='CUSTOM'}}自定义{{/xs.option}} + {{/x-select}} +
    + {{#if (eq 'CUSTOM' model.actionType)}} +
    + {{input class='form-control' + type='text' + value=model.actionInput + placeholder='https://admin.pudonghot.com' + }} +
    + {{/if}} + {{input name='action' type='hidden' value=model.action}} +
    +{{/form-input}} +{{form-input-color name='textColorNormal' label='常规文本颜色'}} +{{form-input-color name='textColorActive' label='活动文本颜色'}} +{{form-input type='file' name='iconNormal' label='常规图标' image='iconNormalUrl'}} +{{#if model.iconNormalSvg}} + {{form-input-checkbox name='applyColorToIconNormalSvg' booleanValue=true label='应用常规颜色到图标'}} +{{/if}} +{{form-input type='file' name='iconActive' label='活动图标' image='iconActiveUrl'}} +{{#if model.iconActiveSvg}} + {{form-input-checkbox name='applyColorToIconActiveSvg' booleanValue=true label='应用活动颜色到图标'}} +{{/if}} +{{form-input-spinner name='sort' label='排序'}} +{{form-input-checkbox name='noHeader' label='隐藏顶部导航'}} +{{form-input-checkbox name='noFooter' label='隐藏底部菜单'}} + +{{#if (or model.activeItem (eq 'true' firstItem))}} + {{input type='hidden' name='active' value=model.active}} + {{input type='hidden' name='status' value=model.status}} +{{else}} + {{form-input-checkbox name='active' label='默认选中'}} + {{#if model.active}} + {{input type='hidden' name='status' value=model.status}} + {{else}} + {{form-input-checkbox}} + {{/if}} +{{/if}} +{{form-input name='note' label='备注'}} diff --git a/web/app/templates/app-config/footer-item/list.hbs b/web/app/templates/app-config/footer-item/list.hbs new file mode 100644 index 0000000..daaa11f --- /dev/null +++ b/web/app/templates/app-config/footer-item/list.hbs @@ -0,0 +1,117 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'app-config.list' 1}} + App配置列表 + {{/link-to}} +
  • +
  • App配置[{{model.appConfig.name}}]底部项列表
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'app-config.footer-item.create' (query-params firstItem=(eq 0 model.data.length))}} + 新建App配置底部项 + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    + + + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + + + {{/each}} + +
    + 名称 + + + 备注 + + 文本 + + 常规图标 + + 活动图标 + + + 默认选中 + + + 状态 + + + 管理 +
    + {{editable-cell model=it field='name' allowBlank=false}} + + {{editable-cell model=it field='note'}} + + {{editable-cell model=it field='text'}} + + + + + + {{status-cell name='active' model=it enabledText='是' disabledText='否'}} + + {{status-cell model=it}} + + +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/app-config/list-select.hbs b/web/app/templates/app-config/list-select.hbs new file mode 100644 index 0000000..0267292 --- /dev/null +++ b/web/app/templates/app-config/list-select.hbs @@ -0,0 +1,52 @@ +{{#modal-list-select title='App配置列表'}} + + + + + + 名称 + + + + 备注 + + + + 预览 + + + + 状态 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it selectedModel=selectedModel selectedId=selectedId}} + + + {{it.name}} + + + {{it.note}} + + +
    + +
    + + + {{status-cell model=it}} + + + {{/each}} + +{{/modal-list-select}} \ No newline at end of file diff --git a/web/app/templates/app-config/list.hbs b/web/app/templates/app-config/list.hbs new file mode 100644 index 0000000..8e0dc7c --- /dev/null +++ b/web/app/templates/app-config/list.hbs @@ -0,0 +1,91 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • App配置列表
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'app-config.create'}} + 新建App配置 + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + {{/each}} + +
    + 名称 + + + 备注 + + + 预览 + + + 状态 + + + 管理 +
    + {{editable-cell model=it field='name' allowBlank=false}} + + {{editable-cell model=it field='note'}} + +
    + +
    +
    + {{status-cell model=it}} + + +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/app-config/manage.hbs b/web/app/templates/app-config/manage.hbs new file mode 100644 index 0000000..61e838a --- /dev/null +++ b/web/app/templates/app-config/manage.hbs @@ -0,0 +1,29 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'app-config.list' 1}} + App配置列表 + {{/link-to}} +
  • +
  • 管理App配置[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input model=model errors=errors name='name' label='名称' placeholder='名称'}} + + {{form-input-color model=model errors=errors name='themeColor' label='主题色' placeholder='主题色'}} + + {{form-input-color model=model errors=errors name='headerBgColor' label='顶部导航背景色' placeholder='顶部导航背景色'}} + {{form-input-color model=model errors=errors name='headerTextColor' label='顶部导航字体色' placeholder='顶部导航字体色'}} + {{form-input type='file' model=model errors=errors name='headerBgImg' label='顶部导航背景图'}} + + {{form-input-color model=model errors=errors name='footerTopBorderColor' label='底部菜单上边框颜色' placeholder='底部菜单上边框颜色'}} + {{form-input-color model=model errors=errors name='footerBgColor' label='底部菜单背景色' placeholder='底部菜单背景色'}} + {{form-input type='file' model=model errors=errors name='footerBgImg' label='底部菜单背景图'}} + + {{form-input-checkbox model=model}} + {{form-input model=model errors=errors name='note' label='备注' placeholder='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/app-version-alias/list.hbs b/web/app/templates/app-version-alias/list.hbs new file mode 100644 index 0000000..89800a5 --- /dev/null +++ b/web/app/templates/app-version-alias/list.hbs @@ -0,0 +1,84 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • App版本别名列表
  • + {{/breadcrumbs-bar}} + +
    +
    + {{grid-header}} +
    + +
    + + + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + + + {{/each}} + +
    + App ID + + App 名称 + + 平台 + + 版本 + + 别名 + + + 备注 + + + 状态 + + + 管理 +
    + {{it.appId}} + + {{it.appName}} + + {{it.platform}} + + {{it.versionName}} + + {{it.alias}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + + +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/app/appoint.hbs b/web/app/templates/app/appoint.hbs new file mode 100644 index 0000000..9acd596 --- /dev/null +++ b/web/app/templates/app/appoint.hbs @@ -0,0 +1,8 @@ +{{#app/app-manage + category='appoint' + pageTitle=(concat 'App[' model.appId ']指定发布管理') + tabLinkRouteName='app.appoint.list' + appId=model.appId + platform=model.platform}} + {{outlet}} +{{/app/app-manage}} \ No newline at end of file diff --git a/web/app/templates/app/appoint/create.hbs b/web/app/templates/app/appoint/create.hbs new file mode 100644 index 0000000..54b5cc8 --- /dev/null +++ b/web/app/templates/app/appoint/create.hbs @@ -0,0 +1,20 @@ +{{#form-content}} + + {{input type='hidden' name='appId' value=model.appId}} + {{input type='hidden' name='platform' value=model.platform}} + {{form-input name='name' label='名称'}} + {{form-input name='mobile' label='手机号'}} + + {{form-input-modal-select + listRoute='app.appoint.create.version-select' + idField='versionId' + nameField='versionName' + params=model + label='App版本'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons}} +{{/form-content}} +{{outlet}} \ No newline at end of file diff --git a/web/app/templates/app/appoint/edit.hbs b/web/app/templates/app/appoint/edit.hbs new file mode 100644 index 0000000..3835ba9 --- /dev/null +++ b/web/app/templates/app/appoint/edit.hbs @@ -0,0 +1,21 @@ +{{#form-content}} + + {{input type='hidden' name='appId' value=model.appId}} + {{input type='hidden' name='platform' value=model.platform}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + {{form-input name='mobile' label='手机号' readonly='readonly'}} + + {{form-input-modal-select + listRoute='app.appoint.edit.version-select' + idField='versionId' + nameField='versionName' + params=model + label='App版本'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} +{{/form-content}} +{{outlet}} \ No newline at end of file diff --git a/web/app/templates/app/appoint/list.hbs b/web/app/templates/app/appoint/list.hbs new file mode 100644 index 0000000..2b569df --- /dev/null +++ b/web/app/templates/app/appoint/list.hbs @@ -0,0 +1,68 @@ +
    + {{#grid-header}} +
  • + {{#link-to 'app.appoint.create'}} + 创建指定发布 + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + {{/each}} + +
    名称手机号App版本 + + 备注 + + + 状态 + + + 管理 +
    + {{editable-cell model=it field='name' notBlank=true}} + + {{it.mobile}} + + {{it.versionName}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + +
    + {{status-toggle-button model=it}} + {{#link-to 'app.appoint.edit' it.id class='btn btn-xs btn-info' title='编辑'}} + + {{/link-to}} + {{op-detail it.id}} +
    +
    +
    + {{pagination-bar}} +
    +
    \ No newline at end of file diff --git a/web/app/templates/app/create.hbs b/web/app/templates/app/create.hbs new file mode 100644 index 0000000..8320272 --- /dev/null +++ b/web/app/templates/app/create.hbs @@ -0,0 +1,49 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'app.list' 1}} + App列表 + {{/link-to}} +
  • +
  • 新建App
  • + {{/breadcrumbs-bar}} + {{#form-content}} + + {{form-input name='name' label='名称'}} + {{form-input type='file' name='icon' label='图标(512x512)'}} + + {{form-input-modal-select + listRoute='app.create.api-group-select' + idField='apiGroupId' + nameField='apiGroupName' + btnIcon='fa-plug' + label='API组'}} + + {{form-input-modal-select + listRoute='app.create.splash-select' + idField='splashId' + nameField='splashName' + btnIcon='fa-file-image-o' + label='启动图'}} + + {{form-input-modal-select + listRoute='app.create.app-config-select' + idField='appConfigId' + nameField='appConfigName' + btnIcon='fa-bars' + label='App配置'}} + + {{form-input-modal-select + listRoute='app.create.theme-select' + idField='themeId' + nameField='themeName' + btnIcon='fa-suitcase' + label='主题包'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons}} + {{/form-content}} + {{outlet}} +{{/main-content}} diff --git a/web/app/templates/app/edit.hbs b/web/app/templates/app/edit.hbs new file mode 100644 index 0000000..a0605eb --- /dev/null +++ b/web/app/templates/app/edit.hbs @@ -0,0 +1,51 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'app.list' 1}} + App列表 + {{/link-to}} +
  • +
  • 编辑App[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + + {{form-input name='id' label='App ID' readonly='readonly'}} + + {{form-input name='name' label='名称'}} + {{form-input type='file' name='icon' label='图标(512x512)' image='iconUrl'}} + + {{form-input-modal-select + listRoute='app.edit.api-group-select' + idField='apiGroupId' + nameField='apiGroupName' + btnIcon='fa-plug' + label='API组'}} + + {{form-input-modal-select + listRoute='app.edit.splash-select' + idField='splashId' + nameField='splashName' + btnIcon='fa-file-image-o' + label='启动图'}} + + {{form-input-modal-select + listRoute='app.edit.app-config-select' + idField='appConfigId' + nameField='appConfigName' + btnIcon='fa-bars' + label='App配置'}} + + {{form-input-modal-select + listRoute='app.edit.theme-select' + idField='themeId' + nameField='themeName' + btnIcon='fa-suitcase' + label='主题包'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} + {{outlet}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/app/list-select-for-subitem-select.hbs b/web/app/templates/app/list-select-for-subitem-select.hbs new file mode 100644 index 0000000..dde3113 --- /dev/null +++ b/web/app/templates/app/list-select-for-subitem-select.hbs @@ -0,0 +1,77 @@ +{{#modal-frame title='App列表'}} + + +{{/modal-frame}} diff --git a/web/app/templates/app/list-select-for-version-select.hbs b/web/app/templates/app/list-select-for-version-select.hbs new file mode 100644 index 0000000..0ce13cd --- /dev/null +++ b/web/app/templates/app/list-select-for-version-select.hbs @@ -0,0 +1,77 @@ +{{#modal-frame title='App列表'}} + + +{{/modal-frame}} diff --git a/web/app/templates/app/list-select.hbs b/web/app/templates/app/list-select.hbs new file mode 100644 index 0000000..6d50a38 --- /dev/null +++ b/web/app/templates/app/list-select.hbs @@ -0,0 +1,44 @@ +{{#modal-list-select title='App列表'}} + + + + + + ID + + + 名称 + + + + 备注 + + + + 状态 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it selectedModel=selectedModel selectedId=selectedId}} + + + {{it.id}} + + + {{it.name}} + + + {{it.note}} + + + {{status-cell model=it}} + + + {{/each}} + +{{/modal-list-select}} \ No newline at end of file diff --git a/web/app/templates/app/list.hbs b/web/app/templates/app/list.hbs new file mode 100644 index 0000000..378bba5 --- /dev/null +++ b/web/app/templates/app/list.hbs @@ -0,0 +1,90 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • App列表
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'app.create'}} + 新建App + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    + + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + + {{/each}} + +
    + App ID + + 名称 + 图标 + + 备注 + + + 下载量 + + + 状态 + + + 管理 +
    + {{it.id}} + + {{editable-cell model=it field='name' allowBlank=false}} + + {{image-previews previews=it.iconUrl}} + + {{editable-cell model=it field='note'}} + + {{it.countDownload}} + + {{status-cell model=it}} + + {{#qr-code text=it.installUrl iconUrl=it.iconUrl}} + {{status-toggle-button model=it}} + {{#link-to 'app.edit' it.id class='btn btn-xs btn-info' title='编辑'}} + + {{/link-to}} + {{#link-to 'app.version.list' it.id 'AndroidPhone' 1 class='btn btn-xs' title="管理"}} + + {{/link-to}} + {{op-detail it.id}} + {{/qr-code}} +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} diff --git a/web/app/templates/app/release.hbs b/web/app/templates/app/release.hbs new file mode 100644 index 0000000..6c54faa --- /dev/null +++ b/web/app/templates/app/release.hbs @@ -0,0 +1,9 @@ +{{#app/app-manage + category='release' + pageTitle=(concat 'App[' model.appId ']发布管理') + tabLinkRouteName='app.release.show' + page=false + appId=model.appId + platform=model.platform}} + {{outlet}} +{{/app/app-manage}} diff --git a/web/app/templates/app/release/edit.hbs b/web/app/templates/app/release/edit.hbs new file mode 100644 index 0000000..96ad62d --- /dev/null +++ b/web/app/templates/app/release/edit.hbs @@ -0,0 +1,28 @@ +{{#form-content}} + + {{input type='hidden' name='appId' value=model.appId}} + {{input type='hidden' name='platform' value=model.platform}} + {{input type='hidden' name='id' value=model.id}} + + {{form-input-modal-select + listRoute='app.release.edit.version-select' + idField='versionId' + nameField='versionName' + params=model + label='发布版本'}} + + {{form-input-modal-select + listRoute='app.release.edit.version-select' + idField='minVersionId' + nameField='minVersionName' + params=model + label='最低版本'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update' + backRouteName='app.release.show' + backRouteParams=(hash appId=model.appId platform=model.platform)}} +{{/form-content}} +{{outlet}} \ No newline at end of file diff --git a/web/app/templates/app/release/show.hbs b/web/app/templates/app/release/show.hbs new file mode 100644 index 0000000..8b36067 --- /dev/null +++ b/web/app/templates/app/release/show.hbs @@ -0,0 +1,51 @@ +
    +
    + +
    {{model.versionName}}
    +
    + +
    + +
    {{model.minVersionName}}
    +
    + +
    + + + {{#if model.enabled}} +
    + 在线 +
    + {{else}} +
    + 下架 +
    + {{/if}} +
    + +
    + +
    {{model.note}}
    +
    + +
    + +
    {{moment-format model.dateCreated 'YYYY-MM-DD H:mm:ss'}}
    +
    + +
    + + {{#if model.dateUpdated}} +
    {{moment-format model.dateUpdated 'YYYY-MM-DD H:mm:ss'}}
    + {{/if}} +
    + +
    +
    + {{#link-to 'app.release.edit' model.id class="btn btn-sm btn-success"}} + 编辑 + + {{/link-to}} +
    +
    +
    diff --git a/web/app/templates/app/version-group/create.hbs b/web/app/templates/app/version-group/create.hbs new file mode 100644 index 0000000..3b82395 --- /dev/null +++ b/web/app/templates/app/version-group/create.hbs @@ -0,0 +1,54 @@ +{{#breadcrumbs-bar}} +
  • + {{#link-to 'app.version-group.list' 1}} + 版本组列表 + {{/link-to}} +
  • +
  • 新建版本组
  • +{{/breadcrumbs-bar}} +{{app/manage-sidebar appId=model.appId category='versionGroup'}} + +{{#main-content}} + {{#form-content}} + {{input type='hidden' name='appId' value=model.appId}} + {{form-input name='name' label='名称'}} + + {{form-input-modal-select + listRoute='app.version-group.create.version-select' + idField='androidPhoneVersionId' + nameField='androidPhoneVersionName' + params=(hash platform='AndroidPhone') + btnIcon='fa-code-fork' + label='Android Phone 版本'}} + + {{form-input-modal-select + listRoute='app.version-group.create.version-select' + idField='iphoneVersionId' + nameField='iphoneVersionName' + params=(hash platform='iPhone') + btnIcon='fa-code-fork' + label='iPhone 版本'}} + + {{form-input-modal-select + listRoute='app.version-group.create.version-select' + idField='androidPadVersionId' + nameField='androidPadVersionName' + params=(hash platform='AndroidPad') + btnIcon='fa-code-fork' + label='Android Pad 版本'}} + + {{form-input-modal-select + listRoute='app.version-group.create.version-select' + idField='ipadVersionId' + nameField='ipadVersionName' + params=(hash platform='iPad') + btnIcon='fa-code-fork' + label='iPad 版本'}} + + {{form-input type='file' name='icon' label='图标'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} +{{outlet}} diff --git a/web/app/templates/app/version-group/edit.hbs b/web/app/templates/app/version-group/edit.hbs new file mode 100644 index 0000000..9f80d24 --- /dev/null +++ b/web/app/templates/app/version-group/edit.hbs @@ -0,0 +1,60 @@ +{{#breadcrumbs-bar}} +
  • + {{#link-to 'app.list' 1}} + App列表 + {{/link-to}} +
  • +
  • + {{#link-to 'app.version-group.list' 1}} + 版本组列表 + {{/link-to}} +
  • +
  • 新建版本组
  • +{{/breadcrumbs-bar}} +{{app/manage-sidebar appId=model.appId category='versionGroup'}} + +{{#main-content}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + + {{form-input-modal-select + listRoute='app.version-group.edit.version-select' + idField='androidPhoneVersionId' + nameField='androidPhoneVersionName' + params=(hash platform='AndroidPhone') + btnIcon='fa-code-fork' + label='Android Phone 版本'}} + + {{form-input-modal-select + listRoute='app.version-group.edit.version-select' + idField='iphoneVersionId' + nameField='iphoneVersionName' + params=(hash platform='iPhone') + btnIcon='fa-code-fork' + label='iPhone 版本'}} + + {{form-input-modal-select + listRoute='app.version-group.edit.version-select' + idField='androidPadVersionId' + nameField='androidPadVersionName' + params=(hash platform='AndroidPad') + btnIcon='fa-code-fork' + label='Android Pad 版本'}} + + {{form-input-modal-select + listRoute='app.version-group.edit.version-select' + idField='ipadVersionId' + nameField='ipadVersionName' + params=(hash platform='iPad') + btnIcon='fa-code-fork' + label='iPad 版本'}} + + {{form-input type='file' name='icon' label='图标' image='icon'}} + {{form-input-checkbox name='deleteIcon' booleanValue=true label='删除图标'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} +{{outlet}} diff --git a/web/app/templates/app/version-group/list-select.hbs b/web/app/templates/app/version-group/list-select.hbs new file mode 100644 index 0000000..8318506 --- /dev/null +++ b/web/app/templates/app/version-group/list-select.hbs @@ -0,0 +1,47 @@ +{{#modal-list-select title=(concat 'App[' appId ']版本组列表')}} + + + + + + 名称 + + + Android Phone 版本 + + + iPhone 版本 + + 图标 + + + 状态 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it selectedModel=selectedModel selectedId=selectedId}} + + + {{it.name}} + + + {{it.androidPhoneVersionName}} + + + {{it.iphoneVersionName}} + + + {{image-previews previews=it.icon}} + + + {{status-cell model=it}} + + + {{/each}} + +{{/modal-list-select}} diff --git a/web/app/templates/app/version-group/list.hbs b/web/app/templates/app/version-group/list.hbs new file mode 100644 index 0000000..b7b54f5 --- /dev/null +++ b/web/app/templates/app/version-group/list.hbs @@ -0,0 +1,91 @@ +{{#breadcrumbs-bar}} +
  • + {{#link-to 'app.list' 1}} + App列表 + {{/link-to}} +
  • +
  • 版本组列表
  • +{{/breadcrumbs-bar}} +{{app/manage-sidebar category='versionGroup'}} + +{{#main-content}} +
    +
    + {{#grid-header}} +
  • + {{#link-to 'app.version-group.create'}} + 创建版本组 + {{/link-to}} +
  • + {{/grid-header}} + +
    +
    + + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + + {{/each}} + +
    + 名称 + + + 备注 + + Android Phone 版本 + + iPhone 版本 + 图标 + + 状态 + + + 管理 +
    + {{editable-cell model=it field='name'}} + + {{editable-cell model=it field='note'}} + + {{it.androidPhoneVersionName}} + + {{it.iphoneVersionName}} + + {{image-previews previews=it.icon}} + + {{status-cell model=it}} + + {{#qr-code text=it.installUrl iconUrl=it.icon}} + {{status-toggle-button model=it}} + {{#link-to 'app.version-group.edit' it.id class='btn btn-xs btn-info' title='编辑'}} + + {{/link-to}} + {{op-detail it.id}} + {{/qr-code}} +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} diff --git a/web/app/templates/app/version.hbs b/web/app/templates/app/version.hbs new file mode 100644 index 0000000..7016b17 --- /dev/null +++ b/web/app/templates/app/version.hbs @@ -0,0 +1,8 @@ +{{#app/app-manage + category='version' + pageTitle=(concat 'App[' model.appId ']版本管理') + tabLinkRouteName='app.version.list' + appId=model.appId + platform=model.platform}} + {{outlet}} +{{/app/app-manage}} \ No newline at end of file diff --git a/web/app/templates/app/version/create.hbs b/web/app/templates/app/version/create.hbs new file mode 100644 index 0000000..cd7afe2 --- /dev/null +++ b/web/app/templates/app/version/create.hbs @@ -0,0 +1,20 @@ +{{#form-content}} + {{input type='hidden' name='appId' value=model.appId}} + {{input type='hidden' name='platform' value=model.platform}} + {{#if (or (eq 'AndroidPhone' model.platform) (eq 'AndroidPad' model.platform))}} + {{form-input name='appName' label='App名称' placeholder='程序名称,二维码名称'}} + {{form-input name='downloadName' label='App下载文件名'}} + {{/if}} + {{form-input type='file' name='pkg' label='安装包'}} + {{form-input type='file' name='icon' label='安装图标(512x512)'}} + {{form-input-checkbox}} + {{form-input-checkbox name='override' label='覆盖已存在版本' booleanValue=true}} + {{#form-input label='发布说明' inputClass='col-xs-8'}} + {{wysiwyg-editor name='releaseNote'}} + {{/form-input}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons + backRouteName='app.version.edit' + backRouteParams=model}} +{{/form-content}} diff --git a/web/app/templates/app/version/edit.hbs b/web/app/templates/app/version/edit.hbs new file mode 100644 index 0000000..d9086e9 --- /dev/null +++ b/web/app/templates/app/version/edit.hbs @@ -0,0 +1,64 @@ +{{#form-content}} + + {{input type='hidden' name='appId' value=model.appId}} + {{input type='hidden' name='platform' value=model.platform}} + {{input type='hidden' name='id' value=model.id}} + {{#if (or (eq 'AndroidPhone' model.platform) (eq 'AndroidPad' model.platform))}} + {{form-input name='appName' label='App名称'}} + {{/if}} + {{form-input name='name' label='版本名称' readonly='readonly'}} + {{form-input type='file' name='icon' label='安装图标(512x512)' image='icon'}} + + {{form-input-modal-select + listRoute='app.version.edit.api-group-select' + idField='apiGroupId' + nameField='apiGroupName' + btnIcon='fa-plug' + label='API组'}} + + {{form-input-modal-select + listRoute='app.version.edit.splash-select' + idField='splashId' + nameField='splashName' + btnIcon='fa-file-image-o' + label='启动图'}} + + {{form-input-modal-select + listRoute='app.version.edit.app-config-select' + idField='appConfigId' + nameField='appConfigName' + btnIcon='fa-bars' + label='App配置'}} + + {{form-input-modal-select + listRoute='app.version.edit.theme-select' + idField='themeId' + nameField='themeName' + btnIcon='fa-suitcase' + label='主题包'}} + + {{form-input-modal-select + listRoute='app.version.edit.version-select' + idField='updateToVersionId' + nameField='updateToVersionName' + params=model + btnIcon='fa-code-fork' + label='升级版本'}} + + {{form-input-checkbox name='disableUpdate' label='禁止升级'}} + {{form-input-checkbox}} + {{form-input type='textarea' + name='metaData' + label='元数据(JSONObject)' + placeholder='{"corpId": "5736da7888c24e4c24a7db45"}' + }} +
    + {{#form-input label='发布说明' inputClass='col-xs-8'}} + {{wysiwyg-editor name='releaseNote'}} + {{/form-input}} +
    + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} +{{/form-content}} +{{outlet}} diff --git a/web/app/templates/app/version/list-select.hbs b/web/app/templates/app/version/list-select.hbs new file mode 100644 index 0000000..1b2c75b --- /dev/null +++ b/web/app/templates/app/version/list-select.hbs @@ -0,0 +1,54 @@ +{{#modal-list-select title=(concat 'App[' appId '][' platform ']版本列表')}} + + + + + + App名称 + + + 版本名称 + + + + 备注 + + + + 升级版本 + + + + 禁止升级 + + + + 状态 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it selectedModel=selectedModel selectedId=selectedId}} + + + {{it.appName}} + + + {{it.name}} + + + {{it.note}} + + {{it.updateToVersionName}} + {{status-cell name='disableUpdate' model=it enabledText='是' disabledText='否'}} + + {{status-cell model=it}} + + + {{/each}} + +{{/modal-list-select}} diff --git a/web/app/templates/app/version/list.hbs b/web/app/templates/app/version/list.hbs new file mode 100644 index 0000000..a07d4f8 --- /dev/null +++ b/web/app/templates/app/version/list.hbs @@ -0,0 +1,90 @@ +
    + {{#grid-header}} +
  • + {{#link-to 'app.version.create'}} + 上传软件包 + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    + + + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + + + {{/each}} + +
    App 名称版本名称 + + 备注 + + + 升级版本 + + + 禁止升级 + + + 下载量 + + + 状态 + + + 管理 +
    + {{#if (or (eq 'AndroidPhone' it.platform) (eq 'AndroidPad' it.platform))}} + {{editable-cell model=it field='appName'}} + {{else}} + {{it.appName}} + {{/if}} + + {{it.name}} + + {{editable-cell model=it field='note'}} + {{it.updateToVersionName}}{{status-cell name='disableUpdate' model=it enabledText='是' disabledText='否'}} + {{it.countDownload}} + + {{status-cell model=it}} + + {{#qr-code text=it.installUrl iconUrl=it.icon}} + {{status-toggle-button model=it}} + {{#link-to 'app.version.edit' it.id class='btn btn-xs btn-info' title='编辑'}} + + {{/link-to}} + {{#if (eq false it.enabled)}} + + {{/if}} + {{op-detail it.id}} + {{/qr-code}} +
    +
    + {{pagination-bar}} +
    +
    diff --git a/web/app/templates/application.hbs b/web/app/templates/application.hbs new file mode 100644 index 0000000..94a4f74 --- /dev/null +++ b/web/app/templates/application.hbs @@ -0,0 +1,19 @@ +{{#if ajax.loading}} +
    + +
    +
    + Loading... +
    +
    +
    +{{/if}} + +{{#if login}} + {{outlet}} +{{else}} + {{top-navbar}} + {{#main-container}} + {{outlet}} + {{/main-container}} +{{/if}} \ No newline at end of file diff --git a/web/app/templates/cloud/ad-slide/create.hbs b/web/app/templates/cloud/ad-slide/create.hbs new file mode 100644 index 0000000..1c08369 --- /dev/null +++ b/web/app/templates/cloud/ad-slide/create.hbs @@ -0,0 +1,71 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + {{#if corpId}} + + {{#link-to 'cloud.ad-slide.manage' (query-params corpId=corpId)}} + 企业[{{model.corp.name}}]广告页列表 + {{/link-to}} + {{else}} + + {{#link-to 'cloud.ad-slide.list' 1}} + 云端[{{model.cloud.name}}]广告页列表 + {{/link-to}} + {{/if}} +
  • +
  • 新建广告页
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='cloudId' value=model.cloud.id}} + {{#if corpId}} + {{input type='hidden' name='corpId' value=corpId}} + {{else}} + {{form-input-modal-select + listRoute='cloud.ad-slide.create.corp-select' + idField='corpId' + nameField='corpName' + btnIcon='glyphicon-registration-mark' + label='企业'}} + {{/if}} + + {{form-input name='url' label='链接URL'}} + {{form-input type='file' name='image' label='图片'}} + + {{form-input-modal-select + listRoute='cloud.ad-slide.create.app-select' + idField='appId' + nameField='appName' + btnIcon='fa-cube' + label='App'}} + + {{#form-input-select label='平台' name='platform' as |xs|}} + {{#xs.option value='AndroidPhone'}}Android Phone{{/xs.option}} + {{#xs.option value='iPhone'}}iPhone{{/xs.option}} + {{#xs.option value='AndroidPad'}}Android Pad{{/xs.option}} + {{#xs.option value='iPad'}}iPad{{/xs.option}} + {{/form-input-select}} + + {{form-input-modal-select + listRoute=(if model.appId 'cloud.ad-slide.create.version-select' 'cloud.ad-slide.create.app-select-for-version-select') + idField='appVersionId' + nameField='appVersionName' + params=(hash appId=model.appId platform=model.platform) + btnIcon=(if (or (eq model.platform 'AndroidPhone') (eq model.platform 'AndroidPad')) 'fa-android' 'fa-apple') + label='App 版本'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons + backRouteName=(if corpId 'cloud.ad-slide.manage') + backRouteParams=(if corpId false) + backRouteQueryParams=(if corpId (hash corpId=corpId)) + }} + {{/form-content}} +{{/main-content}} +{{outlet}} \ No newline at end of file diff --git a/web/app/templates/cloud/ad-slide/edit.hbs b/web/app/templates/cloud/ad-slide/edit.hbs new file mode 100644 index 0000000..018ef7e --- /dev/null +++ b/web/app/templates/cloud/ad-slide/edit.hbs @@ -0,0 +1,41 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.ad-slide.list' 1}} + 云端[{{model.cloud.name}}]广告页列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.ad-slide.manage' + (query-params + appId=model.appId + platform=model.platform + appVersion=model.appVersion)}} + 广告页管理 + {{/link-to}} +
  • +
  • 编辑广告页
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='cloudId' value=model.cloud.id}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='url' label='链接URL'}} + {{form-input type='file' name='image' label='图片' image='image'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons type='update' + backRouteName='cloud.ad-slide.manage' + backRouteParams=(array model.cloud.id) + backRouteQueryParams=(hash appId=model.appId platform=model.platform appVersion=model.appVersion)}} + }} + {{/form-content}} +{{/main-content}} +{{outlet}} \ No newline at end of file diff --git a/web/app/templates/cloud/ad-slide/list.hbs b/web/app/templates/cloud/ad-slide/list.hbs new file mode 100644 index 0000000..aceba8d --- /dev/null +++ b/web/app/templates/cloud/ad-slide/list.hbs @@ -0,0 +1,87 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + + 云端[{{model.cloud.name}}]广告页列表 +
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'cloud.ad-slide.create' (query-params corpId='')}} + 新建广告页 + {{/link-to}} +
  • + {{/grid-header}} +
    + +
    + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + {{/each}} + +
    + App ID + + 平台 + + + App 版本 + + 图片 + + 总数 + + + 管理 +
    + {{it.appId}} + + {{it.platform}} + + {{it.appVersion}} + + {{image-previews previews=it.images separator=';'}} + + {{it.total}} + + +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/cloud/ad-slide/manage.hbs b/web/app/templates/cloud/ad-slide/manage.hbs new file mode 100644 index 0000000..9ada145 --- /dev/null +++ b/web/app/templates/cloud/ad-slide/manage.hbs @@ -0,0 +1,78 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + {{#if corpId}} + + {{#link-to 'cloud.corp.list' 1}} + 云端[{{model.cloud.name}}]企业列表 + {{/link-to}} + {{else}} + + {{#link-to 'cloud.ad-slide.list' 1}} + 云端[{{model.cloud.name}}]广告页列表 + {{/link-to}} + {{/if}} +
  • +
  • + + {{#if model.corp}} + [{{model.corp.name}}] + {{else}} + [{{appId}}][{{platform}}][{{appVersion}}] + {{/if}} + 广告页管理 +
  • + {{/breadcrumbs-bar}} + +
    +
    +
    +
    +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + {{#sortable-list onSortStopped=(route-action 'adSlideSortStopped') model=model.data as |it|}} + + {{it.url}} + +
    + + {{image-previews previews=it.image}} + + {{status-toggle-button model=it iconOnly=true params=(hash cloudId=model.cloud.id)}} + + {{#link-to 'cloud.ad-slide.edit' it.id class="blue" title="编辑"}} + + {{/link-to}} +
    + {{/sortable-list}} +
    +
    +
    +
    +
    +
    + {{outlet}} +{{/main-content}} diff --git a/web/app/templates/cloud/corp/biz-group/create.hbs b/web/app/templates/cloud/corp/biz-group/create.hbs new file mode 100644 index 0000000..b5d4ad1 --- /dev/null +++ b/web/app/templates/cloud/corp/biz-group/create.hbs @@ -0,0 +1,34 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.list' 1}} + 云端[{{model.cloud.name}}]企业列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.biz-manage' model.corp.id (query-params selected=model.corp.id)}} + 企业[{{model.corp.name}}]业务管理 + {{/link-to}} +
  • +
  • 创建业务分组
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='cloudId' value=model.cloud.id}} + {{input type='hidden' name='corpId' value=model.corp.id}} + {{form-input name='name' label='名称'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons + backRouteName='cloud.corp.biz-manage' + backRouteParams=(array model.cloud.id model.corp.id) + backRouteQueryParams=(hash selected=model.corp.id)}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/cloud/corp/biz-group/edit.hbs b/web/app/templates/cloud/corp/biz-group/edit.hbs new file mode 100644 index 0000000..cd7e9cd --- /dev/null +++ b/web/app/templates/cloud/corp/biz-group/edit.hbs @@ -0,0 +1,36 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.list' 1}} + 云端[{{model.cloud.name}}]企业列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.biz-manage' model.corp.id (query-params selected=model.corp.id)}} + 企业[{{model.corp.name}}]业务管理 + {{/link-to}} +
  • +
  • 编辑业务分组[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='cloudId' value=model.cloud.id}} + {{input type='hidden' name='corpId' value=model.corp.id}} + {{input type='hidden' name='id' value=model.id}} + {{input type='hidden' name='sort' value=model.sort}} + {{form-input name='name' label='名称'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons type='update' + backRouteName='cloud.corp.biz-manage' + backRouteParams=(array model.cloud.id model.corp.id) + backRouteQueryParams=(hash selected=model.corp.id)}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/cloud/corp/biz-manage.hbs b/web/app/templates/cloud/corp/biz-manage.hbs new file mode 100644 index 0000000..0d6d7fb --- /dev/null +++ b/web/app/templates/cloud/corp/biz-manage.hbs @@ -0,0 +1,156 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.list' 1}} + 云端[{{model.cloud.name}}]企业列表 + {{/link-to}} +
  • +
  • + + 企业[{{model.corp.name}}]业务管理 +
  • + {{/breadcrumbs-bar}} + +
    +
    +
    +
    +
    +
    + + 业务分组 +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + {{#sortable-list model=model.bizGroups onSortStopped=(route-action 'bizGroupSortStopped') selected=selected as |it|}} + {{#link-to 'cloud.corp.biz-manage' (query-params selected=it.id) }} + {{it.name}} + {{/link-to}} + +
    + {{#if (eq model.corp.id it.id)}} + + + + {{/if}} + + {{it.countBizes}} + + {{#link-to 'cloud.corp.biz-group.edit' model.cloud.id model.corp.id it.id class="blue" title="编辑"}} + + {{/link-to}} + {{#if (and (eq it.countBizes 0) (not-eq model.corp.id it.id))}} + + + + + {{/if}} +
    + {{/sortable-list}} +
    +
    +
    +
    + +
    +
    +
    +
    + 业务列表 +
    +
    + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + {{#sortable-list onSortStopped=(route-action 'bizSortStopped') model=model.bizes as |it|}} +
    + {{image-previews previews=it.icon imageHeight=16}} +
    + + {{it.name}} + +
    + +
    +
    + {{#if (and isEditing (eq isEditingBiz it))}} +
    + {{#x-select value=selectedGroupId class='no-padding' as |xs|}} + {{#each model.bizGroups as |bg|}} + {{#xs.option value=bg.id}}{{bg.name}}{{/xs.option}} + {{/each}} + {{/x-select}} + + + +
    + {{/if}} + {{#unless isEditing}} + + + + {{/unless}} + {{#link-to 'cloud.corp.biz.edit' model.cloud.id model.corp.id it.id + class='blue' rel='tooltip' title='编辑'}} + + {{/link-to}} +
    + {{/sortable-list}} +
    +
    +
    +
    +
    +
    + + {{outlet}} +{{/main-content}} diff --git a/web/app/templates/cloud/corp/biz/create.hbs b/web/app/templates/cloud/corp/biz/create.hbs new file mode 100644 index 0000000..9966b53 --- /dev/null +++ b/web/app/templates/cloud/corp/biz/create.hbs @@ -0,0 +1,43 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.list' 1}} + 云端[{{model.cloud.name}}]企业列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.biz-manage' model.corp.id (query-params selected=model.corp.id)}} + 企业[{{model.corp.name}}]业务管理 + {{/link-to}} +
  • +
  • 创建业务
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='cloudId' value=model.cloud.id}} + {{input type='hidden' name='corpId' value=model.corp.id}} + {{form-input name='name' label='名称'}} + {{form-input name='url' label='URL'}} + {{form-input type='file' name='icon' label='图标'}} + + {{#form-input-select label='业务分组' name='groupId' as |xs|}} + {{#each model.bizGroups as |bg|}} + {{#xs.option value=bg.id}}{{bg.name}}{{/xs.option}} + {{/each}} + {{/form-input-select}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons + backRouteName='cloud.corp.biz-manage' + backRouteParams=(array model.cloud.id model.corp.id) + backRouteQueryParams=(hash selected=model.corp.id)}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/cloud/corp/biz/edit.hbs b/web/app/templates/cloud/corp/biz/edit.hbs new file mode 100644 index 0000000..7ddd414 --- /dev/null +++ b/web/app/templates/cloud/corp/biz/edit.hbs @@ -0,0 +1,46 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.list' 1}} + 云端[{{model.cloud.name}}]企业列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.biz-manage' model.corp.id (query-params selected=model.corp.id)}} + 企业[{{model.corp.name}}]业务管理 + {{/link-to}} +
  • +
  • 编辑业务[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='cloudId' value=model.cloud.id}} + {{input type='hidden' name='corpId' value=model.corp.id}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + {{form-input name='url' + label='URL' + readonly=(if (eq model.origin 'External') 'readonly')}} + {{form-input type='file' name='icon' label='图标' image='icon'}} + + {{#form-input-select label='业务分组' name='groupId' as |xs|}} + {{#each model.bizGroups as |bg|}} + {{#xs.option value=bg.id}}{{bg.name}}{{/xs.option}} + {{/each}} + {{/form-input-select}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons type='update' + backRouteName='cloud.corp.biz-manage' + backRouteParams=(array model.cloud.id model.corp.id) + backRouteQueryParams=(hash selected=model.corp.id)}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/cloud/corp/list-select.hbs b/web/app/templates/cloud/corp/list-select.hbs new file mode 100644 index 0000000..aec4457 --- /dev/null +++ b/web/app/templates/cloud/corp/list-select.hbs @@ -0,0 +1,45 @@ +{{#modal-list-select title=(concat '云端[' model.cloud.name ']企业列表')}} + + + + + + 名称 + + + + 备注 + + + + Logo + + + + 状态 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it selectedModel=selectedModel selectedId=selectedId}} + + + {{it.name}} + + + {{it.note}} + + + {{image-previews previews=it.icon}} + + + {{status-cell model=it}} + + + {{/each}} + +{{/modal-list-select}} diff --git a/web/app/templates/cloud/corp/list.hbs b/web/app/templates/cloud/corp/list.hbs new file mode 100644 index 0000000..e9d24de --- /dev/null +++ b/web/app/templates/cloud/corp/list.hbs @@ -0,0 +1,83 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + + 云端[{{model.cloud.name}}]企业列表 +
  • + {{/breadcrumbs-bar}} + +
    +
    + {{grid-header}} +
    + +
    + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + {{/each}} + +
    + 名称 + + + 备注 + + + Logo + + + 状态 + + + 管理 +
    + {{it.name}} + + {{it.note}} + + {{image-previews previews=it.icon}} + + {{status-cell model=it}} + + +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/cloud/corp/manage.hbs b/web/app/templates/cloud/corp/manage.hbs new file mode 100644 index 0000000..25ccae1 --- /dev/null +++ b/web/app/templates/cloud/corp/manage.hbs @@ -0,0 +1,88 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • + + {{#link-to 'cloud.corp.list' 1}} + 云端[{{model.cloud.name}}]企业列表 + {{/link-to}} +
  • +
  • + + 企业[{{model.corp.name}}]管理 +
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='cloudId' value=model.cloud.id}} + {{input type='hidden' name='corpId' value=model.corp.id}} + + {{form-input type='file' name='icon' label='图标' image='corp.icon'}} + + {{form-input-modal-select + name='appId' + listRoute='cloud.corp.manage.app-select' + idField='corpExt.appId' + nameField='corpExt.appName' + btnIcon='fa-cube' + label='App'}} + + {{form-input-modal-select + name='appVersionGroupId' + listRoute='cloud.corp.manage.app-select-for-version-group-select' + idField='corpExt.appVersionGroupId' + nameField='corpExt.appVersionGroupName' + params=(hash subitemRouteName='version-group-select') + btnIcon='fa-object-group' + label='App版本组'}} + + {{!form-input-modal-select + name='androidPhoneVersionId' + listRoute='cloud.corp.manage.app-select-for-version-select' + idField='corpExt.androidPhoneVersionId' + nameField='corpExt.androidPhoneVersionName' + params=(hash platform='AndroidPhone') + btnIcon='fa-android' + label='Android Phone 版本'}} + + {{!form-input-modal-select + name='iPhoneVersionId' + listRoute='cloud.corp.manage.app-select-for-version-select' + idField='corpExt.iPhoneVersionId' + nameField='corpExt.iPhoneVersionName' + params=(hash platform='iPhone') + btnIcon='fa-apple' + label='iPhone 版本'}} + + {{form-input-modal-select + name='splashId' + listRoute='cloud.corp.manage.splash-select' + idField='corpExt.splashId' + nameField='corpExt.splashName' + btnIcon='fa-file-image-o' + label='启动图'}} + + {{form-input-modal-select + name='appConfigId' + listRoute='cloud.corp.manage.app-config-select' + idField='corpExt.appConfigId' + nameField='corpExt.appConfigName' + btnIcon='fa-bars' + label='App配置'}} + + {{form-input-modal-select + name='themeId' + listRoute='cloud.corp.manage.theme-select' + idField='corpExt.themeId' + nameField='corpExt.themeName' + btnIcon='fa-suitcase' + label='主题包'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} + {{outlet}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/cloud/corp/member/list.hbs b/web/app/templates/cloud/corp/member/list.hbs new file mode 100644 index 0000000..c24cd68 --- /dev/null +++ b/web/app/templates/cloud/corp/member/list.hbs @@ -0,0 +1 @@ +{{outlet}} diff --git a/web/app/templates/cloud/create.hbs b/web/app/templates/cloud/create.hbs new file mode 100644 index 0000000..a5ad5c0 --- /dev/null +++ b/web/app/templates/cloud/create.hbs @@ -0,0 +1,19 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • 新建云端
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{form-input name='name' label='名称'}} + {{form-input name='dataApiUrl' label='数据接口地址'}} + {{form-input name='authKey' label='认证Key'}} + {{form-input name='authSecret' label='认证Secret'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/cloud/edit.hbs b/web/app/templates/cloud/edit.hbs new file mode 100644 index 0000000..9ba108b --- /dev/null +++ b/web/app/templates/cloud/edit.hbs @@ -0,0 +1,20 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'cloud.list' 1}} + 云端列表 + {{/link-to}} +
  • +
  • 编辑云端[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + {{form-input name='dataApiUrl' label='数据接口地址'}} + {{form-input name='authKey' label='认证Key'}} + {{form-input name='authSecret' label='认证Secret'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/cloud/list.hbs b/web/app/templates/cloud/list.hbs new file mode 100644 index 0000000..de7cb32 --- /dev/null +++ b/web/app/templates/cloud/list.hbs @@ -0,0 +1,80 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + + 云端列表 +
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'cloud.create'}} + 新建云端 + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + {{/each}} + +
    + 名称 + + + 备注 + + + 状态 + + + 管理 +
    + {{editable-cell model=it field='name' allowBlank=false}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + + +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/components/ace-login.hbs b/web/app/templates/components/ace-login.hbs new file mode 100644 index 0000000..82a5299 --- /dev/null +++ b/web/app/templates/components/ace-login.hbs @@ -0,0 +1,96 @@ +
    +
    +
    +
    + +
    +
    +
    +
    diff --git a/web/app/templates/components/app/app-manage.hbs b/web/app/templates/components/app/app-manage.hbs new file mode 100644 index 0000000..6a8f013 --- /dev/null +++ b/web/app/templates/components/app/app-manage.hbs @@ -0,0 +1,88 @@ +{{#breadcrumbs-bar}} +
  • + {{#link-to 'app.list' 1}} + App列表 + {{/link-to}} +
  • +
  • {{pageTitle}}
  • +{{/breadcrumbs-bar}} +{{app/manage-sidebar appId=appId category=category}} + +
    +
    +
    +
    +
    + +
    + + +
    +
    + {{yield}} +
    +
    +
    + +
    +
    +
    +
    +
    diff --git a/web/app/templates/components/app/manage-sidebar.hbs b/web/app/templates/components/app/manage-sidebar.hbs new file mode 100644 index 0000000..b713088 --- /dev/null +++ b/web/app/templates/components/app/manage-sidebar.hbs @@ -0,0 +1,33 @@ + + diff --git a/web/app/templates/components/breadcrumbs-bar.hbs b/web/app/templates/components/breadcrumbs-bar.hbs new file mode 100644 index 0000000..5d7a742 --- /dev/null +++ b/web/app/templates/components/breadcrumbs-bar.hbs @@ -0,0 +1,7 @@ + diff --git a/web/app/templates/components/date-cell.hbs b/web/app/templates/components/date-cell.hbs new file mode 100644 index 0000000..fe00ee7 --- /dev/null +++ b/web/app/templates/components/date-cell.hbs @@ -0,0 +1,3 @@ +{{#if model}} +{{moment-format model 'YYYY-MM-DD H:mm:ss'}} +{{/if}} diff --git a/web/app/templates/components/editable-cell.hbs b/web/app/templates/components/editable-cell.hbs new file mode 100644 index 0000000..d18442e --- /dev/null +++ b/web/app/templates/components/editable-cell.hbs @@ -0,0 +1,14 @@ +{{#if isEditing}} + {{input type="text" + name=model.id + placeholder=placeholder + class="col-xs-12" + value=(mut (get model field)) + focus-out='doUpdate' + insert-newline='doUpdate' + }} +{{else}} + + {{get model field}} + +{{/if}} diff --git a/web/app/templates/components/form-content.hbs b/web/app/templates/components/form-content.hbs new file mode 100644 index 0000000..9174e00 --- /dev/null +++ b/web/app/templates/components/form-content.hbs @@ -0,0 +1,13 @@ +
    +
    +
    +
    +
    +
    + {{yield}} +
    +
    +
    +
    +
    +
    diff --git a/web/app/templates/components/form-footer-buttons.hbs b/web/app/templates/components/form-footer-buttons.hbs new file mode 100644 index 0000000..17270b5 --- /dev/null +++ b/web/app/templates/components/form-footer-buttons.hbs @@ -0,0 +1,9 @@ + + + diff --git a/web/app/templates/components/form-input-checkbox.hbs b/web/app/templates/components/form-input-checkbox.hbs new file mode 100644 index 0000000..def733d --- /dev/null +++ b/web/app/templates/components/form-input-checkbox.hbs @@ -0,0 +1,9 @@ + +
    + + {{yield}} +
    diff --git a/web/app/templates/components/form-input-color.hbs b/web/app/templates/components/form-input-color.hbs new file mode 100644 index 0000000..649e96d --- /dev/null +++ b/web/app/templates/components/form-input-color.hbs @@ -0,0 +1,17 @@ + +
    +
    +
    + {{input class='form-control col-xs-12' + readonly='readonly' + placeholder=(if placeholder placeholder label) + name=name + value=(mut (get model name))}} + +
    +
    +
    + {{input class='form-control' placeholder=placeholder value=hexColor}} +
    +
    +{{form-input-errors-msg name=name}} \ No newline at end of file diff --git a/web/app/templates/components/form-input-errors-msg.hbs b/web/app/templates/components/form-input-errors-msg.hbs new file mode 100644 index 0000000..80fd5b8 --- /dev/null +++ b/web/app/templates/components/form-input-errors-msg.hbs @@ -0,0 +1,3 @@ +{{#each (get errors name) as |msg|}} +
    {{msg}}
    +{{/each}} \ No newline at end of file diff --git a/web/app/templates/components/form-input-modal-select.hbs b/web/app/templates/components/form-input-modal-select.hbs new file mode 100644 index 0000000..609cc2c --- /dev/null +++ b/web/app/templates/components/form-input-modal-select.hbs @@ -0,0 +1,27 @@ + +
    +
    + {{input type='hidden' name=(if name name idField) value=(mut (get model idField))}} + {{input type='text' + class='form-control col-xs-12' + readonly='readonly' + value=(mut (get model nameField)) + placeholder=(if placeholder (concat '选择' label))}} + + {{#link-to listRoute 1 + (obj-query-params + (obj-merge params + (hash idField=idField + nameField=nameField + selectedId=(get model idField)))) + activeClass='' + class='btn btn-sm btn-primary' + rel="tooltip" + title=selectText}} + + 选择 + {{/link-to}} + +
    +
    +{{form-input-errors-msg name=idField}} \ No newline at end of file diff --git a/web/app/templates/components/form-input-select.hbs b/web/app/templates/components/form-input-select.hbs new file mode 100644 index 0000000..0201be1 --- /dev/null +++ b/web/app/templates/components/form-input-select.hbs @@ -0,0 +1,11 @@ + +
    +
    +
    + {{#x-select class='form-control' name=name value=(mut (get model name)) as |xs|}} + {{yield xs}} + {{/x-select}} +
    +
    +
    +{{form-input-errors-msg name=name}} \ No newline at end of file diff --git a/web/app/templates/components/form-input-spinner.hbs b/web/app/templates/components/form-input-spinner.hbs new file mode 100644 index 0000000..ce0fe79 --- /dev/null +++ b/web/app/templates/components/form-input-spinner.hbs @@ -0,0 +1,8 @@ + +
    + {{input class='col-xs-12' + type='text' + name=name + value=(mut (get model name))}} +
    +{{form-input-errors-msg name=name}} \ No newline at end of file diff --git a/web/app/templates/components/form-input.hbs b/web/app/templates/components/form-input.hbs new file mode 100644 index 0000000..303157a --- /dev/null +++ b/web/app/templates/components/form-input.hbs @@ -0,0 +1,29 @@ + +
    + {{#if hasBlock}} + {{yield}} + {{else}} + {{#if (eq 'file' type)}} + {{input class='col-xs-12' type='file' name=name}} + {{else if (eq 'textarea' type)}} + {{textarea class='col-xs-12' + name=name + value=(mut (get model name)) + class='form-control' + placeholder=(if placeholder placeholder label)}} + {{else}} + {{input class='col-xs-12' + type=type + readonly=readonly + name=name + placeholder=(if placeholder placeholder label) + value=(mut (get model name))}} + {{/if}} + {{/if}} +
    +{{#if imageUrl}} +
    + {{image-previews previews=imageUrl}} +
    +{{/if}} +{{form-input-errors-msg name=name}} \ No newline at end of file diff --git a/web/app/templates/components/gender-cell.hbs b/web/app/templates/components/gender-cell.hbs new file mode 100644 index 0000000..6ccbeba --- /dev/null +++ b/web/app/templates/components/gender-cell.hbs @@ -0,0 +1,7 @@ +{{#if (eq 'M' model.gender)}} + {{! }} + 男 +{{else}} + {{! }} + 女 +{{/if}} diff --git a/web/app/templates/components/grid-header.hbs b/web/app/templates/components/grid-header.hbs new file mode 100644 index 0000000..98c5bb7 --- /dev/null +++ b/web/app/templates/components/grid-header.hbs @@ -0,0 +1,14 @@ +
    + {{#if hasBlock}} +
    + + + + +
    + {{/if}} + {{reload-btn}} +
    +{{search-box}} diff --git a/web/app/templates/components/image-previews.hbs b/web/app/templates/components/image-previews.hbs new file mode 100644 index 0000000..72ce668 --- /dev/null +++ b/web/app/templates/components/image-previews.hbs @@ -0,0 +1,12 @@ +{{#if previews}} + + + + +{{/if}} \ No newline at end of file diff --git a/web/app/templates/components/list-select-checkbox.hbs b/web/app/templates/components/list-select-checkbox.hbs new file mode 100644 index 0000000..04d0252 --- /dev/null +++ b/web/app/templates/components/list-select-checkbox.hbs @@ -0,0 +1,5 @@ + + diff --git a/web/app/templates/components/main-container.hbs b/web/app/templates/components/main-container.hbs new file mode 100644 index 0000000..81c0e5d --- /dev/null +++ b/web/app/templates/components/main-container.hbs @@ -0,0 +1,674 @@ + + + + +
    +
    + + + + +
    +
    +
    + + {{yield}} + +
    +
    +
    +
    +
    + + + + + + diff --git a/web/app/templates/components/main-content.hbs b/web/app/templates/components/main-content.hbs new file mode 100644 index 0000000..afa9db2 --- /dev/null +++ b/web/app/templates/components/main-content.hbs @@ -0,0 +1,3 @@ +
    + {{yield}} +
    diff --git a/web/app/templates/components/modal-dialog.hbs b/web/app/templates/components/modal-dialog.hbs new file mode 100644 index 0000000..e137763 --- /dev/null +++ b/web/app/templates/components/modal-dialog.hbs @@ -0,0 +1,15 @@ +{{#modal-frame title=title}} + + + +{{/modal-frame}} diff --git a/web/app/templates/components/modal-frame.hbs b/web/app/templates/components/modal-frame.hbs new file mode 100644 index 0000000..56512b4 --- /dev/null +++ b/web/app/templates/components/modal-frame.hbs @@ -0,0 +1,11 @@ + diff --git a/web/app/templates/components/modal-list-select.hbs b/web/app/templates/components/modal-list-select.hbs new file mode 100644 index 0000000..3cd0f7d --- /dev/null +++ b/web/app/templates/components/modal-list-select.hbs @@ -0,0 +1,15 @@ +{{#modal-dialog title=title}} +
    +
    + {{reload-btn}} +
    + {{search-box}} +
    + +
    + + {{yield}} +
    +
    + {{pagination-bar}} +{{/modal-dialog}} diff --git a/web/app/templates/components/op-detail.hbs b/web/app/templates/components/op-detail.hbs new file mode 100644 index 0000000..0ba5b4e --- /dev/null +++ b/web/app/templates/components/op-detail.hbs @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/app/templates/components/pagination-bar.hbs b/web/app/templates/components/pagination-bar.hbs new file mode 100644 index 0000000..7eb815a --- /dev/null +++ b/web/app/templates/components/pagination-bar.hbs @@ -0,0 +1,24 @@ +
    + 总共:{{total}}条记录 +
    + diff --git a/web/app/templates/components/qr-code.hbs b/web/app/templates/components/qr-code.hbs new file mode 100644 index 0000000..e6ef8f5 --- /dev/null +++ b/web/app/templates/components/qr-code.hbs @@ -0,0 +1,16 @@ + + +{{yield}} diff --git a/web/app/templates/components/reload-btn.hbs b/web/app/templates/components/reload-btn.hbs new file mode 100644 index 0000000..186ba24 --- /dev/null +++ b/web/app/templates/components/reload-btn.hbs @@ -0,0 +1 @@ + diff --git a/web/app/templates/components/search-box.hbs b/web/app/templates/components/search-box.hbs new file mode 100644 index 0000000..e25a19a --- /dev/null +++ b/web/app/templates/components/search-box.hbs @@ -0,0 +1,9 @@ + +{{input type="text" + class="form-control search-query small" + placeholder="Search ..." + value=searchText + insert-newline='search' +}} + + \ No newline at end of file diff --git a/web/app/templates/components/sortable-list-item.hbs b/web/app/templates/components/sortable-list-item.hbs new file mode 100644 index 0000000..889d9ee --- /dev/null +++ b/web/app/templates/components/sortable-list-item.hbs @@ -0,0 +1 @@ +{{yield}} diff --git a/web/app/templates/components/sortable-list.hbs b/web/app/templates/components/sortable-list.hbs new file mode 100644 index 0000000..458e532 --- /dev/null +++ b/web/app/templates/components/sortable-list.hbs @@ -0,0 +1,5 @@ +{{#each model as |it i|}} + {{#sortable-list-item index=i selected=(eq selected it.id) itemId=it.id}} + {{yield it}} + {{/sortable-list-item}} +{{/each}} diff --git a/web/app/templates/components/status-cell.hbs b/web/app/templates/components/status-cell.hbs new file mode 100644 index 0000000..37e0516 --- /dev/null +++ b/web/app/templates/components/status-cell.hbs @@ -0,0 +1 @@ +{{if (get model field) enabledText disabledText}} diff --git a/web/app/templates/components/status-toggle-button.hbs b/web/app/templates/components/status-toggle-button.hbs new file mode 100644 index 0000000..0ab5259 --- /dev/null +++ b/web/app/templates/components/status-toggle-button.hbs @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/app/templates/components/top-navbar.hbs b/web/app/templates/components/top-navbar.hbs new file mode 100644 index 0000000..5d7c406 --- /dev/null +++ b/web/app/templates/components/top-navbar.hbs @@ -0,0 +1,333 @@ + + diff --git a/web/app/templates/components/tree-view.hbs b/web/app/templates/components/tree-view.hbs new file mode 100644 index 0000000..6bf4582 --- /dev/null +++ b/web/app/templates/components/tree-view.hbs @@ -0,0 +1,10 @@ + +
    +

    {{title}}

    +
    + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/web/app/templates/components/wysiwyg-editor.hbs b/web/app/templates/components/wysiwyg-editor.hbs new file mode 100644 index 0000000..44eec82 --- /dev/null +++ b/web/app/templates/components/wysiwyg-editor.hbs @@ -0,0 +1,3 @@ +
    +{{input type='hidden' name=name value=(get model name)}} +{{form-input-errors-msg name=name}} \ No newline at end of file diff --git a/web/app/templates/corp/contact.hbs b/web/app/templates/corp/contact.hbs new file mode 100644 index 0000000..c24cd68 --- /dev/null +++ b/web/app/templates/corp/contact.hbs @@ -0,0 +1 @@ +{{outlet}} diff --git a/web/app/templates/corp/contact/create.hbs b/web/app/templates/corp/contact/create.hbs new file mode 100644 index 0000000..c24cd68 --- /dev/null +++ b/web/app/templates/corp/contact/create.hbs @@ -0,0 +1 @@ +{{outlet}} diff --git a/web/app/templates/corp/contact/edit.hbs b/web/app/templates/corp/contact/edit.hbs new file mode 100644 index 0000000..c24cd68 --- /dev/null +++ b/web/app/templates/corp/contact/edit.hbs @@ -0,0 +1 @@ +{{outlet}} diff --git a/web/app/templates/corp/contact/list.hbs b/web/app/templates/corp/contact/list.hbs new file mode 100644 index 0000000..c24cd68 --- /dev/null +++ b/web/app/templates/corp/contact/list.hbs @@ -0,0 +1 @@ +{{outlet}} diff --git a/web/app/templates/corp/create.hbs b/web/app/templates/corp/create.hbs new file mode 100644 index 0000000..7a47748 --- /dev/null +++ b/web/app/templates/corp/create.hbs @@ -0,0 +1,50 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
  • +
  • 新建企业
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{form-input name='name' label='名称'}} + {{form-input name='shortName' label='简称'}} + {{form-input type='file' name='icon' label='图标'}} + + {{form-input-modal-select + listRoute='corp.create.api-group-select' + idField='apiGroupId' + nameField='apiGroupName' + btnIcon='fa-plug' + label='API组'}} + + {{form-input-modal-select + listRoute='corp.create.splash-select' + idField='splashId' + nameField='splashName' + btnIcon='fa-file-image-o' + label='启动图'}} + + {{form-input-modal-select + listRoute='corp.create.app-config-select' + idField='appConfigId' + nameField='appConfigName' + btnIcon='fa-bars' + label='App配置'}} + + {{form-input-modal-select + listRoute='corp.create.theme-select' + idField='themeId' + nameField='themeName' + btnIcon='fa-suitcase' + label='主题包'}} + + {{form-input-checkbox name='useTinyAppGroup' label='使用轻应用分组'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} + {{outlet}} +{{/main-content}} diff --git a/web/app/templates/corp/dept.hbs b/web/app/templates/corp/dept.hbs new file mode 100644 index 0000000..c24cd68 --- /dev/null +++ b/web/app/templates/corp/dept.hbs @@ -0,0 +1 @@ +{{outlet}} diff --git a/web/app/templates/corp/dept/create.hbs b/web/app/templates/corp/dept/create.hbs new file mode 100644 index 0000000..a88fff4 --- /dev/null +++ b/web/app/templates/corp/dept/create.hbs @@ -0,0 +1,36 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
  • +
  • + {{#link-to 'corp.dept.list' 1}} + 部门列表 + {{/link-to}} +
  • +
  • 新建部门
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='corpId' value=model.corpId}} + {{form-input name='name' label='名称'}} + {{form-input name='url' label='URL'}} + {{!form-input type='file' name='icon' label='图标'}} + + {{!form-input-modal-select + listRoute='corp.tiny-app.create.tiny-app-group-select' + idField='groupId' + nameField='groupName' + params=(hash corpId=model.corpId) + btnIcon='fa-object-group' + label='轻应用分组'}} + + {{form-input-spinner name='sort' label='排序'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} + {{outlet}} +{{/main-content}} + diff --git a/web/app/templates/corp/dept/edit.hbs b/web/app/templates/corp/dept/edit.hbs new file mode 100644 index 0000000..a64f31b --- /dev/null +++ b/web/app/templates/corp/dept/edit.hbs @@ -0,0 +1,35 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
  • +
  • + {{#link-to 'corp.tiny-app.list' 1}} + 部门列表 + {{/link-to}} +
  • +
  • 编辑部门[{{model.name}}]
  • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + {{!--{{form-input name='url' label='URL'}}--}} + {{!form-input type='file' name='icon' label='图标' image='icon'}} + {{!form-input-modal-select + listRoute='corp.tiny-app.edit.tiny-app-group-select' + idField='groupId' + nameField='groupName' + params=(hash corpId=model.corpId) + btnIcon='fa-object-group' + label='轻应用分组'}} + + {{form-input-spinner name='sort' label='排序'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} + {{outlet}} +{{/main-content}} diff --git a/web/app/templates/corp/dept/list.hbs b/web/app/templates/corp/dept/list.hbs new file mode 100644 index 0000000..cdf7716 --- /dev/null +++ b/web/app/templates/corp/dept/list.hbs @@ -0,0 +1,87 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
  • +
  • [{{model.corp.name}}]部门列表
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'corp.dept.create'}} + 新建部门 + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + {{/each}} + +
    + ID + + 名称 + + 排序 + + + 备注 + + + 状态 + + + 管理 +
    + {{it.id}} + + {{it.name}} + + {{it.sort}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + +
    + {{status-toggle-button model=it}} + {{#link-to 'corp.dept.edit' it.id class='btn btn-xs btn-info' title='编辑'}} + + {{/link-to}} + {{op-detail it.id}} +
    +
    +
    + {{pagination-bar}} +
    +
    +
    +{{/main-content}} diff --git a/web/app/templates/corp/dept/tree.hbs b/web/app/templates/corp/dept/tree.hbs new file mode 100644 index 0000000..c33af4a --- /dev/null +++ b/web/app/templates/corp/dept/tree.hbs @@ -0,0 +1,53 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
  • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
  • +
  • [{{model.corp.name}}]部门树
  • + {{/breadcrumbs-bar}} + +
    +
    + {{#grid-header}} +
  • + {{#link-to 'corp.dept.create'}} + 新建部门 + {{/link-to}} +
  • + {{/grid-header}} + +
    + +
    +
    +
    + + +
    +
    + {{tree-view title="部门列表" data=model.data}} +
    + +
    +
    +
    +

    Browse Files

    +
    + +
    +
    +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +{{/main-content}} diff --git a/web/app/templates/corp/edit.hbs b/web/app/templates/corp/edit.hbs new file mode 100644 index 0000000..b0ef556 --- /dev/null +++ b/web/app/templates/corp/edit.hbs @@ -0,0 +1,59 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • 编辑企业[{{model.name}}]
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + {{form-input name='shortName' label='简称'}} + {{form-input type='file' name='icon' label='图标' image='icon'}} + + {{form-input-modal-select + listRoute='corp.edit.tiny-app-group-select' + idField='defaultTinyAppGroupId' + nameField='defaultTinyAppGroupName' + params=(hash corpId=model.id) + btnIcon='fa-object-group' + label='默认轻应用分组'}} + + {{form-input-modal-select + listRoute='corp.edit.api-group-select' + idField='apiGroupId' + nameField='apiGroupName' + btnIcon='fa-plug' + label='API组'}} + + {{form-input-modal-select + listRoute='corp.edit.splash-select' + idField='splashId' + nameField='splashName' + btnIcon='fa-file-image-o' + label='启动图'}} + + {{form-input-modal-select + listRoute='corp.edit.app-config-select' + idField='appConfigId' + nameField='appConfigName' + btnIcon='fa-bars' + label='App配置'}} + + {{form-input-modal-select + listRoute='corp.edit.theme-select' + idField='themeId' + nameField='themeName' + btnIcon='fa-suitcase' + label='主题包'}} + + {{form-input-checkbox name='useTinyAppGroup' label='使用轻应用分组'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} + {{outlet}} +{{/main-content}} diff --git a/web/app/templates/corp/employee/create.hbs b/web/app/templates/corp/employee/create.hbs new file mode 100644 index 0000000..c690a98 --- /dev/null +++ b/web/app/templates/corp/employee/create.hbs @@ -0,0 +1,30 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • + {{#link-to 'corp.employee.list' 1}} + 雇员列表 + {{/link-to}} +
    • +
    • 新建雇员
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='corpId' value=model.corpId}} + {{form-input name='name' label='姓名'}} + {{form-input name='mobile' label='手机号'}} + {{form-input type='file' name='avatar' label='头像'}} + + {{#form-input-select label='性别' name='gender' as |xs|}} + {{#xs.option value='M'}}男{{/xs.option}} + {{#xs.option value='F'}}女{{/xs.option}} + {{/form-input-select}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/corp/employee/edit.hbs b/web/app/templates/corp/employee/edit.hbs new file mode 100644 index 0000000..ba97b4c --- /dev/null +++ b/web/app/templates/corp/employee/edit.hbs @@ -0,0 +1,31 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • + {{#link-to 'corp.employee.list' 1}} + 雇员列表 + {{/link-to}} +
    • +
    • 编辑雇员[{{model.name}}]
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='姓名'}} + {{form-input name='mobile' label='手机号'}} + {{form-input type='file' name='avatar' label='头像' image='avatar'}} + + {{#form-input-select label='性别' name='gender' as |xs|}} + {{#xs.option value='M'}}男{{/xs.option}} + {{#xs.option value='F'}}女{{/xs.option}} + {{/form-input-select}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/corp/employee/list.hbs b/web/app/templates/corp/employee/list.hbs new file mode 100644 index 0000000..c46c674 --- /dev/null +++ b/web/app/templates/corp/employee/list.hbs @@ -0,0 +1,99 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • [{{model.corp.name}}]雇员列表
    • + {{/breadcrumbs-bar}} + +
      +
      + {{#grid-header}} +
    • + {{#link-to 'corp.employee.create'}} + 新建雇员 + {{/link-to}} +
    • + {{/grid-header}} + +
      + +
      + + + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + + + {{/each}} + +
      + ID + + 姓名 + + 性别 + + 手机号 + + 头像 + + + 备注 + + + 状态 + + + 管理 +
      + {{it.id}} + + {{it.name}} + + {{gender-cell model=it}} + + {{it.mobile}} + + {{image-previews previews=it.avatar}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + +
      + {{status-toggle-button model=it}} + {{#link-to 'corp.employee.edit' it.id class='btn btn-xs btn-info' title='编辑'}} + + {{/link-to}} + {{op-detail it.id}} +
      +
      +
      + {{pagination-bar}} +
      +
      +
      +{{/main-content}} diff --git a/web/app/templates/corp/employee/show.hbs b/web/app/templates/corp/employee/show.hbs new file mode 100644 index 0000000..b1e52f0 --- /dev/null +++ b/web/app/templates/corp/employee/show.hbs @@ -0,0 +1,42 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • 用户详情
    • + {{/breadcrumbs-bar}} + +
      +
      + +
      + {{image-previews previews=model.avatar}} +
      +
      +
      + +
      {{model.name}}
      +
      +
      + +
      {{if (eq 'M' model.gender) '男' '女'}}
      +
      +
      + +
      {{model.mobile}}
      +
      +
      + +
      + + + {{model.email}} + +
      +
      + + +
      +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/corp/list.hbs b/web/app/templates/corp/list.hbs new file mode 100644 index 0000000..333e491 --- /dev/null +++ b/web/app/templates/corp/list.hbs @@ -0,0 +1,188 @@ +
      + {{#grid-header}} +
    • + {{#link-to 'corp.create'}} + 新建企业 + {{/link-to}} +
    • + {{/grid-header}} + +
      + +
      + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + {{/each}} + +
      + 全称 + + 简称 + + 图标 + + + 备注 + + + 状态 + + + 管理 +
      + {{it.name}} + + {{it.shortName}} + + {{image-previews previews=it.icon}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + + + + +
      +
      + {{pagination-bar}} +
      +
      diff --git a/web/app/templates/corp/show.hbs b/web/app/templates/corp/show.hbs new file mode 100644 index 0000000..492a549 --- /dev/null +++ b/web/app/templates/corp/show.hbs @@ -0,0 +1,42 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • 企业详情
    • + {{/breadcrumbs-bar}} + +
      +
      + +
      + {{image-previews previews=model.avatar}} +
      +
      +
      + +
      {{model.name}}
      +
      +
      + +
      {{if (eq 'M' model.gender) '男' '女'}}
      +
      +
      + +
      {{model.mobile}}
      +
      +
      + +
      + + + {{model.email}} + +
      +
      + + +
      +{{/main-content}} diff --git a/web/app/templates/corp/tiny-app-group/create.hbs b/web/app/templates/corp/tiny-app-group/create.hbs new file mode 100644 index 0000000..477c1e0 --- /dev/null +++ b/web/app/templates/corp/tiny-app-group/create.hbs @@ -0,0 +1,24 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • + {{#link-to 'corp.tiny-app-group.list' 1}} + 轻应用分组列表 + {{/link-to}} +
    • +
    • 新建轻应用分组
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='corpId' value=model.corpId}} + {{form-input name='name' label='名称'}} + {{form-input-spinner name='sort' label='排序'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/corp/tiny-app-group/edit.hbs b/web/app/templates/corp/tiny-app-group/edit.hbs new file mode 100644 index 0000000..cf2bf1e --- /dev/null +++ b/web/app/templates/corp/tiny-app-group/edit.hbs @@ -0,0 +1,25 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • + {{#link-to 'corp.tiny-app-group.list' 1}} + 轻应用分组列表 + {{/link-to}} +
    • +
    • 编辑轻应用分组[{{model.name}}]
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + {{form-input-spinner name='sort' label='排序'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/corp/tiny-app-group/list-select.hbs b/web/app/templates/corp/tiny-app-group/list-select.hbs new file mode 100644 index 0000000..457adf2 --- /dev/null +++ b/web/app/templates/corp/tiny-app-group/list-select.hbs @@ -0,0 +1,48 @@ +{{#modal-list-select title='轻应用分组列表'}} + + + + + + 名称 + + + + 备注 + + + + 状态 + + + + 创建时间 + + + + 更新时间 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it}} + + + {{it.name}} + + + {{it.note}} + + + {{status-cell model=it}} + + {{date-cell model=it.dateCreated}} + {{date-cell model=it.dateUpdated}} + + {{/each}} + +{{/modal-list-select}} diff --git a/web/app/templates/corp/tiny-app-group/list.hbs b/web/app/templates/corp/tiny-app-group/list.hbs new file mode 100644 index 0000000..5bd7f7b --- /dev/null +++ b/web/app/templates/corp/tiny-app-group/list.hbs @@ -0,0 +1,88 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • [{{model.corp.name}}]轻应用分组列表
    • + {{/breadcrumbs-bar}} + +
      +
      + {{#grid-header}} +
    • + {{#link-to 'corp.tiny-app-group.create'}} + 新建轻应用分组 + {{/link-to}} +
    • + {{/grid-header}} + +
      + +
      + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + {{/each}} + +
      + ID + + 名称 + + 排序 + + + 备注 + + + 状态 + + + 管理 +
      + {{it.id}} + + {{it.name}} + + {{it.sort}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + +
      + {{status-toggle-button model=it}} + {{#link-to 'corp.tiny-app-group.edit' it.id class='btn btn-xs btn-info' title='编辑'}} + + {{/link-to}} + {{op-detail it.id}} +
      +
      +
      + {{pagination-bar}} +
      +
      +
      +{{/main-content}} + diff --git a/web/app/templates/corp/tiny-app/create.hbs b/web/app/templates/corp/tiny-app/create.hbs new file mode 100644 index 0000000..3a2c8e7 --- /dev/null +++ b/web/app/templates/corp/tiny-app/create.hbs @@ -0,0 +1,34 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • + {{#link-to 'corp.tiny-app.list' 1}} + 轻应用列表 + {{/link-to}} +
    • +
    • 新建轻应用
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='corpId' value=model.corpId}} + {{form-input name='name' label='名称'}} + {{form-input name='url' label='URL'}} + {{form-input type='file' name='icon' label='图标'}} + {{form-input-modal-select + listRoute='corp.tiny-app.create.tiny-app-group-select' + idField='groupId' + nameField='groupName' + params=(hash corpId=model.corpId) + btnIcon='fa-object-group' + label='轻应用分组'}} + + {{form-input-spinner name='sort' label='排序'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} + {{outlet}} +{{/main-content}} diff --git a/web/app/templates/corp/tiny-app/edit.hbs b/web/app/templates/corp/tiny-app/edit.hbs new file mode 100644 index 0000000..17dccce --- /dev/null +++ b/web/app/templates/corp/tiny-app/edit.hbs @@ -0,0 +1,35 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • + {{#link-to 'corp.tiny-app.list' 1}} + 轻应用列表 + {{/link-to}} +
    • +
    • 编辑轻应用[{{model.name}}]
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + {{form-input name='url' label='URL'}} + {{form-input type='file' name='icon' label='图标' image='icon'}} + {{form-input-modal-select + listRoute='corp.tiny-app.edit.tiny-app-group-select' + idField='groupId' + nameField='groupName' + params=(hash corpId=model.corpId) + btnIcon='fa-object-group' + label='轻应用分组'}} + + {{form-input-spinner name='sort' label='排序'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} + {{outlet}} +{{/main-content}} diff --git a/web/app/templates/corp/tiny-app/list.hbs b/web/app/templates/corp/tiny-app/list.hbs new file mode 100644 index 0000000..ceb7121 --- /dev/null +++ b/web/app/templates/corp/tiny-app/list.hbs @@ -0,0 +1,112 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'corp.list' 1}} + 企业列表 + {{/link-to}} +
    • +
    • [{{model.corp.name}}]轻应用列表
    • + {{/breadcrumbs-bar}} + +
      +
      + {{#grid-header}} +
    • + {{#link-to 'corp.tiny-app.create'}} + 新建轻应用 + {{/link-to}} +
    • + {{/grid-header}} + +
      + +
      + + + + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + + + + {{/each}} + +
      + ID + + 名称 + + 图标 + + URL + + 分组 + + 排序 + + + 备注 + + + 状态 + + + 管理 +
      + {{it.id}} + + {{it.name}} + + {{image-previews previews=it.icon}} + +
      + + + + +
      +
      + {{it.groupName}} + + {{it.sort}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + +
      + {{status-toggle-button model=it}} + {{#link-to 'corp.tiny-app.edit' it.id class='btn btn-xs btn-info' title='编辑'}} + + {{/link-to}} + {{op-detail it.id}} +
      +
      +
      + {{pagination-bar}} +
      +
      +
      +{{/main-content}} diff --git a/web/app/templates/corp/tiny-app/show.hbs b/web/app/templates/corp/tiny-app/show.hbs new file mode 100644 index 0000000..b1e52f0 --- /dev/null +++ b/web/app/templates/corp/tiny-app/show.hbs @@ -0,0 +1,42 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • 用户详情
    • + {{/breadcrumbs-bar}} + +
      +
      + +
      + {{image-previews previews=model.avatar}} +
      +
      +
      + +
      {{model.name}}
      +
      +
      + +
      {{if (eq 'M' model.gender) '男' '女'}}
      +
      +
      + +
      {{model.mobile}}
      +
      +
      + +
      + + + {{model.email}} + +
      +
      + + +
      +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/index.hbs b/web/app/templates/index.hbs new file mode 100644 index 0000000..c846c91 --- /dev/null +++ b/web/app/templates/index.hbs @@ -0,0 +1 @@ +Index diff --git a/web/app/templates/login.hbs b/web/app/templates/login.hbs new file mode 100644 index 0000000..7724ae5 --- /dev/null +++ b/web/app/templates/login.hbs @@ -0,0 +1 @@ +{{ace-login onLogin=(route-action 'doLogin')}} \ No newline at end of file diff --git a/web/app/templates/op-detail.hbs b/web/app/templates/op-detail.hbs new file mode 100644 index 0000000..59e40d3 --- /dev/null +++ b/web/app/templates/op-detail.hbs @@ -0,0 +1,50 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • 操作详情
    • + {{/breadcrumbs-bar}} + +
      +
      + + {{#if model.createdBy}} +
      + {{#link-to 'user.show' model.createdBy}} + + {{model.creatorName}} + {{/link-to}} +
      + {{/if}} +
      + +
      + +
      {{moment-format model.dateCreated 'YYYY-MM-DD H:mm:ss'}}
      +
      + +
      + + {{#if model.updatedBy}} +
      + {{#link-to 'user.show' model.updatedBy}} + + {{model.editorName}} + {{/link-to}} +
      + {{/if}} +
      + +
      + + {{#if model.dateUpdated}} +
      {{moment-format model.dateUpdated 'YYYY-MM-DD H:mm:ss'}}
      + {{/if}} +
      + + +
      +{{/main-content}} diff --git a/web/app/templates/role/create.hbs b/web/app/templates/role/create.hbs new file mode 100644 index 0000000..99a2658 --- /dev/null +++ b/web/app/templates/role/create.hbs @@ -0,0 +1,22 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'role.list' 1}} + 角色列表 + {{/link-to}} +
    • +
    • 新建角色
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{form-input name='name' label='名称'}} + + {{#form-input-select label='类型' name='type' as |xs|}} + {{#xs.option value='U'}}普通用户{{/xs.option}} + {{#xs.option value='A'}}管理员{{/xs.option}} + {{/form-input-select}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/role/edit.hbs b/web/app/templates/role/edit.hbs new file mode 100644 index 0000000..e7b04b7 --- /dev/null +++ b/web/app/templates/role/edit.hbs @@ -0,0 +1,24 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'role.list' 1}} + 角色列表 + {{/link-to}} +
    • +
    • 编辑角色[{{model.name}}]
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + + {{#form-input-select label='类型' name='type' as |xs|}} + {{#xs.option value='U'}}普通用户{{/xs.option}} + {{#xs.option value='A'}}管理员{{/xs.option}} + {{/form-input-select}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/role/list-select.hbs b/web/app/templates/role/list-select.hbs new file mode 100644 index 0000000..29e1180 --- /dev/null +++ b/web/app/templates/role/list-select.hbs @@ -0,0 +1,61 @@ +{{#modal-list-select title='主题包列表'}} + + + + + + 名称 + + + + 备注 + + + + 预览图 + + + 作者 + + + + 状态 + + + + 创建时间 + + + + 更新时间 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it selectedModel=selectedModel selectedId=selectedId}} + + + {{it.name}} + + + {{it.note}} + + + {{image-previews previews=it.previews}} + + + {{it.author}} + + + {{status-cell model=it}} + + {{date-cell model=it.dateCreated}} + {{date-cell model=it.dateUpdated}} + + {{/each}} + +{{/modal-list-select}} \ No newline at end of file diff --git a/web/app/templates/role/list.hbs b/web/app/templates/role/list.hbs new file mode 100644 index 0000000..f978d77 --- /dev/null +++ b/web/app/templates/role/list.hbs @@ -0,0 +1,70 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • 角色列表
    • + {{/breadcrumbs-bar}} + +
      +
      + {{#grid-header}} +
    • + {{#link-to 'role.create'}} + 新建角色 + {{/link-to}} +
    • + {{/grid-header}} + +
      + +
      + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + {{/each}} + +
      + 名称 + + + 备注 + + + 状态 + + + 管理 +
      + {{editable-cell model=it field='name'}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + + +
      +
      + {{pagination-bar}} +
      +
      +
      +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/splash/create.hbs b/web/app/templates/splash/create.hbs new file mode 100644 index 0000000..3428acf --- /dev/null +++ b/web/app/templates/splash/create.hbs @@ -0,0 +1,19 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'splash.list' 1}} + 启动图列表 + {{/link-to}} +
    • +
    • 新建启动图
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{form-input name='name' label='名称'}} + {{form-input type='file' name='image' label='图片'}} + {{form-input name='duration' label='持续时间(ms)'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/splash/edit.hbs b/web/app/templates/splash/edit.hbs new file mode 100644 index 0000000..5182512 --- /dev/null +++ b/web/app/templates/splash/edit.hbs @@ -0,0 +1,20 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'splash.list' 1}} + 启动图列表 + {{/link-to}} +
    • +
    • 编辑启动图[{{model.name}}]
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称'}} + {{form-input type='file' name='image' label='图片' image='imageUrl'}} + {{form-input name='duration' label='持续时间(ms)'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/splash/list-select.hbs b/web/app/templates/splash/list-select.hbs new file mode 100644 index 0000000..7ceed7b --- /dev/null +++ b/web/app/templates/splash/list-select.hbs @@ -0,0 +1,52 @@ +{{#modal-list-select title='启动图列表'}} + + + + + + 名称 + + + + 持续时间(ms) + + + + 备注 + + + + 预览图 + + + + 状态 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it selectedModel=selectedModel selectedId=selectedId}} + + + {{it.name}} + + + {{it.duration}} + + + {{it.note}} + + + {{image-previews previews=it.imageUrl}} + + + {{status-cell model=it}} + + + {{/each}} + +{{/modal-list-select}} diff --git a/web/app/templates/splash/list.hbs b/web/app/templates/splash/list.hbs new file mode 100644 index 0000000..eeffbeb --- /dev/null +++ b/web/app/templates/splash/list.hbs @@ -0,0 +1,84 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • 启动图列表
    • + {{/breadcrumbs-bar}} + +
      +
      + {{#grid-header}} +
    • + {{#link-to 'splash.create'}} + 新建启动图 + {{/link-to}} +
    • + {{/grid-header}} + +
      + +
      + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + {{/each}} + +
      + 名称 + + + 持续时间(ms) + + + 备注 + + + 预览图 + + + 状态 + + + 管理 +
      + {{editable-cell model=it field='name' allowBlank=false}} + + {{editable-cell model=it field='duration' allowBlank=false}} + + {{editable-cell model=it field='note'}} + + {{image-previews previews=it.imageUrl}} + + {{status-cell model=it}} + + +
      +
      + {{pagination-bar}} +
      +
      +
      +{{/main-content}} diff --git a/web/app/templates/theme/create.hbs b/web/app/templates/theme/create.hbs new file mode 100644 index 0000000..c551849 --- /dev/null +++ b/web/app/templates/theme/create.hbs @@ -0,0 +1,15 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'theme.list' 1}} + 主题包列表 + {{/link-to}} +
    • +
    • 新建主题包
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{form-input type='file' name='pkg' label='主题包'}} + {{form-input-checkbox}} + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/theme/edit.hbs b/web/app/templates/theme/edit.hbs new file mode 100644 index 0000000..5aec17c --- /dev/null +++ b/web/app/templates/theme/edit.hbs @@ -0,0 +1,19 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'theme.list' 1}} + 主题包列表 + {{/link-to}} +
    • +
    • 编辑主题包[{{model.name}}]
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='name' label='名称' readonly="readonly"}} + {{form-input type='file' name='pkg' label='主题包'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/theme/list-select.hbs b/web/app/templates/theme/list-select.hbs new file mode 100644 index 0000000..0680353 --- /dev/null +++ b/web/app/templates/theme/list-select.hbs @@ -0,0 +1,68 @@ +{{#modal-list-select title='主题包列表'}} + + + + + + 名称 + + + + 备注 + + + + 封面图 + + + + 预览图 + + + 作者 + + + + 状态 + + + + 创建时间 + + + + 更新时间 + + + + + + {{#each model.data as |it|}} + + + {{list-select-checkbox model=it selectedModel=selectedModel selectedId=selectedId}} + + + {{it.name}} + + + {{it.note}} + + + {{image-previews previews=it.coverImage}} + + + {{image-previews previews=it.previews}} + + + {{it.author}} + + + {{status-cell model=it}} + + {{date-cell model=it.dateCreated}} + {{date-cell model=it.dateUpdated}} + + {{/each}} + +{{/modal-list-select}} \ No newline at end of file diff --git a/web/app/templates/theme/list.hbs b/web/app/templates/theme/list.hbs new file mode 100644 index 0000000..2bed770 --- /dev/null +++ b/web/app/templates/theme/list.hbs @@ -0,0 +1,90 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • 主题包列表
    • + {{/breadcrumbs-bar}} + +
      +
      + {{#grid-header}} +
    • + {{#link-to 'theme.create'}} + 新建主题包 + {{/link-to}} +
    • + {{/grid-header}} + +
      + +
      + + + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + + + {{/each}} + +
      + 名称 + + + 备注 + + + 封面图 + + + 预览图 + + 作者 + + + 状态 + + + 管理 +
      + {{it.name}} + + {{editable-cell model=it field='note'}} + + {{image-previews previews=it.coverImage}} + + {{image-previews previews=it.previews}} + + {{it.author}} + + {{status-cell model=it}} + + +
      +
      + {{pagination-bar}} +
      +
      +
      +{{/main-content}} \ No newline at end of file diff --git a/web/app/templates/user/create.hbs b/web/app/templates/user/create.hbs new file mode 100644 index 0000000..2cddb54 --- /dev/null +++ b/web/app/templates/user/create.hbs @@ -0,0 +1,18 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'user.list' 1}} + 用户列表 + {{/link-to}} +
    • +
    • 新建用户
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{form-input name='mobile' label='手机号'}} + {{form-input type='password' name='password' label='登录密码'}} + {{form-input type='password' name='confirmPassword' label='重复密码'}} + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + {{form-footer-buttons}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/user/edit.hbs b/web/app/templates/user/edit.hbs new file mode 100644 index 0000000..94e21bb --- /dev/null +++ b/web/app/templates/user/edit.hbs @@ -0,0 +1,21 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • + {{#link-to 'user.list' 1}} + 用户列表 + {{/link-to}} +
    • +
    • 编辑用户[{{model.mobile}}]
    • + {{/breadcrumbs-bar}} + {{#form-content}} + {{input type='hidden' name='id' value=model.id}} + {{form-input name='mobile' label='手机号' readonly='readonly'}} + {{form-input type='password' name='password' label='登录密码'}} + {{form-input type='password' name='confirmPassword' label='重复密码'}} + + {{form-input-checkbox}} + {{form-input name='note' label='备注'}} + + {{form-footer-buttons type='update'}} + {{/form-content}} +{{/main-content}} diff --git a/web/app/templates/user/list.hbs b/web/app/templates/user/list.hbs new file mode 100644 index 0000000..04f9ec7 --- /dev/null +++ b/web/app/templates/user/list.hbs @@ -0,0 +1,76 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • 用户列表
    • + {{/breadcrumbs-bar}} + +
      +
      + {{#grid-header}} +
    • + {{#link-to 'user.create'}} + 新建用户 + {{/link-to}} +
    • + {{/grid-header}} + +
      + +
      + + + + + + + + + + + + + {{#each model.data as |it|}} + + + + + + + + {{/each}} + +
      + ID + + 手机号 + + + 备注 + + + 状态 + + + 管理 +
      + {{it.id}} + + {{it.mobile}} + + {{editable-cell model=it field='note'}} + + {{status-cell model=it}} + + +
      +
      + {{pagination-bar}} +
      +
      +
      +{{/main-content}} diff --git a/web/app/templates/user/show.hbs b/web/app/templates/user/show.hbs new file mode 100644 index 0000000..b1e52f0 --- /dev/null +++ b/web/app/templates/user/show.hbs @@ -0,0 +1,42 @@ +{{#main-content}} + {{#breadcrumbs-bar}} +
    • 用户详情
    • + {{/breadcrumbs-bar}} + +
      +
      + +
      + {{image-previews previews=model.avatar}} +
      +
      +
      + +
      {{model.name}}
      +
      +
      + +
      {{if (eq 'M' model.gender) '男' '女'}}
      +
      +
      + +
      {{model.mobile}}
      +
      +
      + +
      + + + {{model.email}} + +
      +
      + + +
      +{{/main-content}} \ No newline at end of file diff --git a/web/bower.json b/web/bower.json new file mode 100644 index 0000000..507fda2 --- /dev/null +++ b/web/bower.json @@ -0,0 +1,25 @@ +{ + "name": "ambition-crm", + "dependencies": { + "ember": "~2.13.0", + "ember-cli-shims": "0.1.1", + "ember-cli-test-loader": "0.2.2", + "ember-qunit-notifications": "0.1.0", + "bootstrap": "~3.3.5", + "bootbox": "~4.4.0", + "moment": ">= 2.8.0", + "moment-timezone": ">= 0.1.0", + "validate": "~0.9.0", + "jquery-storage-api": "jQuery-Storage-API#^1.9.1", + "font-awesome": "^4.6.3", + "mjolnic-bootstrap-colorpicker": "bootstrap-colorpicker#^2.3.3", + "jquery-colorbox": "^1.6.4", + "fuelux": "^3.15.4", + "jquery.hotkeys": "*", + "bootstrap-wysiwyg": "*", + "bootstrap-treeview": "^1.2.0" + }, + "resolutions": { + "ember": "release" + } +} diff --git a/web/build b/web/build new file mode 100755 index 0000000..368b0fd --- /dev/null +++ b/web/build @@ -0,0 +1,4 @@ +rm -rf tmp dist admin-web admin-web.tgz +ember b -o admin-web -prod +tar czf admin-web.tgz admin-web +rm -rf admin-web diff --git a/web/config/environment.js b/web/config/environment.js new file mode 100644 index 0000000..0c1281b --- /dev/null +++ b/web/config/environment.js @@ -0,0 +1,45 @@ +/* jshint node: true */ + +module.exports = function(environment) { + var ENV = { + modulePrefix: 'ambition-crm', + environment: environment, + baseURL: '/', + locationType: 'hash', + EmberENV: { + FEATURES: { + // Here you can enable experimental features on an ember canary build + // e.g. 'with-controller': true + } + }, + + APP: { + // Here you can pass flags/options to your application instance + // when it is created + } + }; + + if (environment === 'development') { + // ENV.APP.LOG_RESOLVER = true; + // ENV.APP.LOG_ACTIVE_GENERATION = true; + // ENV.APP.LOG_TRANSITIONS = true; + // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; + // ENV.APP.LOG_VIEW_LOOKUPS = true; + } + + if (environment === 'test') { + // Testem prefers this... + ENV.baseURL = '/'; + ENV.locationType = 'none'; + + // keep test console output quieter + ENV.APP.LOG_ACTIVE_GENERATION = false; + ENV.APP.LOG_VIEW_LOOKUPS = false; + + ENV.APP.rootElement = '#ember-testing'; + } + + if (environment === 'production') { + } + return ENV; +}; diff --git a/web/deploy b/web/deploy new file mode 100755 index 0000000..1eab4f4 --- /dev/null +++ b/web/deploy @@ -0,0 +1,29 @@ +#!/bin/sh + +targetServer="pudonghot@101.37.82.164" +projName="admin-web" +targetPath="/data/program/ambition" +tgzFile="${projName}.tgz" +backupDir="${projName}_prev" + +ember b -prod -o "${projName}" + +# package dist +echo "tar czf ${tgzFile} ${projName}" +tar czf "${tgzFile}" "${projName}" + +# remove backup +echo "ssh ${targetServer} rm -rf ${targetPath}/${backupDir} && mv ${targetPath}/${projName} ${targetPath}/${backupDir}" +ssh "${targetServer}" "rm -rf ${targetPath}/${backupDir} && mv ${targetPath}/${projName} ${targetPath}/${backupDir}" + +# copy pakage to server +echo "scp ${tgzFile} pudonghot@101.37.82.164:${targetPath}/" +scp "${tgzFile}" "pudonghot@101.37.82.164:${targetPath}/" + +# extract package +ssh "${targetServer}" "tar xzf ${targetPath}/${tgzFile} -C ${targetPath} && rm -rf ${targetPath}/${tgzFile}" + +# clean up +echo "rm -rf ${projName} ${tgzFile}" +rm -rf "${projName}" "${tgzFile}" + diff --git a/web/ember-cli-build.js b/web/ember-cli-build.js new file mode 100644 index 0000000..60840fe --- /dev/null +++ b/web/ember-cli-build.js @@ -0,0 +1,157 @@ +/* global require, module */ +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const Funnel = require('broccoli-funnel'); +// Babel transpiler +const BabelTranspiler = require('broccoli-babel-transpiler'); + +module.exports = function(defaults) { + const app = new EmberApp(defaults, { + sourcemaps: { + enabled: EmberApp.env() !== 'production', + extensions: ['js', 'coffee'] + }, + outputPaths: { + app: { + html: 'index.html', + css: { + app: '/assets/css/main.css' + }, + js: '/assets/js/main.js' + }, + // only emberjs core + vendor: { + css: '/assets/css/emberjs.css', + js: '/assets/js/emberjs.js' + } + } + }); + + // Use `app.import` to add additional libraries to the generated + // output files. + // + // If you need to use different assets in different + // environments, specify an object as the first parameter. That + // object's keys should be the environment name and the values + // should be the asset to use in that environment. + // + // If the library that you are including contains AMD or ES6 + // modules that you would like to import into your application + // please specify an object with the list of modules as keys + // along with the exports of each module as its value. + + function importVendor(app, resource, outputFile) { + if (/\.js$/.test(resource)) { + app.import(resource, { outputFile: outputFile || 'assets/js/vendor.js'}); + } + else if (/\.css$/.test(resource)) { + app.import(resource, { outputFile: outputFile || 'assets/css/vendor.css'}); + } + } + + let bd = app.bowerDirectory; + importVendor(app, 'bower_components/bootstrap/dist/css/bootstrap.css'); + // importVendor(app, 'bower_components/bootstrap/dist/css/bootstrap-theme.css'); + importVendor(app, 'bower_components/bootstrap/dist/js/bootstrap.js'); + let bootstrapAssets = new Funnel('bower_components/bootstrap/dist/fonts', { + include: ['*.*'], + destDir: '/assets/fonts' + }); + + importVendor(app, 'bower_components/bootbox/bootbox.js'); + importVendor(app, 'bower_components/validate/validate.js'); + importVendor(app, 'bower_components/jquery-storage-api/jquery.storageapi.min.js'); + // FueUX + importVendor(app, 'bower_components/fuelux/js/spinbox.js'); + importVendor(app, 'bower_components/fuelux/js/tree.js'); + + // for image previews + importVendor(app, 'bower_components/jquery-colorbox/jquery.colorbox-min.js'); + importVendor(app, 'bower_components/jquery-colorbox/example1/colorbox.css'); + let jqColorboxAssets = new Funnel('bower_components/jquery-colorbox/example1/images', { + include: ['*.*'], + destDir: '/assets/css/images' + }); + + // font awesome + importVendor(app, 'bower_components/font-awesome/css/font-awesome.min.css'); + let faAssets = new Funnel('bower_components/font-awesome/fonts', { + include: ['*.*'], + destDir: '/assets/fonts' + }); + + // bootstrap color picker + importVendor(app, 'bower_components/mjolnic-bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css'); + importVendor(app, 'bower_components/mjolnic-bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js'); + let bcpAssets = new Funnel('bower_components/mjolnic-bootstrap-colorpicker/dist/img', { + include: ['bootstrap-colorpicker/*.*'], + destDir: '/assets/img' + }); + + // JQuery HotKeys + // importVendor(app, 'bower_components/jquery.hotkeys/jquery.hotkeys.js'); + // Bootstrap WYSIWYG + importVendor(app, 'bower_components/bootstrap-wysiwyg/bootstrap-wysiwyg.js'); + + // Bootstrap TreeView + importVendor(app, 'bower_components/bootstrap-treeview/src/css/bootstrap-treeview.css'); + importVendor(app, 'bower_components/bootstrap-treeview/src/js/bootstrap-treeview.js'); + + // ACE CSS + importVendor(app, 'vendor/ace/css/ace.css'); + importVendor(app, 'vendor/ace/css/ace-fonts.css'); + let aceFonts = new Funnel('vendor/ace/fonts', { + include: ['*.*'], + destDir: '/assets/fonts' + }); + let aceImages = new Funnel('vendor/ace/css/images', { + include: ['**/*.*'], + destDir: '/assets/css/images' + }); + + // ACE JS + // start up + importVendor(app, 'vendor/ace/js/ace/ace.js'); + importVendor(app, 'vendor/ace/js/ace-extra.js'); + importVendor(app, 'vendor/ace/js/ace-elements.js'); + + // importVendor(app, 'vendor/ace/js/ace/elements.fileinput.js'); + // importVendor(app, 'vendor/ace/js/ace/elements.spinner.js'); + // importVendor(app, 'vendor/ace/js/ace/elements.treeview.js'); + // importVendor(app, 'vendor/ace/js/ace/elements.wysiwyg.js'); + + // importVendor(app, 'vendor/ace/js/jquery-ui.custom.js'); + + importVendor(app, 'vendor/ace/js/ace/ace.touch-drag.js'); + + importVendor(app, 'vendor/ace/js/ace/ace.sidebar.js'); + importVendor(app, 'vendor/ace/js/ace/ace.sidebar-scroll-1.js'); + importVendor(app, 'vendor/ace/js/ace/ace.submenu-hover.js'); + + importVendor(app, 'vendor/ace/js/ace/ace.settings.js'); + importVendor(app, 'vendor/ace/js/ace/ace.settings-rtl.js'); + importVendor(app, 'vendor/ace/js/ace/ace.settings-skin.js'); + + importVendor(app, 'vendor/ace/js/ace/ace.widget-box.js'); + importVendor(app, 'vendor/ace/js/ace/ace.widget-on-reload.js'); + importVendor(app, 'vendor/ace/js/ace/ace.searchbox-autocomplete.js'); + + // JQuery Qr Code + importVendor(app, 'vendor/jquery-qrcode/js/jquery-qrcode.js'); + // JQuery Hot Keys + importVendor(app, 'vendor/jquery-hotkeys/js/jquery.hotkeys.min.js'); + + // compile public es6 + const publicJs = BabelTranspiler('public', { + browserPolyfill: true, + filterExtensions: ['js'] + }); + + return app.toTree([bootstrapAssets, + jqColorboxAssets, + faAssets, + bcpAssets, + aceFonts, + aceImages, + publicJs + ]); +}; diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..e23695c --- /dev/null +++ b/web/package.json @@ -0,0 +1,52 @@ +{ + "name": "ambition-crm", + "version": "0.0.1", + "description": "Ambition CRM", + "private": true, + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "build": "ember build", + "start": "ember server", + "test": "ember test" + }, + "repository": "", + "engines": { + "node": ">= 0.10.0" + }, + "author": "Shaun Chyxion", + "license": "MIT", + "devDependencies": { + "broccoli-asset-rev": "^2.4.2", + "broccoli-funnel": "^1.0.1", + "ember-ajax": "0.7.1", + "ember-browserify": "^1.1.11", + "ember-cli": "2.5.0", + "ember-cli-app-version": "^1.0.0", + "ember-cli-babel": "^5.1.6", + "ember-cli-dependency-checker": "^1.2.0", + "ember-cli-htmlbars": "^1.0.3", + "ember-cli-htmlbars-inline-precompile": "^0.3.1", + "ember-cli-inject-live-reload": "^1.4.0", + "ember-cli-jshint": "^1.0.0", + "ember-cli-moment-shim": "1.2.0", + "ember-cli-qunit": "^1.4.0", + "ember-cli-release": "0.2.8", + "ember-cli-sri": "^2.1.0", + "ember-cli-uglify": "^1.2.0", + "ember-export-application-global": "^1.0.5", + "ember-load-initializers": "^0.5.1", + "ember-moment": "6.1.0", + "ember-resolver": "^2.0.3", + "ember-route-action-helper": "2.0.3", + "ember-truth-helpers": "1.1.0", + "emberx-select": "3.0.1", + "glob": "^4.5.3", + "loader.js": "^4.0.1", + "morgan": "^1.7.0", + "valid-url": "^1.0.9" + }, + "dependencies": {} +} diff --git a/web/public/assets/css/ace-ie.css b/web/public/assets/css/ace-ie.css new file mode 100644 index 0000000..e691a7e --- /dev/null +++ b/web/public/assets/css/ace-ie.css @@ -0,0 +1,389 @@ +/* a few ie8/9 specific changes */ +.navbar .navbar-inner , .navbar .btn-navbar { + filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important; +} +.dropdown-menu li > a, +.dropdown-submenu > a { + filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important; +} +.btn { + filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important; +} +.progress , .progress .bar { + filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important; +} + + + + +#cboxLoadingGraphic > .ace-icon, #cboxLoadingGraphic > .fa , #cboxLoadingGraphic > .glyphicon { + display:inline-block; + background:#FFF url('images/loading.gif') no-repeat center; +} +#cboxLoadingGraphic > .ace-icon:before, #cboxLoadingGraphic > .fa:before, #cboxLoadingGraphic > .glyphicon:before { + display:none; +} + +.widget-box-overlay > .loading-icon { + display:inline-block; + width:24px; + height:24px; + background:transparent url('images/loading.gif') no-repeat center; +} +.widget-box-overlay > .loading-icon:before { + display:none; +} + + +@media (max-width: 991px) { + .sidebar.responsive { + display: none; + } + .sidebar.responsive.display { + display: block; + } +} + +.profile-user-info { width: 98%; } +.wysiwyg-toolbar .dropdown-menu { min-width: 260px; } + +.modal.modal-contained { + position: absolute !important; +} + + +/* IE9 and below have an issue with left & right borders and RTL */ +.rtl .sidebar .nav-list li.active > a:before, .rtl .sidebar .nav-list li.active > a:after { + direction: ltr; + text-align: left; +} +.rtl .sidebar .nav-list li > .arrow { + direction: ltr; + text-align: left; +} + + + + +/* following is for ie8 only */ +@media \0screen { + +html { + /* to fix it when inside iframe */ + position: absolute; + width: 100%; +} + +body { + background-color: #E9E9E9; +} + +.sidebar-fixed:before { + left: 0; +} +/* it doesn't show up in ie8, so let's make it visible at least when inside .container */ +.sidebar .nav-list > li:before { + z-index: 4444; + left: -3px; +} + + + +.nav-list > li > .submenu li.open > a > .menu-icon { + display: inline-block; +} + +.ace-nav > li.white-opaque { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#CCFFFFFF', endColorstr='#CCFFFFFF',GradientType=0 ); +} +.ace-nav > li.dark-opaque { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33000000', endColorstr='#33000000',GradientType=0 ); +} + +.ace-nav > li.transparent > a:hover, +.ace-nav > li.transparent > a:focus, +.ace-nav > li.open.transparent > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#19000000', endColorstr='#19000000',GradientType=0 ); +} + +.ace-nav > li.light-10 > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#19FFFFFF', endColorstr='#19FFFFFF',GradientType=0 ); +} +.ace-nav > li.light-10 > a:hover, .ace-nav > li.light-10 > a:focus, .ace-nav > li.open.light-10 > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#CCFFFFFF', endColorstr='#CCFFFFFF',GradientType=0 ) !important; +} + +.ace-nav > li.dark-10 > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#19000000', endColorstr='#19000000',GradientType=0 ); +} +.ace-nav > li.dark-10 > a:hover, .ace-nav > li.dark-10 > a:focus, .ace-nav > li.open.dark-10 > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33000000', endColorstr='#33000000',GradientType=0 ); +} + + + +.navbar .navbar-nav > li > a:hover, +.navbar .navbar-nav > li > a:focus, +.navbar .navbar-nav > li.open > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#19000000', endColorstr='#19000000',GradientType=0 ) !important; +} + + + +.infobox-dark > .badge { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33FFFFFF', endColorstr='#33FFFFFF',GradientType=0 ) !important; +} +.widget-box-overlay { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#55000000', endColorstr='#55000000',GradientType=0 ) !important; +} +.widget-toolbar-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#D8FFFFFF', endColorstr='#D8FFFFFF',GradientType=0 ) !important; +} + +input[type=checkbox].ace , input[type=radio].ace, +label input[type=checkbox].ace , label input[type=radio].ace, +input[type=checkbox].ace.ace-switch , input[type=radio].ace.ace-switch, +label input[type=checkbox].ace.ace-switch , label input[type=radio].ace.ace-switch + { + position: static !important; + width: auto !important; + height: auto !important; + z-index: auto !important; +} + +input[type=checkbox].ace + .lbl, input[type=radio].ace + .lbl, +input[type=checkbox].ace ~ .lbl, input[type=radio].ace ~ .lbl { + min-height: auto !important; + min-width: auto !important; + width: auto !important; + height: auto !important; + position: static !important; +} +input[type=checkbox].ace.ace-switch { + width: auto !important; +} +input[type=checkbox].ace.ace-switch + .lbl, +input[type=checkbox].ace.ace-switch ~ .lbl { + margin: 0 !important; + min-height: auto !important; +} +.checkbox label input.ace[type="checkbox"] + .lbl, +.radio label input.ace[type="radio"] + .lbl, +.checkbox label input.ace[type="checkbox"] ~ .lbl, +.radio label input.ace[type="radio"] ~ .lbl { + margin-left: auto; +} + + +[class*="input-"] { + max-width: none !important; +} + + + +.wizard-steps li:first-child:before { + max-width:100%; + left:0; +} + +.login-layout .widget-box { + display:none; + visibility:visible; + position:static; +} + +.login-layout .widget-box.visible { + display:block; +} +.pricing-box-small:hover { + left:-1px; + top:-3px; +} + + +.ace-thumbnails > li > a > img{ + width:auto !important; +} +.ace-thumbnails > li > :first-child > .text{ + display:none; +} +.ace-thumbnails > li:hover > :first-child > .text{ + display:block; +} +.ace-thumbnails > li > .tools{ + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8C000000', endColorstr='#8C000000', GradientType=0) !important; +} +.ace-thumbnails > li > :first-child > .text{ + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8C000000', endColorstr='#8C000000', GradientType=0) !important; +} + + + +.btn.btn-app.btn-light { + border: 1px solid #D9D9D9; +} +.btn.btn-app.btn-yellow { + border: 1px solid #FEE188; +} + + +.widget-box-overlay { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#55000000', endColorstr='#55000000',GradientType=0 ) !important; +} +.ace-file-overlay { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7F000000', endColorstr='#7F000000',GradientType=0 ) !important; +} +.ace-file-overlay > .ace-icon, .ace-file-overlay > .fa, .ace-file-overlay > .glyphicon { + display: inline-block; + width: 32px; + height: 32px; + background: transparent url('images/loading.gif') no-repeat center; +} +.ace-file-overlay > .ace-icon:before, .ace-file-overlay > .fa:before, .ace-file-overlay > .glyphicon:before { + display: none; +} + + +.grid3 { + width:31%; +} +.grid4 { + width:23%; +} + +.itemdiv.dialogdiv > .body:before{ + display:none; +} + +.fc-event-hori, .fc-event-vert { + border-width: 0 !important; +} + + +[class*="tab-color-"] .nav-tabs > li > a > .ace-icon:first-child, +[class*="tab-color-"] .nav-tabs > li > a > .fa:first-child + { + color: #666 !important; +} + + +.dropdown-preview > .dropdown-menu { + *width: 180px; +} + +/*jquery ui*/ +.ui-datepicker , .ui-autocomplete , .ui-menu{ + border:1px solid #CCC; +} +.ui-widget-overlay { + filter:alpha(opacity=100) !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#44000000', endColorstr='#44000000',GradientType=0 ) !important; +} + + +.message-content { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#CCFFFFFF', endColorstr='#CCFFFFFF',GradientType=0 ) !important; +} + + + +/* semi transparent gritter backgrounds */ +.gritter-item-wrapper { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA323232', endColorstr='#EA323232',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-item-wrapper.gritter-info { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA315185', endColorstr='#EA315185',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-item-wrapper.gritter-error { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA992812', endColorstr='#EA992812',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-item-wrapper.gritter-success { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA59834B', endColorstr='#EA59834B',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-item-wrapper.gritter-warning { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EABE701F', endColorstr='#EABE701F',GradientType=0 ) !important; /* IE6-9 */ +} + +.gritter-item-wrapper.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2F5F5F5', endColorstr='#F2F5F5F5',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-info.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2E8F2FF', endColorstr='#F2E8F2FF',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-error.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2FFEBEB', endColorstr='#F2FFEBEB',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-success.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2EFFAE3', endColorstr='#F2EFFAE3',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-warning.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2FCF8E3', endColorstr='#F2FCF8E3',GradientType=0 ) !important; /* IE6-9 */ +} + + + + +.widget-header .wysiwyg-toolbar .btn-group > .btn , .widget-body .md-header .btn { + background:transparent none !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40FFFFFF', endColorstr='#40FFFFFF',GradientType=0 ) !important; +} +.widget-header .wysiwyg-toolbar .btn-group > .btn.active , .widget-body .md-header .btn-inverse { + background:transparent none !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40000000', endColorstr='#40000000',GradientType=0 ) !important; +} +.widget-body .md-header .btn , .widget-body .md-header .btn-inverse { + display:none; +} + + +.scroller-bar , .scroller-active .scroller-bar { + display: none; +} +.scroller-active:hover .scroller-bar, +.scroller-active .scroller-bar.active, +.scroller-active .scroller-bar:active, +.nav-wrap:hover + .scroller-active .scroller-bar { + display: block; +} + + + +.ace-settings-box { + display: none; +} +.ace-settings-box.open { + display: block; +} + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} + + + +.aside.aside-hidden.aside-vc .modal-dialog { + width: 0; +} +.aside.aside-hidden.aside-hz .modal-dialog { + height: 0; +} + + .btn-group > .btn-app:first-child { + margin-right: 24px; + } + .btn-group > .btn-app.dropdown-toggle:first-child { + margin-right: auto; + } + + + .sidebar .submenu.sub-scroll { + overflow-y: auto; + } +} \ No newline at end of file diff --git a/web/public/assets/css/ace-part2.css b/web/public/assets/css/ace-part2.css new file mode 100644 index 0000000..4da02fa --- /dev/null +++ b/web/public/assets/css/ace-part2.css @@ -0,0 +1,5715 @@ +.timeline-style2 .timeline-info { + width: 100px; +} +.timeline-style2 .timeline-indicator { + font-size: 0; + height: 12px; + line-height: 12px; + width: 12px; + border-width: 1px !important; + background-color: #FFFFFF !important; + position: absolute; + left: 85px; + top: 3px; + opacity: 1; + border-radius: 100%; + display: inline-block; + padding: 0; +} +.timeline-style2 .timeline-date { + display: inline-block; + width: 72px; + text-align: right; + margin-right: 25px; + color: #777; +} +.timeline-style2 .timeline-item .widget-box { + margin-left: 112px; +} +.timeline-style2 .timeline-label { + width: 75px; + text-align: center; + margin-left: 0; + margin-bottom: 10px; + text-align: right; + color: #666; + font-size: 14px; +} +.timeline-time { + text-align: center; + position: static; +} +.dataTables_length select { + width: 70px; + height: 25px; + padding: 2px 3px; +} +.dataTables_length label { + font-weight: normal; +} +.dataTables_filter { + text-align: right; +} +.dataTables_filter input[type=text], +.dataTables_filter input[type=search] { + width: 125px; + height: 18px; + line-height: 18px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + padding: 4px 6px; +} +.dataTables_filter label { + font-weight: normal; +} +.dataTables_info { + font-size: 14px; +} +.dataTables_paginate { + text-align: right; +} +.dataTables_paginate .pagination { + margin: 0 12px; +} +.dataTables_wrapper label { + display: inline-block; + font-size: 13px; +} +.dataTables_wrapper input[type=text], +.dataTables_wrapper input[type=search], +.dataTables_wrapper select { + margin-bottom: 0 !important; + margin: 0 4px; +} +.dataTables_wrapper .row { + margin: 0 !important; +} +.dataTables_wrapper .row:first-child { + padding-top: 12px; + padding-bottom: 12px; + background-color: #EFF3F8; +} +.dataTables_wrapper .row:first-child + .dataTable { + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; +} +.dataTables_wrapper .row:last-child { + border-bottom: 1px solid #e0e0e0; + padding-top: 12px; + padding-bottom: 12px; + background-color: #EFF3F8; +} +.dataTables_wrapper .dataTables_scroll + .row { + border-top: 1px solid #e0e0e0; +} +.dataTable { + margin-bottom: 0; +} +.dataTable > thead > tr > th[class*=sort] { + cursor: pointer; +} +.dataTable > thead > tr > th[class*=sort]:after { + float: right; + display: inline; + content: "\f0dc"; + font-family: FontAwesome; + font-size: 13px; + font-weight: normal; + color: #555; +} +.dataTable > thead > tr > th[class*=sort]:hover { + color: #547ea8; +} +.dataTable > thead > tr > th[class*=sorting_] { + color: #307ecc; +} +.dataTable > thead > tr > th.sorting_desc, +.dataTable > thead > tr > th.sorting_asc { + background-image: -webkit-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: -o-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: linear-gradient(to bottom, #eff3f8 0%, #e3e7ed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeff3f8', endColorstr='#ffe3e7ed', GradientType=0); +} +.dataTable > thead > tr > th.sorting_desc:after { + content: "\f0dd"; + top: -6px; + color: #307ecc; +} +.dataTable > thead > tr > th.sorting_asc:after { + content: "\f0de"; + top: 4px; + color: #307ecc; +} +.dataTable > thead > tr > th.sorting_disabled { + cursor: inherit; +} +.dataTable > thead > tr > th.sorting_disabled:after { + display: none; +} +.dataTables_scrollHead + .dataTables_scrollBody > .dataTable > thead > tr > th:after { + display: none; +} +.dataTables_scrollHeadInner { + width: auto !important; +} +.dataTables_scrollHeadInner > .dataTable > thead > tr > th { + border-bottom-width: 0 !important; +} +.dataTables_borderWrap .dataTables_scrollBody, +.dataTables_borderWrap .dataTables_scrollHead { + border: 1px solid #dddddd !important; + border-width: 0 1px !important; +} +.dataTables_borderWrap .dataTables_scrollBody .table-bordered, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered { + border-left-width: 0; + border-right-width: 0; +} +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > thead > tr > th:first-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > thead > tr > th:first-child, +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > tbody > tr > td:first-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > tbody > tr > td:first-child { + border-left-width: 0; +} +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > thead > tr > th:last-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > thead > tr > th:last-child, +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > tbody > tr > td:last-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > tbody > tr > td:last-child { + border-right-width: 0; +} +table.dataTable { + clear: both; + max-width: none !important; +} +table.dataTable th:active { + outline: none; +} +div.dataTables_scrollHead table { + margin-bottom: 0 !important; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.dataTables_scrollHead table thead tr:last-child th:first-child, +div.dataTables_scrollHead table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody tbody tr:first-child th, +div.dataTables_scrollBody tbody tr:first-child td { + border-top: none; +} +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} +.DTTT_Print .main-content { + margin-left: 0 !important; + margin-right: 0 !important; +} +.DTTT_Print .navbar-fixed-top + .main-container { + padding-top: 0; +} +.tableTools-container { + margin-bottom: 8px; +} +.tableTools-alert.gritter-item-wrapper { + padding: 12px 11px 8px; + z-index: 1999; +} +ul.ColVis_collection { + z-index: 2002; +} +ul.ColVis_collection > li > a { + padding: 0; +} +ul.ColVis_collection > li > a:focus { + outline: none; +} +ul.ColVis_collection > li.ColVis_Special { + border-top: 1px solid #DDD; +} +ul.ColVis_collection > li.ColVis_Special > a { + padding: 6px 11px 7px; + text-align: center; +} +ul.ColVis_collection label { + margin: auto; + padding: 6px 11px 7px; + display: block; + cursor: pointer; +} +div.ColVis_catcher { + position: absolute; + z-index: 1101; +} +div.ColVis_collectionBackground { + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-color: black; + z-index: 1100; +} +.fc-toolbar h2 { + font-size: 22px; + color: #65A0CE; +} +.fc-unthemed th, +.fc-unthemed td, +.fc-unthemed hr, +.fc-unthemed thead, +.fc-unthemed tbody, +.fc-unthemed .fc-row, +.fc-unthemed .fc-popover { + border-color: #BCD4E5; +} +.fc-unthemed .fc-today { + background: #FFC; +} +.fc-event { + border-width: 0; + color: #ffffff; + padding: 1px 1px 2px 2px; + border-radius: 0; +} +.fc-event:not([class*="label-"]) { + background-color: #abbac3; +} +.fc-event.label-yellow { + color: #996633; +} +.fc-event.label-light { + color: #888888; +} +.label-yellow .fc-event { + color: #996633; +} +.label-light .fc-event { + color: #888; +} +[class*="label-"] > .fc-event, +[class*="label-"] > .fc-event > .fc-event-skin.fc-event-head { + background-color: inherit; +} +.fc-event.ui-draggable-dragging { + cursor: move; +} +.fc-event.fc-event-vert, +.fc-event-vert > .fc-event { + padding: 0 0 1px; +} +.fc-day-number { + color: #2E6589; + opacity: 1; + filter: alpha(opacity=100); +} +.fc-widget-header, +.fc .fc-axis { + background: #ECF2F7; + color: #8090A0; +} +.fc-event-hori, +.fc-event-vert { + border-radius: 0 !important; + border-color: transparent; +} +.fc-event-vert .fc-event-content { + padding-left: 1px; + padding-right: 1px; +} +.fc-event-vert .fc-event-time { + padding: 0; +} +.fc-state-default { + border: none; +} +.fc-state-default, +.fc-state-default .fc-button-inner { + border: none; + background-color: #abbac3; + color: #FFF; + background-image: none; + box-shadow: none; + text-shadow: none; + border-radius: 0 !important; + margin-left: 2px; +} +.fc-state-default .fc-button-effect { + display: none; +} +.fc-state-disabled, +.fc-state-disabled .fc-button-inner { + opacity: 0.75; + filter: alpha(opacity=75); + color: #DDD; +} +.fc-state-active, +.fc-state-active .fc-button-inner { + border-color: #4F99C6; + background-color: #6FB3E0; +} +.fc-state-hover, +.fc-state-hover .fc-button-inner { + background-color: #8B9AA3; +} +.fc .fc-button-group > * { + margin: 0 1px 0 0; +} +.external-event { + margin: 6px 0; + padding: 0; + cursor: default; + display: block; + font-size: 13px; + line-height: 28px; + color: #ffffff; +} +.external-event:not([class*="label-"]) { + background-color: #abbac3; +} +.external-event:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.external-event.ui-draggable-dragging { + cursor: move; +} +.external-event.label-yellow { + color: #996633; +} +.external-event.label-light { + color: #888888; +} +.external-event > .ace-icon:first-child { + display: inline-block; + height: 32px; + width: 32px; + text-align: center; + line-height: 30px; + margin-right: 5px; + font-size: 15px; + border-right: 1px solid #FFF; +} +/** +.widget-main { + .fc { + position:relative; + top:-40px; + + > .fc-header { + position:relative; + z-index:10; + } + + .fc-header-space { + padding-left:2px; + } + } + + .fc-header-title > h2 { + font-size: floor(@base-font-size * 1.4); + line-height: 36px; + } + + .fc-content { + top:-14px; + z-index:11; + } + + .fc-button-content { + height:37px; + line-height:36px; + } + +} +*/ +@media only screen and (max-width: 480px) { + .fc-header td { + display: block; + width: auto; + text-align: left; + } +} +.chosen-container + .help-inline { + vertical-align: middle; +} +/** +.chosen-select { + display: inline !important; //for validation plugin to work it must be displayed + visibility: hidden; + opacity: 0; + position: absolute; + z-index: -1; + width: 0; + height: 0; + border-width: 0; +} +*/ +.chosen-container, +[class*="chosen-container"] { + vertical-align: middle; +} +.chosen-container > .chosen-single, +[class*="chosen-container"] > .chosen-single { + line-height: 28px; + height: 32px; + box-shadow: none; + background: #FAFAFA; +} +.chosen-choices { + box-shadow: none !important; +} +.chosen-container-single .chosen-single abbr { + background: none; +} +.chosen-container-single .chosen-single abbr:after { + content: "\f00d"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 13px; + position: absolute; + right: 0; + top: -7px; +} +.chosen-container-single .chosen-single abbr:hover:after { + color: #464646; +} +.chosen-container-single.chosen-disabled .chosen-single abbr:hover:after { + color: #464646; +} +.chosen-single div b { + background: none !important; +} +.chosen-single div b:before { + content: "\f0d7"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 12px; + position: relative; + top: -1px; + left: 1px; +} +.chosen-container-active.chosen-with-drop .chosen-single div b:before { + content: "\f0d8"; +} +.chosen-container-single .chosen-search { + position: relative; +} +.chosen-container-single .chosen-search input[type="text"] { + background: none; + border-radius: 0; + line-height: 28px; + height: 28px; +} +.chosen-container-single .chosen-search:after { + content: "\f002"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 14px; + position: absolute; + top: 8px; + right: 12px; +} +.chosen-container-multi .chosen-choices li.search-field input[type="text"] { + height: 25px; +} +.chosen-container-multi .chosen-choices li.search-choice { + line-height: 16px; + padding-bottom: 4px; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + background: none; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before { + content: "\f00d"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 13px; + position: absolute; + right: 2px; + top: -1px; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { + text-decoration: none; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before { + color: #464646; +} +.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close:before { + color: #464646; +} +.chosen-container .chosen-results-scroll-down span, +.chosen-container .chosen-results-scroll-up span { + background: none; +} +.chosen-container .chosen-results-scroll-down span:before, +.chosen-container .chosen-results-scroll-up span:before { + content: "\f0d7"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 12px; + position: relative; + top: -1px; + left: 1px; +} +.chosen-container .chosen-results-scroll-up span:before { + content: "\f0d8"; +} +.chosen-container-active .chosen-single-with-drop div b:before { + content: "\f0d8"; +} +.chosen-rtl .chosen-search input[type="text"] { + background: none; +} +.chosen-rtl .chosen-search:after { + content: ""; + display: none; +} +.chosen-rtl .chosen-search:before { + content: "\f002"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 14px; + position: absolute; + top: 9px; + left: 12px; +} +/** chosen - etc */ +.chosen-container-single .chosen-single { + border-radius: 0; +} +.chosen-container .chosen-results li.highlighted { + background: #316AC5; + color: #FFF; +} +.chosen-container-single .chosen-drop { + border-radius: 0; + border-bottom: 3px solid #4492C9; + border-color: #4492C9; +} +.chosen-single.chosen-single-with-drop, +.chosen-container-active .chosen-single { + border-color: #4492C9; +} +.form-group.has-error .chosen-single { + border-color: #f2a696 !important; +} +.form-group.has-info .chosen-single { + border-color: #72aec2 !important; +} +.form-group.has-warning .chosen-single { + border-color: #e3c94c !important; +} +.form-group.has-success .chosen-single { + border-color: #9cc573 !important; +} +.chosen-container-active.chosen-with-drop .chosen-single { + border-color: #4492C9; +} +.chosen-container .chosen-drop { + display: none; +} +.chosen-container.chosen-with-drop .chosen-drop { + left: auto; + right: auto; + display: block; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) { + .chosen-rtl .chosen-search input[type="text"], + .chosen-container-single .chosen-single abbr, + .chosen-container-single .chosen-single div b, + .chosen-container-single .chosen-search input[type="text"], + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close, + .chosen-container .chosen-results-scroll-down span, + .chosen-container .chosen-results-scroll-up span { + background-image: none !important; + background-repeat: no-repeat !important; + background-size: auto !important; + } +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice { + background-image: none; + background-color: #91b8d0; + color: #FFFFFF; + display: inline-block; + font-size: 13px; + font-weight: normal; + margin-bottom: 3px; + margin-right: 3px; + padding: 6px 22px 7px 9px; + position: relative; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); + transition: all 0.2s ease 0s; + vertical-align: baseline; + white-space: nowrap; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 18px; + height: auto; + line-height: 25px; + text-align: center; +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before { + color: #FFF; + position: static; + font-size: 11px; +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before { + color: #FFF; +} +.tag-input-style + .chosen-container-multi.chosen-rtl .chosen-choices li.search-choice { + padding: 6px 9px 7px 22px; + margin-left: 0; + margin-right: 3px !important; +} +.tag-input-style + .chosen-container-multi.chosen-rtl .chosen-choices li.search-choice .search-choice-close { + right: auto; + left: 0; +} +.select2-container .select2-choice { + border-radius: 0; + height: 32px; + line-height: 28px; +} +.select2-container.select2-drop-above .select2-choice { + border-radius: 0; +} +.select2-container[class*="input-"] { + max-width: none; +} +.select2-container.input-mini { + min-width: 100px; +} +.select2-container .select2-choice abbr, +.select2-search-choice-close { + background: none; +} +.select2-container .select2-choice abbr:before, +.select2-search-choice-close:before { + font-family: FontAwesome; + font-size: 12px; + display: inline; + content: "\f00d"; + color: #888; + position: relative; + top: -1px; +} +.select2-container .select2-choice abbr:hover:before, +.select2-search-choice-close:hover:before { + color: #555; +} +.select2-container .select2-choice abbr:before { + top: -7px; +} +.select2-search-choice-close:hover { + text-decoration: none !important; +} +.select2-drop { + border-radius: 0; + border: 1px solid #4492C9; + border-width: 0 1px 3px; +} +.select2-drop.select2-drop-above { + border-radius: 0; +} +.select2-container .select2-choice { + background: #FAFAFA none; +} +.select2-container-active .select2-choice, +.select2-container-active .select2-choices, +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices, +.select2-container-multi.select2-container-active .select2-choices { + border-color: #4492C9; +} +.select2-results .select2-highlighted { + background: #316AC5; +} +.select2-container .select2-choice .select2-arrow { + border-radius: 0; + background: transparent none; + border: none; +} +.select2-container .select2-choice .select2-arrow b { + background: none; +} +.select2-container .select2-choice .select2-arrow b:before { + font-family: FontAwesome; + font-size: 12px; + display: inline; + content: "\f0d7"; + color: #888; + position: relative; + left: 5px; +} +.select2-dropdown-open .select2-choice .select2-arrow b:before { + content: "\f0d8"; +} +.select2-search .select2-input { + background: #fff none; + margin-top: 4px; +} +.select2-search:after { + font-family: FontAwesome; + font-size: 14px; + display: inline; + content: "\f002"; + color: #777; + position: relative; + top: 0; + left: -20px; + z-index: 0; +} +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + background-image: none; + background-color: #F6F6F6; +} +.select2-container-multi .select2-choices .select2-search-field input { + border: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + background: none !important; + font-size: 14px; +} +.select2-container-multi .select2-choices .select2-search-choice { + line-height: 16px; + padding-bottom: 4px; +} +.select2-container-active .select2-choice, +.select2-container-active .select2-choices, +.select2-container-multi.select2-container-active .select2-choices, +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + -webkit-box-shadow: none; + box-shadow: none; +} +.select2-search input.select2-active { + background-color: #FFF; + position: relative; + z-index: 1; +} +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice div b { + background-image: none !important; + background-size: auto !important; + } + .select2-search input { + background-position: auto !important; + } +} +.select2-container-active.select2-dropdown-open .select2-choice { + background-image: -webkit-linear-gradient(top, #eeeeee 0%, #ffffff 100%); + background-image: -o-linear-gradient(top, #eeeeee 0%, #ffffff 100%); + background-image: linear-gradient(to bottom, #eeeeee 0%, #ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffffffff', GradientType=0); +} +.select2-container-active.select2-drop-above .select2-choice { + background-image: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); +} +.form-group.has-error .select2-choice, +.form-group.has-error .select2-choices { + border-color: #f2a696 !important; +} +.form-group.has-info .select2-choice, +.form-group.has-info .select2-choices { + border-color: #72aec2 !important; +} +.form-group.has-warning .select2-choice, +.form-group.has-warning .select2-choices { + border-color: #e3c94c !important; +} +.form-group.has-success .select2-choice, +.form-group.has-success .select2-choices { + border-color: #9cc573 !important; +} +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice .select2-arrow b { + background-image: none !important; + background-repeat: no-repeat !important; + background-size: auto !important; + } + .select2-search input { + background-position: auto !important; + } +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice { + background-image: none; + background-color: #91b8d0; + color: #FFFFFF; + display: inline-block; + font-size: 13px; + font-weight: normal; + margin-bottom: 3px; + margin-right: 0; + padding: 6px 22px 7px 9px; + position: relative; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); + transition: all 0.2s ease 0s; + vertical-align: baseline; + white-space: nowrap; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close { + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: auto; + width: 18px; + height: auto; + line-height: 25px; + text-align: center; +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close:before { + color: #FFF; + position: static; + font-size: 11px; +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close:hover:before { + color: #FFF; +} +#colorbox:focus, +#colorbox:active { + outline: none; +} +#cboxTopLeft, +#cboxTopCenter, +#cboxTopRight, +#cboxMiddleLeft, +#cboxMiddleRight, +#cboxBottomLeft, +#cboxBottomCenter, +#cboxBottomRight { + background: none !important; + opacity: 0; +} +#cboxContent { + border: 12px solid #000; + background-color: #FFF; + padding: 7px; +} +#cboxOverlay { + background: rgba(0, 0, 0, 0.95); + background: #000; +} +#cboxCurrent { + left: 64px; + margin-bottom: 4px; + font-size: 14px; +} +#cboxTitle { + margin-bottom: 4px; + font-size: 14px; + color: #777; +} +#cboxNext, +#cboxPrevious, +#cboxClose { + background: none; + text-indent: 0; + width: 26px; + height: 26px; + line-height: 22px; + padding: 0 4px; + text-align: center; + border: 2px solid #999; + border-radius: 16px; + color: #666; + font-size: 12px; + margin-left: 5px; + margin-bottom: 5px; +} +#cboxNext:hover, +#cboxPrevious:hover { + color: #333; + border-color: #666; +} +#cboxContent { + overflow: visible; +} +#cboxClose { + background-color: #000; + border: 2px solid #FFF; + border-radius: 32px; + color: #FFF; + font-size: 21px; + height: 28px; + width: 28px; + padding-bottom: 2px; + margin-left: 0; + right: -14px; + top: -14px; +} +#cboxLoadingOverlay { + background: none !important; +} +#cboxLoadingGraphic { + background: #FFF none !important; + text-align: center; +} +#cboxLoadingGraphic > .ace-icon { + display: inline-block; + background-color: #FFF; + border-radius: 8px; + width: 32px; + height: 32px; + position: relative; + top: 48%; + text-align: center; + vertical-align: middle; + font-size: 24px; + color: #FE7E3E; +} +.ace-spinner { + display: inline-block; +} +.ace-spinner .spinbox-buttons.btn-group-vertical { + min-width: 18px; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn { + font-size: 10px; + padding: 0; + width: 22px; + height: 16px; + line-height: 8px; + margin-left: 0; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn:first-child { + margin-top: 0; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn > .ace-icon { + margin: 0; + padding: 0; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn + .btn { + margin-top: 2px; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn-xs { + height: 14px; + line-height: 7px; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn-lg { + height: 22px; + line-height: 10px; + width: 22px; +} +.ace-spinner .spinbox-buttons > button.btn.spinbox-up:active { + top: -1px; +} +.ace-spinner:not(.touch-spinner) .spinbox-buttons > .btn > .ace-icon { + margin-top: -1px; +} +.ace-spinner.touch-spinner .spinbox-buttons { + margin: 0; + font-size: 0; +} +.ace-spinner.touch-spinner .spinbox-buttons .btn-sm { + width: 32px; +} +.ace-spinner.touch-spinner .spinbox-buttons .btn-xs { + width: 24px; +} +.ace-spinner.touch-spinner .spinbox-buttons .btn-lg { + width: 40px; +} +.ace-spinner.touch-spinner .spinbox-buttons > .btn { + margin: 0 1px !important; +} +.ace-spinner.touch-spinner .spinbox-buttons > .btn-xs { + padding-top: 3px; + padding-bottom: 3px; +} +.ace-spinner.touch-spinner .spinbox-buttons > .btn > .ace-icon { + vertical-align: middle; + display: inline-block; +} +.steps { + list-style: none; + display: table; + width: 100%; + padding: 0; + margin: 0; + position: relative; +} +.steps li { + display: table-cell; + text-align: center; + width: 1%; +} +.steps li .step { + border: 5px solid #ced1d6; + color: #546474; + font-size: 15px; + border-radius: 100%; + background-color: #FFF; + position: relative; + z-index: 2; + display: inline-block; + width: 40px; + height: 40px; + line-height: 30px; + text-align: center; +} +.steps li:before { + display: block; + content: ""; + width: 100%; + height: 1px; + font-size: 0; + overflow: hidden; + border-top: 4px solid #CED1D6; + position: relative; + top: 21px; + z-index: 1; +} +.steps li.last-child:before { + max-width: 50%; + width: 50%; +} +.steps li:last-child:before { + max-width: 50%; + width: 50%; +} +.steps li:first-child:before { + max-width: 51%; + left: 50%; +} +.steps li.active:before, +.steps li.complete:before, +.steps li.active .step, +.steps li.complete .step { + border-color: #5293c4; +} +.steps li.complete .step { + cursor: default; + color: #FFF; + -webkit-transition: transform ease 0.1s; + -o-transition: transform ease 0.1s; + transition: transform ease 0.1s; +} +.steps li.complete .step:before { + display: block; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + line-height: 30px; + text-align: center; + border-radius: 100%; + content: "\f00c"; + background-color: #FFF; + z-index: 3; + font-family: FontAwesome; + font-size: 17px; + color: #87ba21; +} +.steps li.complete:hover .step { + -moz-transform: scale(1.1); + -webkit-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); + border-color: #80afd4; +} +.steps li.complete:hover:before { + border-color: #80afd4; +} +.steps li .title { + display: block; + margin-top: 4px; + max-width: 100%; + color: #949ea7; + font-size: 14px; + z-index: 104; + text-align: center; + table-layout: fixed; + word-wrap: break-word; +} +.steps li.complete .title, +.steps li.active .title { + color: #2b3d53; +} +.step-content { + position: relative; +} +.step-content .step-pane { + display: none; + min-height: 200px; + padding: 4px 8px 12px; +} +.step-content .step-pane.active { + display: block; +} +.wizard-actions { + text-align: right; +} +@media only screen and (max-width: 767px) { + .steps li .step { + width: 30px; + height: 30px; + line-height: 24px; + border-width: 3px; + } + .steps li:before, + .steps li:after { + border-width: 3px; + } + .steps li.complete .step:before { + line-height: 24px; + font-size: 13px; + } + .steps li:before { + top: 16px; + } + .step-content .step-pane { + padding: 4px 4px 6px; + min-height: 150px; + } +} +.tree { + margin: auto; + padding: 0 0 0 9px; + overflow-x: hidden; + overflow-y: auto; + position: relative; +} +.tree:before { + display: inline-block; + content: ""; + position: absolute; + top: -20px; + bottom: 16px; + left: 0; + z-index: 1; + border: 1px dotted #67b2dd; + border-width: 0 0 0 1px; +} +.tree .tree-branch-name, +.tree .tree-item-name { + cursor: pointer; +} +.tree .tree-branch { + width: auto; + min-height: 20px; + cursor: pointer; +} +.tree .tree-branch .tree-branch-header { + position: relative; + height: 20px; + line-height: 20px; +} +.tree .tree-branch .tree-branch-header:hover { + background-color: #F0F7FC; +} +.tree .tree-branch .tree-branch-header .tree-branch-name, +.tree .tree-item .tree-item-name { + display: inline; + z-index: 2; +} +.tree .tree-branch .tree-branch-header > .tree-branch-name > .ace-icon:first-child, +.tree .tree-item > .tree-item-name > .ace-icon:first-child { + display: inline-block; + position: relative; + z-index: 2; + top: -1px; +} +.tree .tree-branch > .tree-branch-header > .tree-branch-name > .tree-label { + margin-left: 2px; +} +.tree .tree-branch > .tree-branch-header > .tree-branch-name > .ace-icon:first-child { + margin: -2px 0 0 -2px; +} +.tree .tree-branch:last-child:after { + display: inline-block; + content: ""; + position: absolute; + z-index: 1; + top: 15px; + bottom: 0; + left: -15px; + border-left: 1px solid #FFF; +} +.tree .tree-branch .tree-branch-children { + margin: 0 0 0 23px; + padding: 0; + position: relative; +} +.tree .tree-branch .tree-branch-children:before { + display: inline-block; + content: ""; + position: absolute; + z-index: 1; + top: -14px; + bottom: 16px; + left: -14px; + border: 1px dotted #67b2dd; + border-width: 0 0 0 1px; +} +.tree .tree-item { + position: relative; + height: 20px; + line-height: 20px; + cursor: pointer; +} +.tree .tree-item:hover { + background-color: #F0F7FC; +} +.tree .tree-item > .tree-item-name > .ace-icon:first-child { + margin-right: 3px; +} +.tree .tree-item > .tree-item-name > .tree-label > .ace-icon:first-child { + margin-left: 3px; + margin-right: 3px; +} +.tree .tree-item > .ace-icon:first-child { + margin-top: -1px; +} +.tree .tree-branch, +.tree .tree-item { + position: relative; + list-style: none; +} +.tree .tree-branch:before, +.tree .tree-item:before { + display: inline-block; + content: ""; + position: absolute; + top: 14px; + left: -13px; + width: 18px; + height: 0; + border-top: 1px dotted #67b2dd; + z-index: 1; +} +.tree .tree-selected { + background-color: rgba(98, 168, 209, 0.1); + color: #6398B0; +} +.tree .tree-selected:hover { + background-color: rgba(98, 168, 209, 0.1); +} +.tree .tree-item, +.tree .tree-branch { + border: 1px solid #FFF; +} +.tree .tree-branch .tree-branch-header { + border-radius: 0; +} +.tree .tree-item, +.tree .tree-branch .tree-branch-header { + margin: 0; + padding: 5px; + color: #4D6878; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.tree .tree-item > .tree-item-name > .ace-icon:first-child { + color: #F9E8CE; + width: 13px; + height: 13px; + line-height: 13px; + font-size: 11px; + text-align: center; + border-radius: 3px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + background-color: #FAFAFA; + border: 1px solid #CCC; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +.tree .tree-selected > .tree-item-name > .ace-icon:first-child { + background-color: #F9A021; + border-color: #F9A021; + color: #FFF; +} +.tree .tree-plus.ace-icon:first-child, +.tree .tree-minus.ace-icon:first-child { + display: inline-block; + font-style: normal; + border: 1px solid #DDD; + vertical-align: middle; + height: 11px; + width: 11px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + text-align: center; + border: 1px solid #8BAEBF; + line-height: 10px; + background-color: #FFF; + position: relative; + z-index: 2; +} +.tree .tree-plus.ace-icon:first-child:before, +.tree .tree-minus.ace-icon:first-child:before { + content: ""; + display: block; + width: 7px; + height: 0; + border-top: 1px solid #4D6878; + position: absolute; + top: 5px; + left: 2px; +} +.tree .tree-plus.ace-icon:first-child:after { + content: ""; + display: block; + height: 7px; + width: 0; + border-left: 1px solid #4D6878; + position: absolute; + top: 2px; + left: 5px; +} +.tree .tree-unselectable .tree-item > .tree-item-name > .tree-label > .ace-icon:first-child { + color: #5084A0; + width: 13px; + height: 13px; + line-height: 13px; + font-size: 10px; + text-align: center; + border-radius: 0; + background-color: transparent; + border: none; + box-shadow: none; +} +.tree .ace-icon[class*="-down"] { + transform: rotate(-45deg); +} +.tree .ace-icon[class*="-download"] { + transform: none; +} +.tree .fa-spin { + height: auto; +} +.tree .tree-loading { + margin-left: 36px; +} +.tree img { + display: inline; + veritcal-align: middle; +} +.gritter-item-wrapper { + background-image: none !important; + box-shadow: 0 2px 10px rgba(50, 50, 50, 0.5); + background: rgba(50, 50, 50, 0.92); +} +.gritter-item-wrapper.gritter-info { + background: rgba(49, 81, 133, 0.92); +} +.gritter-item-wrapper.gritter-error { + background: rgba(153, 40, 18, 0.92); +} +.gritter-item-wrapper.gritter-success { + background: rgba(89, 131, 75, 0.92); +} +.gritter-item-wrapper.gritter-warning { + background: rgba(190, 112, 31, 0.92); +} +.gritter-item-wrapper.gritter-light { + background: rgba(245, 245, 245, 0.95); + border: 1px solid #BBB; +} +.gritter-item-wrapper.gritter-light.gritter-info { + background: rgba(232, 242, 255, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-info .gritter-item { + color: #4A577D; +} +.gritter-item-wrapper.gritter-light.gritter-error { + background: rgba(255, 235, 235, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-error .gritter-item { + color: #894A38; +} +.gritter-item-wrapper.gritter-light.gritter-success { + background: rgba(239, 250, 227, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-success .gritter-item { + color: #416131; +} +.gritter-item-wrapper.gritter-light.gritter-warning { + background: rgba(252, 248, 227, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-warning .gritter-item { + color: #946446; +} +.gritter-item p { + line-height: 1.8; +} +.gritter-top, +.gritter-bottom, +.gritter-item { + background-image: none; +} +.gritter-close { + left: auto; + right: 3px; + background-image: none; + width: 18px; + height: 18px; + line-height: 17px; + text-align: center; + border: 2px solid transparent; + border-radius: 16px; + color: #E17B67; +} +.gritter-close:before { + font-family: FontAwesome; + font-size: 16px; + content: "\f00d"; +} +.gritter-info .gritter-close { + color: #FFA500; +} +.gritter-error .gritter-close, +.gritter-success .gritter-close, +.gritter-warning .gritter-close { + color: #FFEA07; +} +.gritter-close:hover { + color: #FFF !important; +} +.gritter-title { + text-shadow: none; +} +.gritter-light .gritter-item, +.gritter-light .gritter-bottom, +.gritter-light .gritter-top, +.gritter-light .gritter-close { + background-image: none; + color: #444; +} +.gritter-light .gritter-title { + text-shadow: none; +} +.gritter-light .gritter-close:hover { + color: #8A3104 !important; +} +.gritter-center { + position: fixed; + left: 33%; + right: 33%; + top: 33%; +} +@media only screen and (max-width: 767px) { + .gritter-center { + left: 16%; + right: 16%; + top: 30%; + } +} +@media only screen and (max-width: 480px) { + .gritter-center { + left: 30px; + right: 30px; + } +} +@media only screen and (max-width: 320px) { + .gritter-center { + left: 10px; + right: 10px; + } +} +.wysiwyg-editor { + max-height: 250px; + height: 250px; + background-color: #F7F8FA; + border-collapse: separate; + border: 1px solid #BBC0CA; + padding: 4px; + box-sizing: content-box; + overflow-y: scroll; + overflow-x: hidden; + outline: none; +} +.wysiwyg-editor:focus { + background-color: #FFF; +} +.wysiwyg-toolbar { + line-height: 33px; + margin: 0 !important; + position: relative; +} +.wysiwyg-toolbar .dropdown-menu { + text-align: left; +} +.wysiwyg-toolbar .btn-group { + float: none !important; + font-size: 0; +} +.wysiwyg-toolbar .btn-group > .btn { + float: none; + padding-left: 0; + padding-right: 0; + text-align: center; + margin-left: 1px; + /** + &.active:after { + border-color: transparent; + border-style: solid; + border-top-color: inherit; + border-width: 6px 14px; + bottom: -13px; + left: 0; + right: 0; + } + */ +} +.wysiwyg-toolbar .btn-group > .btn > .ace-icon:first-child { + font-size: 14px; + width: 25px; + max-width: 25px; + display: inline-block; + border-width: 1px !important; +} +.wysiwyg-toolbar .btn-group > .btn.dropdown-toggle > .ace-icon:last-child { + margin-right: 4px; +} +.wysiwyg-style1 .btn-group > .btn, +.wysiwyg-style2 .btn-group > .btn, +.wysiwyg-style1 .btn-group > .inline > .btn, +.wysiwyg-style2 .btn-group > .inline > .btn { + margin: 0 !important; + background: #FFF !important; + border-width: 0 !important; + color: #ADB3BE !important; + text-shadow: none !important; +} +.wysiwyg-style1 .btn-group > .btn.active, +.wysiwyg-style2 .btn-group > .btn.active, +.wysiwyg-style1 .btn-group > .inline > .btn.active, +.wysiwyg-style2 .btn-group > .inline > .btn.active { + color: #5B80CE !important; +} +.wysiwyg-style1 .btn-group > .btn.active:after, +.wysiwyg-style2 .btn-group > .btn.active:after, +.wysiwyg-style1 .btn-group > .inline > .btn.active:after, +.wysiwyg-style2 .btn-group > .inline > .btn.active:after { + display: none; +} +.wysiwyg-style1 .btn-group, +.wysiwyg-style2 .btn-group { + position: relative; +} +.wysiwyg-style1 .btn-group:after, +.wysiwyg-style2 .btn-group:after { + display: block; + content: ""; + position: absolute; + left: -2px; + top: 6px; + bottom: 6px; + width: 0; + max-width: 0; + border-left: 1px solid #E1E6EA; +} +.wysiwyg-style1 .btn-group:first-child:after, +.wysiwyg-style2 .btn-group:first-child:after { + display: none; +} +.wysiwyg-style2 { + background-color: #E5E5E5; +} +.wysiwyg-style2 + .wysiwyg-editor { + border-color: #DDD; + background-color: #FFF; + border-top: none; +} +.wysiwyg-style2 .btn-group > .btn, +.wysiwyg-style2 .btn-group > .inline > .btn { + margin: 0 1px 0 0 !important; + background: #FFF !important; + border: none !important; + color: #8D939E !important; + text-shadow: none !important; +} +.wysiwyg-style2 .btn-group > .btn.active, +.wysiwyg-style2 .btn-group > .inline > .btn.active { + color: #FFF !important; + background: #6AAEDF !important; +} +.wysiwyg-style2 .btn-group:after { + display: none; +} +.wysiwyg-toolbar .btn-colorpicker { + width: 24px; + height: 24px; + position: relative; + background: #87B87F; + /* Old browsers */ + background: -moz-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(10%, #cf3e73), color-stop(20%, #ffffff), color-stop(30%, #2283c5), color-stop(40%, #ffffff), color-stop(50%, #87b87f), color-stop(60%, #ffffff), color-stop(70%, #ffb752), color-stop(80%, #ffffff), color-stop(90%, #d15b47), color-stop(100%, #ffffff)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* Opera11.10+ */ + background: -ms-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#CF3E73', endColorstr='#FFB752', GradientType=0); + /* IE6-9 */ + background: linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* W3C */ +} +.wysiwyg-toolbar .dropdown-colorpicker > .dropdown-menu { + top: auto; +} +.wysiwyg-toolbar input[type=file] { + position: fixed; + z-index: -10; + opacity: 0; + max-width: 0; + max-height: 0; + display: block; +} +.wysiwyg-toolbar .wysiwyg-choose-file { + display: inline-block; + width: auto; + margin: 4px auto 0; + padding-left: 5px; + padding-right: 5px; +} +.wysiwyg-toolbar .dropdown-menu input[type=text] { + margin-left: 8px; + margin-bottom: 0; +} +.wysiwyg-toolbar .dropdown-menu input[type=text].form-control { + min-width: 150px; +} +.wysiwyg-toolbar .dropdown-menu .btn { + margin-right: 8px; + margin-left: 8px; +} +.wysiwyg-style1 .btn-colorpicker { + width: 20px; + height: 20px; + margin-left: 4px; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + /* for adding image resize functionality in chrome and safari */ + .wysiwyg-editor img { + display: inline !important; + } + .wysiwyg-editor .ui-wrapper { + border: 1px dotted #D00; + overflow: visible !important; + /* because it's image only, so it's ok */ + display: inline-block !important; + vertical-align: middle; + } + .wysiwyg-editor .ui-wrapper:after { + content: ""; + display: block; + position: absolute; + right: -3px; + bottom: -3px; + width: 7px; + height: 7px; + border: 1px solid #D00; + background-color: #FFF; + z-index: 1; + } +} +/* inside widget */ +.widget-header .wysiwyg-toolbar { + background-color: transparent; +} +.widget-header .wysiwyg-toolbar .btn-group > .btn, +.widget-header .wysiwyg-toolbar .btn-group > .inline > .btn { + border-color: transparent; + background: rgba(255, 255, 255, 0.25) !important; + color: #FFF !important; + min-width: 32px; + border-width: 1px !important; + border-radius: 4px !important; + padding: 2px 1px 4px; +} +.widget-header .wysiwyg-toolbar .btn-group > .btn.active, +.widget-header .wysiwyg-toolbar .btn-group > .inline > .btn.active { + background: rgba(0, 0, 0, 0.25) !important; +} +.widget-body .wysiwyg-editor { + border-width: 0; +} +.wysiwyg-speech-input { + width: 20px !important; + color: transparent !important; + background: transparent none !important; + border-width: 0 !important; + -moz-transform: scale(2.0, 2.0); + -webkit-transform: scale(2.0, 2.0); + -o-transform: scale(2.0, 2.0); + -ms-transform: scale(2.0, 2.0); + transform: scale(2.0, 2.0); + -webkit-box-shadow: none !important; + box-shadow: none !important; + position: absolute; + right: 0; + top: -10px; + cursor: pointer; +} +.wysiwyg-speech-input:focus { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +.widget-body .md-header { + margin-top: -30px; + margin-left: 9px; +} +.widget-body .md-header .btn { + border-color: transparent; + background: rgba(255, 255, 255, 0.25) !important; + color: #FFF !important; + text-align: center; + min-width: 32px; + border-width: 1px !important; + border-radius: 4px !important; + padding: 2px 4px 4px; +} +.widget-body .md-header .btn > .ace-icon { + font-size: 14px; + width: 25px; + max-width: 25px; + display: inline-block; +} +.widget-body .md-header .btn-inverse { + background: rgba(0, 0, 0, 0.25) !important; + padding-right: 5px; + margin-left: 4px; +} +.md-fullscreen-controls { + display: none; +} +.widget-body .md-preview { + padding: 8px; + min-height: 200px; +} +.widget-body .md-input { + border: none !important; + box-shadow: none !important; + display: block; + margin-bottom: 0; + background-color: rgba(48, 126, 204, 0.07); + padding: 8px; + width: 100%; +} +.widget-body .md-input:focus { + background-color: #FFF; + box-shadow: none !important; +} +.editable-container .popover-title { + color: #438EB9; +} +.editable-click { + border-bottom: 1px dashed #BBB; + cursor: pointer; + font-weight: normal; +} +img.editable-click { + border: 1px dotted #BBB; +} +.editable-click:hover { + border-color: #0088CC; + color: #0088CC; +} +img.editable-click:hover { + opacity: 0.75; + filter: alpha(opacity=75); +} +.editable-buttons, +.editable-input { + display: inline-block; +} +.editable-buttons { + margin-left: 1px; +} +.editable-buttons .btn { + padding: 0; + width: 28px; + line-height: 24px; + border-width: 3px; + font-size: 12px; + margin: 0 1px 0 0; +} +.editable-buttons .btn > .ace-icon { + margin: 0; +} +.editable-clear-x { + cursor: pointer; + color: #888; + background: none; +} +.editable-clear-x:hover { + color: #D15B47; +} +.editable-clear-x:before { + display: inline-block; + content: "\f057"; + font-family: FontAwesome; + font-size: 15px; + position: absolute; + margin-top: -9px; + width: 16px; + height: 30px; + line-height: 30px; + text-align: center; +} +.editable-input .ace-spinner { + margin-right: 8px; +} +.editable-input .ace-spinner .spinner-input { + width: 100%; +} +.editable-inline .editable-slider { + margin-top: 10px; + margin-right: 4px; +} +.editable-popup .editable-slider { + display: block; + margin-bottom: 16px; + margin-top: 4px; +} +.editable-slider input[type=text] { + display: none; +} +.editable-slider input[type=range] { + outline: none !important; +} +.editable-input .ace-file-input { + display: block; +} +.editable-image .ace-file-multiple .ace-file-container.selected { + border-color: transparent; +} +.editable-image + .editable-buttons, +.editable-wysiwyg + .editable-buttons { + display: block; + text-align: center; + margin-top: 8px; +} +.editable-wysiwyg { + width: 95%; +} +.editable-wysiwyg .wysiwyg-editor { + height: auto; + overflow-y: hidden; +} +.editableform .input-append.dropdown-menu { + display: none; +} +.editableform .open .input-append.dropdown-menu { + display: block; +} +.editable-container .editableform { + margin-bottom: 10px; +} +.editable-inline .editableform { + margin-bottom: 0; +} +.editableform .control-group { + display: block; +} +.editableform-loading { + background: none; +} +.editableform-loading .ace-icon, +.editableform-loading .progress { + position: relative; + top: 35%; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.datepicker td, +.daterangepicker td, +.datepicker th, +.daterangepicker th { + border-radius: 0 !important; + font-size: 13px; +} +.datepicker td.active, +.daterangepicker td.active, +.datepicker td.active:hover, +.daterangepicker td.active:hover { + background: #2283c5 !important; +} +.datepicker td.active.disabled, +.daterangepicker td.active.disabled, +.datepicker td.active.disabled:hover, +.daterangepicker td.active.disabled:hover { + background: #8b9aa3 !important; +} +.datepicker td, +.datepicker th { + min-width: 32px; +} +.datepicker-dropdown.datepicker-orient-bottom:after, +.datepicker-dropdown.datepicker-orient-bottom:before { + top: auto; +} +.daterangepicker .calendar-date { + border-radius: 0; +} +.datepicker-months .month, +.datepicker-years .year { + border-radius: 0 !important; +} +.datepicker-months .month.active, +.datepicker-years .year.active, +.datepicker-months .month.active:hover, +.datepicker-years .year.active:hover, +.datepicker-months .month.active:focus, +.datepicker-years .year.active:focus, +.datepicker-months .month.active:active, +.datepicker-years .year.active:active { + background-image: none !important; + background-color: #2283c5 !important; +} +.bootstrap-timepicker-widget table td input { + width: 32px; +} +.well .datepicker table tr td.day:hover { + background-color: #7d8893; + color: #FFF; +} +.bootstrap-timepicker-widget table td a:hover { + border-radius: 0; +} +.daterangepicker.opensleft:before, +.daterangepicker.opensright:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); +} +.daterangepicker.opensleft:after, +.daterangepicker.opensright:after { + -moz-border-bottom-colors: #fff; +} +.datepicker-dropdown:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); +} +.datepicker-dropdown:after { + -moz-border-bottom-colors: #fff; +} +.datepicker-dropdown.datepicker-orient-bottom:before { + -moz-border-top-colors: #999; +} +.datepicker-dropdown.datepicker-orient-bottom:after { + -moz-border-top-colors: #FFF; +} +.bootstrap-timepicker-widget.dropdown-menu:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); +} +.bootstrap-timepicker-widget.dropdown-menu:after { + -moz-border-bottom-colors: #FFF; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:before { + -moz-border-top-colors: #999; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:after { + -moz-border-top-colors: #FFF; +} +.bootstrap-datetimepicker-widget [class=btn] { + border-width: 0 !important; + background-color: transparent !important; + color: #7399b8 !important; + text-shadow: none !important; +} +.bootstrap-datetimepicker-widget [class=btn]:hover { + color: #1B6AAA !important; +} +.bootstrap-datetimepicker-widget .btn.btn-primary { + border-width: 3px !important; +} +.bootstrap-datetimepicker-widget .picker-switch { + margin-bottom: 2px; +} +.bootstrap-datetimepicker-widget .picker-switch .btn { + width: 90% !important; + background-color: #EEE !important; + color: #478fca !important; + font-size: 16px; +} +.bootstrap-datetimepicker-widget .picker-switch .btn:hover { + background-color: #e3edf5 !important; +} +.bootstrap-datetimepicker-widget td span { + border-radius: 0; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + color: #555 !important; +} +.ui-slider { + background-color: #D5D5D5; +} +.ui-slider-horizontal { + height: 9px; +} +.ui-slider-vertical { + width: 9px; +} +.ui-slider .ui-slider-handle { + border-radius: 0; + width: 1.45em; + height: 1.45em; + background-color: #F8F8F8; + border: 1px solid; +} +.ui-slider .ui-slider-handle:before, +.ui-slider .ui-slider-handle:after { + display: block; + content: ""; + position: absolute; + top: 4px; + left: 5px; + width: 4px; + height: 8px; + border: 1px solid; + border-width: 0 1px; + border-color: inherit; +} +.ui-slider .ui-slider-handle:after { + left: 8px; + border-width: 0 1px 0 0; +} +.ui-slider .ui-slider-handle:hover { + background-color: #FFF; +} +.ui-slider .ui-slider-handle:hover, +.ui-slider .ui-slider-handle:focus, +.ui-slider .ui-slider-handle:active { + outline: none; + -webkit-box-shadow: 1px 1px 1px 0px rgba(0,0,0,.3); + box-shadow: 1px 1px 1px 0px rgba(0,0,0,.3); +} +.ui-slider-horizontal .ui-slider-handle { + margin-left: -0.725em; + top: -0.4em; +} +.ui-slider-vertical .ui-slider-handle { + left: -0.35em; + margin-bottom: -0.65em; +} +.ui-slider-small.ui-slider-horizontal { + height: 5px; +} +.ui-slider-small.ui-slider-vertical { + width: 5px; +} +.ui-slider-small .ui-slider-handle { + border-radius: 100%; + width: 17px; + height: 17px; + margin-bottom: -0.45em; + left: -0.35em; +} +.ui-slider-small .ui-slider-handle:before, +.ui-slider-small .ui-slider-handle:after { + height: 7px; + left: 5px; + width: 3px; +} +.ui-slider-small .ui-slider-handle:after { + left: 7px; +} +.ui-slider-simple .ui-slider-handle:after, +.ui-slider-simple .ui-slider-handle:before { + display: none; +} +/* colors */ +.ui-slider-range { + background-color: #4aa4ce; +} +.ui-slider-handle { + outline: none !important; + border-color: #4aa4ce !important; +} +.ui-state-disabled.ui-slider { + background-color: #E5E5E5; +} +.ui-state-disabled .ui-slider-range { + background-color: #8daebe; +} +.ui-state-disabled .ui-slider-handle { + -webkit-box-shadow: none !important; + box-shadow: none !important; + border-color: #8daebe !important; +} +.ui-slider-green .ui-slider-range { + background-color: #8bbc67; +} +.ui-slider-green .ui-slider-handle { + border-color: #8bbc67 !important; +} +.ui-slider-green.ui-state-disabled .ui-slider-range { + background-color: #aab0a6; +} +.ui-slider-green.ui-state-disabled .ui-slider-handle { + border-color: #aab0a6 !important; +} +.ui-slider-red .ui-slider-range { + background-color: #d36e6e; +} +.ui-slider-red .ui-slider-handle { + border-color: #d36e6e !important; +} +.ui-slider-red.ui-state-disabled .ui-slider-range { + background-color: #c8acac; +} +.ui-slider-red.ui-state-disabled .ui-slider-handle { + border-color: #c8acac !important; +} +.ui-slider-purple .ui-slider-range { + background-color: #ac68ba; +} +.ui-slider-purple .ui-slider-handle { + border-color: #ac68ba !important; +} +.ui-slider-purple.ui-state-disabled .ui-slider-range { + background-color: #ada7ae; +} +.ui-slider-purple.ui-state-disabled .ui-slider-handle { + border-color: #ada7ae !important; +} +.ui-slider-orange .ui-slider-range { + background-color: #efad62; +} +.ui-slider-orange .ui-slider-handle { + border-color: #efad62 !important; +} +.ui-slider-orange.ui-state-disabled .ui-slider-range { + background-color: #e0c4a4; +} +.ui-slider-orange.ui-state-disabled .ui-slider-handle { + border-color: #e0c4a4 !important; +} +.ui-slider-dark .ui-slider-range { + background-color: #606060; +} +.ui-slider-dark .ui-slider-handle { + border-color: #606060 !important; +} +.ui-slider-dark.ui-state-disabled .ui-slider-range { + background-color: #7a7a7a; +} +.ui-slider-dark.ui-state-disabled .ui-slider-handle { + border-color: #7a7a7a !important; +} +.ui-slider-pink .ui-slider-range { + background-color: #d6487e; +} +.ui-slider-pink .ui-slider-handle { + border-color: #d6487e !important; +} +.ui-slider-pink.ui-state-disabled .ui-slider-range { + background-color: #c38ea2; +} +.ui-slider-pink.ui-state-disabled .ui-slider-handle { + border-color: #c38ea2 !important; +} +.ui-datepicker { + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + height: 26px; + min-width: 32px; + max-width: 32px; + text-align: center; + cursor: pointer; + color: transparent; + line-height: 26px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.ui-datepicker .ui-datepicker-prev .ui-icon, +.ui-datepicker .ui-datepicker-next .ui-icon { + color: transparent; + visibility: hidden; +} +.ui-datepicker .ui-datepicker-prev:hover, +.ui-datepicker .ui-datepicker-next:hover { + background-color: #EEE; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-prev:before, +.ui-datepicker .ui-datepicker-next:before { + display: inline; + font-family: FontAwesome; + font-size: 14px; + content: "\f060"; + color: #393939; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 2px; +} +.ui-datepicker .ui-datepicker-next:before { + content: "\f061"; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 2px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 2px; +} +.ui-datepicker td { + padding: 0; +} +.ui-datepicker td > a, +.ui-datepicker td > span { + display: inline-block; + height: 22px; + min-width: 24px; + max-width: 24px; + text-align: center; + color: #393939; + font-size: 13px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.ui-datepicker td > a:hover { + background-color: #EEE; +} +.ui-datepicker td > a.ui-state-highlight { + background-color: #D5E5EF; +} +.ui-datepicker td > a.ui-state-active { + background-color: #2283c5; + color: #FFF; +} +.ui-datepicker td > a.ui-priority-secondary { + color: #888; +} +.ui-datepicker td > span { + color: #999; +} +.ui-datepicker td .ui-datepicker-title select { + height: 24px; + line-height: 24px; + padding: 2px 3px; +} +.ui-datepicker td .ui-datepicker-buttonpane { + background-color: #DDD; + height: 1px; +} +/* dialog */ +.ui-widget-overlay { + background: rgba(0, 0, 0, 0.25); + opacity: 1 !important; + filter: alpha(opacity=100) !important; + z-index: 1039 !important; +} +.ui-dialog, +.ui-jqdialog { + z-index: 1040 !important; + background-color: #FFF; + padding: 0; + border: 1px solid #DDD; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.ui-dialog .ui-dialog-titlebar, +.ui-jqdialog .ui-dialog-titlebar, +.ui-dialog .ui-jqdialog-titlebar, +.ui-jqdialog .ui-jqdialog-titlebar { + background-color: #F1F1F1; + font-size: 16px; + color: #669fc7; + padding: 0; +} +.ui-dialog .ui-dialog-title, +.ui-jqdialog .ui-dialog-title, +.ui-dialog .ui-jqdialog-title, +.ui-jqdialog .ui-jqdialog-title { + float: none !important; + width: auto; +} +.ui-dialog .widget-header, +.ui-jqdialog .widget-header { + margin: 0; + border-width: 0 0 1px 0; +} +.ui-dialog .ui-dialog-buttonpane, +.ui-jqdialog .ui-dialog-buttonpane, +.ui-dialog .ui-jqdialog-buttonpane, +.ui-jqdialog .ui-jqdialog-buttonpane { + background-color: #eff3f8; + border-top: 1px solid #e4e9ee; +} +.ui-dialog .ui-dialog-buttonpane button, +.ui-jqdialog .ui-dialog-buttonpane button, +.ui-dialog .ui-jqdialog-buttonpane button, +.ui-jqdialog .ui-jqdialog-buttonpane button { + font-size: 14px; +} +.ui-dialog .ui-dialog-titlebar-close, +.ui-jqdialog .ui-dialog-titlebar-close, +.ui-dialog .ui-jqdialog-titlebar-close, +.ui-jqdialog .ui-jqdialog-titlebar-close { + border: none; + background: transparent; + opacity: 0.4; + color: #d15b47; + padding: 0; + top: 50%; + right: 8px !important; + text-align: center; +} +.ui-dialog .ui-dialog-titlebar-close:before, +.ui-jqdialog .ui-dialog-titlebar-close:before, +.ui-dialog .ui-jqdialog-titlebar-close:before, +.ui-jqdialog .ui-jqdialog-titlebar-close:before { + content: "\f00d"; + display: inline; + font-family: FontAwesome; + font-size: 16px; +} +.ui-dialog .ui-dialog-titlebar-close:hover, +.ui-jqdialog .ui-dialog-titlebar-close:hover, +.ui-dialog .ui-jqdialog-titlebar-close:hover, +.ui-jqdialog .ui-jqdialog-titlebar-close:hover { + opacity: 1; + text-decoration: none; + padding: 0; +} +.ui-dialog .ui-dialog-titlebar-close .ui-button-text, +.ui-jqdialog .ui-dialog-titlebar-close .ui-button-text, +.ui-dialog .ui-jqdialog-titlebar-close .ui-button-text, +.ui-jqdialog .ui-jqdialog-titlebar-close .ui-button-text { + text-indent: 0; + visibility: hidden; +} +.ui-dialog .widget-header .ui-dialog-titlebar-close, +.ui-jqdialog .widget-header .ui-dialog-titlebar-close, +.ui-dialog .widget-header .ui-jqdialog-titlebar-close, +.ui-jqdialog .widget-header .ui-jqdialog-titlebar-close { + right: 10px !important; +} +/* accordion */ +.ui-accordion .ui-accordion-header { + color: #478fca; + font-weight: normal; + background-color: #F9F9F9; + border: 1px solid #cdd8e3; + padding: 8px 8px 9px 24px; +} +.ui-accordion .ui-accordion-header:hover { + color: #6ea6cc; + background-color: #f1f8fd; +} +.ui-accordion .ui-accordion-header.ui-state-active { + color: #4c8fbd; + background-color: #eef4f9; + position: relative; + font-weight: bold; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + text-indent: 0; + margin-top: 0; + position: absolute; + left: 10px; + top: 7px; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon:before { + display: inline; + font-family: FontAwesome; + font-size: 15px; + content: "\f0da"; +} +.ui-accordion .ui-accordion-header.ui-state-active .ui-accordion-header-icon:before { + content: "\f0d7"; + font-weight: normal; +} +.ui-accordion .ui-accordion-content { + border: 1px solid #cdd8e3; + border-top-width: 0; + padding: 11px 16px; +} +/* tabs */ +.ui-tabs .ui-tabs-nav { + padding: 0; + border-bottom: 1px solid #C5D0DC; +} +.ui-tabs .ui-tabs-nav li.ui-state-default > a { + background-color: #F9F9F9; + border: 1px solid #C5D0DC; + border-bottom-width: 0; + color: #999; + line-height: 16px; + margin-right: -1px; + z-index: 11; + padding: 8px 12px; + position: relative; + top: 2px; +} +.ui-tabs .ui-tabs-nav li > a:focus { + outline: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active > a { + background-color: #FFF; + border: 1px solid; + border-color: #4C8FBD #C5D0DC transparent; + border-top-width: 2px; + -webkit-box-shadow: 0 -2px 3px 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 -2px 3px 0 rgba(0, 0, 0, 0.15); + color: #576373; + position: relative; + top: 1px; +} +.ui-tabs .ui-tabs-panel { + border: 1px solid #C5D0DC; + border-top-width: 0; + margin: 0; + left: auto; + right: auto; + top: auto; + bottom: auto; +} +/* menu */ +.ui-menu { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + width: 150px; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + padding: 3px; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: auto; +} +.ui-menu .ui-menu-item { + padding: 5px 10px 6px; + color: #444; + cursor: pointer; + display: block; + -webkit-box-sizing: inherit; + -moz-box-sizing: inherit; + box-sizing: inherit; +} +.ui-menu .ui-menu-item .ui-menu-icon { + float: right; + position: relative; + left: auto; + right: 4px; + bottom: auto; + text-indent: 0; +} +.ui-menu .ui-menu-item .ui-menu-icon:before { + content: "\f105"; + font-family: FontAwesome; + font-size: 14px; + display: inline; +} +.ui-menu .ui-menu-item:hover, +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active, +.ui-menu .ui-menu-item:hover > .ui-menu-icon, +.ui-menu .ui-state-focus > .ui-menu-icon, +.ui-menu .ui-state-active > .ui-menu-icon { + text-decoration: none; + background-color: #4f99c6; + color: #FFF; + margin: auto; + font-weight: normal; +} +.ui-menu .ui-menu-item:hover .ui-menu-icon, +.ui-menu .ui-state-focus .ui-menu-icon, +.ui-menu .ui-state-active .ui-menu-icon, +.ui-menu .ui-menu-item:hover > .ui-menu-icon .ui-menu-icon, +.ui-menu .ui-state-focus > .ui-menu-icon .ui-menu-icon, +.ui-menu .ui-state-active > .ui-menu-icon .ui-menu-icon { + color: #FFF; +} +.ui-menu .ui-state-disabled, +.ui-menu .ui-state-disabled .ui-menu-icon { + color: #999; + cursor: default; +} +.ui-menu .ui-state-disabled:hover, +.ui-menu .ui-state-disabled.ui-state-focus, +.ui-menu .ui-state-disabled.ui-state-active, +.ui-menu .ui-state-disabled:hover .ui-menu-icon, +.ui-menu .ui-state-disabled.ui-state-focus .ui-menu-icon, +.ui-menu .ui-state-disabled.ui-state-active .ui-menu-icon { + background-color: #FFF; + color: #999; +} +/* auto complete */ +.ui-autocomplete { + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.ui-autocomplete-category { + padding: 6px; + position: relative; + background-color: #eef4f9; + color: #478fca; + font-weight: bolder; + border: 1px solid #DAE6ED; + border-width: 1px 0; +} +.ui-spinner-button { + border-width: 0 !important; + font-size: 10px; + height: 16px; + line-height: 16px; + width: 18px; + color: #FFFFFF !important; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; + display: inline-block; + position: absolute; + text-align: center; + padding: 0; +} +.ui-spinner-button > .ace-icon { + width: 18px; + display: inline-block; +} +.ui-spinner-up { + top: 0; + right: 5px; +} +.ui-spinner-down { + bottom: 3px; + right: 5px; +} +.ui-spinner-input { + margin-top: 0; + padding: 5px; + max-width: 100px; + font-size: 14px; +} +.ui-tooltip { + background-color: #444; + color: #FFF; +} +.ui-progressbar { + background-color: #f5f5f5; + height: 22px; +} +.ui-progressbar .ui-progressbar-value { + margin: 0; +} +.ui-progressbar .ui-progressbar-value[class="progress-bar"] { + background-color: #2a91d8; +} +.ui-selectmenu-button { + border: 1px solid #aaa; +} +.ui-selectmenu-button[aria-expanded=true] { + border-color: #4492C9; +} +.ui-selectmenu-button span.ui-icon { + text-indent: 0; + margin-top: -10px; +} +.ui-selectmenu-button .ui-icon:before { + content: "\f0d7"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 14px; +} +.ui-jqgrid .ui-jqgrid-view, +.ui-jqgrid .ui-paging-info, +.ui-jqgrid .ui-pg-table, +.ui-jqgrid .ui-pg-selbox { + font-size: 13px; +} +.ui-jqgrid .ui-jqgrid-title { + float: left; + margin: 8px; +} +.ui-jqgrid .ui-jqgrid-title-rtl { + float: right; + margin: 8px; +} +.ui-jqgrid-view > .ui-jqgrid-titlebar { + height: 40px; + line-height: 24px; + color: #FFF; + background: #307ecc; + padding: 0; + font-size: 15px; +} +.ui-jqgrid tr.jqgrow.ui-row-rtl td:last-child { + border-right: none; + border-left: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-jqgrid-hdiv { + background-color: #eff3f8; + border: 1px solid #D3D3D3; + border-width: 1px 0 0 1px; + line-height: 15px; + font-weight: bold; + color: #777; + text-shadow: none; +} +.ui-jqgrid .ui-jqgrid-htable thead { + background-color: #eff3f8; +} +.ui-jqgrid .ui-jqgrid-htable th span.ui-jqgrid-resize { + height: 45px !important; +} +.ui-jqgrid .ui-jqgrid-htable th div { + padding-top: 12px; + padding-bottom: 12px; +} +.ui-jqgrid-hdiv .ui-jqgrid-htable { + border-top: none; +} +.ui-jqgrid-hdiv .ui-jqgrid-htable { + border-top: 1px solid #E1E1E1; +} +.ui-jqgrid-titlebar { + position: relative; + top: 1px; + z-index: 1; +} +.ui-jqgrid tr.jqgrow, +.ui-jqgrid tr.ui-row-ltr, +.ui-jqgrid tr.ui-row-rtl { + border: none; +} +.ui-jqgrid tr.ui-row-ltr td, +.ui-jqgrid tr.ui-row-rtl td { + border-bottom: 1px solid #E1E1E1; + padding: 6px 4px; + border-color: #E1E1E1; +} +.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td { + border-right-color: #C7D3A9; +} +.ui-jqgrid tr.ui-state-highlight.ui-row-rtl td { + border-left-color: #C7D3A9; +} +.ui-jqgrid-btable .ui-widget-content.ui-priority-secondary { + background-image: none; + background-color: #F9F9F9; + opacity: 1; +} +.ui-jqgrid-btable .ui-widget-content.ui-state-hover { + background-image: none; + background-color: #EFF4F7; + opacity: 1; +} +.ui-jqgrid-btable .ui-widget-content.ui-state-highlight { + background-color: #E4EFC9; +} +.ui-jqgrid .ui-jqgrid-pager { + line-height: 15px; + height: 55px; + padding-top: 3px !important; + padding-bottom: 5px !important; + background-color: #eff3f8 !important; + border-bottom: 1px solid #E1E1E1 !important; + border-top: 1px solid #E1E1E1 !important; +} +.ui-jqgrid .ui-pg-input { + font-size: inherit; + width: 24px; + height: 20px; + line-height: 16px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + text-align: center; + padding-top: 1px; + padding-bottom: 1px; +} +.ui-jqgrid .ui-pg-selbox { + display: block; + height: 24px; + width: 60px; + margin: 0; + padding: 1px; + line-height: normal; +} +.ui-jqgrid .ui-jqgrid-htable th div { + overflow: visible; +} +.ui-jqgrid .ui-pager-control { + height: 50px; + position: relative; + padding-left: 9px; + padding-right: 9px; +} +.ui-jqgrid .ui-jqgrid-toppager { + height: auto !important; + background-color: #eff3f8; + border-bottom: 1px solid #E1E1E1 !important; +} +.ui-jqgrid .jqgrow .editable { + max-width: 90%; + max-width: calc(92%) !important; +} +.ui-pg-table .navtable .ui-corner-all { + border-radius: 0; +} +.ui-jqgrid .ui-pg-button:hover { + padding: 1px; +} +.ui-jqgrid .ui-pg-button .ui-separator { + margin-left: 4px; + margin-right: 4px; + border-color: #C9D4DB; +} +.ui-jqgrid .ui-jqgrid-btable { + border-left: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-jqgrid-bdiv { + border-top: 1px solid #E1E1E1; +} +.ui-jqgrid .loading { + position: absolute; + top: 45%; + left: 45%; + width: auto; + height: auto; + z-index: 101; + padding: 6px; + margin: 5px; + text-align: center; + font-weight: bold; + font-size: 12px; + background-color: #FFF; + border: 2px solid #8EB8D1; + color: #E2B018; +} +.ui-jqgrid .ui-search-toolbar { + border-top: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-jqgrid-labels { + border-bottom: none; + background: #F2F2F2; + background-image: -webkit-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: -o-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: linear-gradient(to bottom, #f8f8f8 0%, #ececec 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#ffececec', GradientType=0); + padding: 0 !important; + border-left: 1px solid #E1E1E1 !important; +} +.ui-jqgrid .ui-jqgrid-labels th { + border-right: 1px solid #E1E1E1 !important; + text-align: left !important; +} +/* checkbox container */ +.ui-jqgrid-labels th[id*="_cb"]:first-child > div { + padding-top: 0; + text-align: center !important; +} +.ui-jqgrid-sortable { + padding-left: 4px; + font-size: 13px; + color: #777; + font-weight: bold; +} +.ui-jqgrid-sortable:hover { + color: #547ea8; +} +th[aria-selected=true] { + background-image: -webkit-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: -o-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: linear-gradient(to bottom, #eff3f8 0%, #e3e7ed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeff3f8', endColorstr='#ffe3e7ed', GradientType=0); +} +th[aria-selected=true] .ui-jqgrid-sortable { + color: #307ecc; +} +.ui-jqgrid .ui-icon { + text-indent: 0; + color: #307ecc; + float: none; + right: 2px; +} +.rtl .ui-jqgrid .ui-icon { + right: auto; + left: 2px; +} +.ui-jqgrid .ui-icon.ui-state-disabled { + color: #BBB; +} +.ui-jqgrid .ui-icon.ui-state-disabled:hover { + padding: 0; +} +.ui-grid-ico-sort:before { + display: inline; + content: "\f0d7"; + font-family: FontAwesome; + font-size: 12px; +} +.ui-icon-asc:before { + content: "\f0d8"; +} +.ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon { + display: inline-block; + padding: 0; + width: 24px; + height: 24px; + line-height: 22px; + text-align: center; + position: static; + float: none; + margin: 0 2px !important; + color: #808080; + border: 1px solid #CCC; + background-color: #FFF; + border-radius: 100%; +} +.ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon:hover { + color: #699AB5; + border-color: #699AB5; +} +.ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon:before { + width: 20px; + text-align: center; + display: inline-block; +} +.ui-pg-table > tbody > tr > .ui-pg-button.ui-state-disabled .ui-icon { + color: #B0B0B0; + background-color: #F7F7F7; + border-color: #DDD; + -moz-transform: scale(0.9); + -webkit-transform: scale(0.9); + -o-transform: scale(0.9); + -ms-transform: scale(0.9); + transform: scale(0.9); +} +.ui-jqgrid-btable input, +.ui-jqgrid-btable textarea, +.ui-jqgrid-btable select { + padding: 2px; + width: auto; + max-width: 100%; + margin-bottom: 0; +} +.ui-jqgrid-btable select { + padding: 1px; + height: 25px; + line-height: 25px; +} +.ui-pg-div .ui-icon { + display: inline-block; + width: 18px; + float: none; + position: static; + text-align: center; + opacity: 0.85; + -webkit-transition: all 0.12s; + -o-transition: all 0.12s; + transition: all 0.12s; + margin: 0 1px; + vertical-align: middle; + cursor: pointer; + font-size: 17px; +} +.ui-pg-div .ui-icon:hover { + -moz-transform: scale(1.2); + -webkit-transform: scale(1.2); + -o-transform: scale(1.2); + -ms-transform: scale(1.2); + transform: scale(1.2); + opacity: 1; + position: static; + margin: 0 1px; +} +.ui-pg-div .ui-icon:before { + font-family: FontAwesome; + display: inline; +} +.ui-jqgrid .ui-icon-pencil { + color: #478FCA; +} +.ui-jqgrid .ui-icon-pencil:before { + content: "\f040"; +} +.ui-jqgrid .ui-icon-trash { + color: #DD5A43; +} +.ui-jqgrid .ui-icon-trash:before { + content: "\f014"; +} +.ui-jqgrid .ui-icon-disk { + color: #69AA46; +} +.ui-jqgrid .ui-icon-disk:before { + content: "\f00c"; +} +.ui-jqgrid .ui-icon-cancel { + color: #DD5A43; +} +.ui-jqgrid .ui-icon-cancel:before { + content: "\f00d"; +} +.ui-jqdialog-content, +.ui-jqdialog .ui-jqdialog-content { + font-size: 13px; + padding: 4px 0 0; +} +.ui-jqdialog-content .formdata, +.ui-jqdialog .ui-jqdialog-content .formdata { + font-size: 13px; + padding: 6px 12px; +} +.ui-jqdialog-content .form-view-data, +.ui-jqdialog .ui-jqdialog-content .form-view-data { + vertical-align: middle; + font-size: 13px; +} +.ui-jqdialog-content[id*="alertcnt_"], +.ui-jqdialog .ui-jqdialog-content[id*="alertcnt_"] { + padding: 8px 11px; +} +.ui-jqdialog-content .CaptionTD { + font-size: 12px; + text-align: right; + color: #666; +} +.ui-jqdialog-content .FormData { + border-bottom: 1px dotted #E8E8E8; +} +.ui-jqdialog-content .FormData:last-child { + border-bottom: none; +} +.ui-jqdialog-content .FormData > td { + padding-top: 6px; + padding-bottom: 6px; +} +.ui-jqdialog-content input.FormElement { + width: auto; +} +.ui-jqdialog-content select.FormElement { + padding: 1px; + height: 25px; + line-height: 25px; + width: auto; +} +.ui-jqdialog-content td.EditButton { + padding: 8px; +} +.EditTable { + background-color: #eff3f8; + border-top: 1px solid #D6E1EA !important; + padding: 8px; +} +.EditTable tr:first-child { + display: none; +} +.EditTable .navButton .fm-button { + float: none !important; + width: auto !important; + margin: 1px 1px 2px !important; + background-color: transparent; + border-radius: 100%; +} +.EditTable .navButton .fm-button:hover { + background-color: transparent; +} +.EditTable .navButton .fm-button:focus { + outline: none; +} +.EditTable .navButton .fm-button .ace-icon { + display: inline-block; + color: #999; + border: 1px solid #AAA; + width: 26px; + height: 26px; + line-height: 26px; + text-align: center; + border-radius: 100%; + background-color: #FFF; +} +.EditTable .navButton .fm-button:hover .ace-icon { + color: #699AB5; + border-color: #699AB5; +} +.EditTable .navButton .fm-button.ui-state-disabled .ace-icon, +.EditTable .navButton .fm-button.ui-state-disabled:hover .ace-icon { + color: #BBB; + border-color: #CCC; + -moz-transform: scale(0.88); + -webkit-transform: scale(0.88); + -o-transform: scale(0.88); + -ms-transform: scale(0.88); + transform: scale(0.88); +} +.FormGrid .EditTable { + background-color: #FFF; + border-top: none !important; + padding: 0; +} +.FormGrid .EditTable tr:first-child { + display: none; +} +.ui-jqgrid .ui-jqgrid-view input, +.ui-jqgrid .ui-jqgrid-view select, +.ui-jqgrid .ui-jqgrid-view textarea, +.ui-jqgrid .ui-jqgrid-view button { + font-size: 13px; +} +.ui-jqdialog-content .searchFilter select { + padding: 1px; + height: 26px; + line-height: 26px; + width: auto; + max-width: 95%; + margin-bottom: 0; +} +.ui-jqdialog-content .searchFilter .input-elm { + margin-bottom: 0; + height: 18px; + line-height: 18px; + width: 95% !important; + padding-left: 1px; + padding-right: 1px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.ui-jqdialog-content .searchFilter table { + margin-left: 4px; +} +.ui-jqdialog-content .searchFilter tr td { + padding: 5px 0; +} +.ui-jqdialog-content .searchFilter .add-group, +.ui-jqdialog-content .searchFilter .add-rule, +.ui-jqdialog-content .searchFilter .delete-group { + margin-left: 4px !important; + font-size: 15px !important; +} +.ui-jqdialog-content .searchFilter .delete-rule { + border: none; + background-color: #FFF; + color: #D15B47; + font-size: 20px; + width: 22px; + line-height: 10px; + padding: 0; + text-shadow: none !important; + display: inline-block; + -webkit-transition: all 0.1s; + -o-transition: all 0.1s; + transition: all 0.1s; + opacity: 0.85; +} +.ui-jqdialog-content .searchFilter .delete-rule:hover { + -moz-transform: scale(1.1); + -webkit-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); + color: #B74635; + opacity: 1; +} +.ui-jqdialog-content .searchFilter .queryresult { + margin-bottom: 11px; +} +.ui-jqdialog-content .searchFilter .queryresult td.query { + padding: 6px 11px; + border: 1px solid #E1E1E1; + background-color: #EEEEEE; +} +.ui-jqdialog-content .searchFilter .queryresult td.query:empty { + display: none; +} +.ui-state-error { + background-color: #f2dede; + border: 1px solid #ebccd1; + color: #a94442; + margin: 4px 4px 8px; + padding: 6px 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + font-size: 13px; +} +.ui-jqdialog .ui-widget-header { + background-image: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); + border-image: none; + border-bottom: 1px solid solid; + color: #669FC7; + min-height: 38px; + position: relative; +} +.ui-jqdialog .ui-widget-header .ui-jqdialog-title { + line-height: 38px; + margin: 0; + padding: 0; + padding-left: 12px; + text-align: left; +} +.widget-header .ui-jqdialog-title { + padding-left: 0 !important; + padding-right: 0 !important; +} +.ui-jqdialog .ui-widget-header .widget-header { + border-bottom: none; +} +.ui-jqdialog .ui-jqdialog-titlebar { + border-bottom: 1px solid #DDD !important; +} +.fm-button { + margin: 0 4px; +} +.fm-button:not(.btn) { + background-color: #abbac3; + border-radius: 0 ; + box-shadow: none; + color: #FFFFFF ; + cursor: pointer; + display: inline-block; + font-size: 13px; + line-height: 28px; + padding: 0 12px 1px; + margin: 0 8px; + position: relative; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + -webkit-transition: all 0.15s; + -o-transition: all 0.15s; + transition: all 0.15s; + vertical-align: middle; +} +.fm-button.ui-state-default:hover { + background-color: #8b9aa3; +} +.ui-jqgrid .ui-jqgrid-htable .ui-search-toolbar th { + height: 30px; + padding-top: 2px; + white-space: normal; +} +.ui-jqgrid .ui-jqgrid-htable .ui-search-toolbar th div { + padding-top: 0; + padding-bottom: 0; + height: 30px; + line-height: 26px; +} +.ui-jqgrid .ui-jqgrid-titlebar-close { + top: 10%; + height: auto; + padding: 0; + margin: 2px 8px 0 0; + text-align: center; + border-radius: 4px; +} +.ui-jqgrid .ui-jqgrid-titlebar-close:hover { + background-color: rgba(255, 255, 255, 0.2); +} +.ui-jqgrid .ui-jqgrid-titlebar-close .ui-icon:before { + display: inline-block; + font-family: FontAwesome; + content: "\f077"; + color: #FFF; +} +.ui-jqgrid .ui-jqgrid-titlebar-close .ui-icon-circle-triangle-s:before { + content: "\f078"; +} +.ui-jqgrid .tree-wrap-ltr { + margin: 0 4px; + float: none; + display: inline; +} +.ui-jqgrid .tree-wrap-rtl { + margin: 2px 4px 0; +} +.ui-jqgrid .ui-subgrid { + border-bottom: 1px solid #E1E1E1; + background-color: #F6FAFF; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid-btable { + background-color: #FFF; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv { + background-color: transparent; + margin-top: 4px; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable .ui-jqgrid-labels { + border-bottom: 1px solid #E1E1E1; + background: #F1F1F1; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th[aria-selected="true"] { + background: #E5E9EF; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th .ui-jqgrid-sortable { + font-size: 12px; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th div { + padding-top: 8px; + padding-bottom: 8px; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th span.ui-jqgrid-resize { + height: 36px !important; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-bdiv { + height: auto !important; + max-height: 150px; + margin-bottom: 4px; + border-top-width: 0; + border-bottom: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-sgcollapsed > a:hover { + text-decoration: none; +} +@media only screen and (max-width: 767px) { + .ui-jqgrid .ui-jqgrid-pager { + height: 90px; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control { + height: 85px; + padding-top: 9px; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td { + vertical-align: top; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center { + width: 0 !important; + position: static; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center > .ui-pg-table { + margin: 36px auto 0; + position: absolute; + right: 0; + left: 0; + text-align: center; + } +} +@media only screen and (max-width: 767px) and (-webkit-min-device-pixel-ratio: 0) { + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center > .ui-pg-table { + width: 300px; + } +} +.dd { + position: relative; + display: block; + margin: 0; + padding: 0; + max-width: 600px; + list-style: none; + line-height: 20px; +} +.dd-list { + display: block; + position: relative; + margin: 0; + padding: 0; + list-style: none; +} +.dd-list .dd-list { + padding-left: 30px; +} +.dd-collapsed .dd-list { + display: none; +} +.dd-item, +.dd-empty, +.dd-placeholder { + display: block; + position: relative; + margin: 0; + padding: 0; + min-height: 20px; + line-height: 20px; +} +.dd-handle, +.dd2-content { + display: block; + min-height: 38px; + margin: 5px 0; + padding: 8px 12px; + background: #F8FAFF; + border: 1px solid #DAE2EA; + color: #7C9EB2; + text-decoration: none; + font-weight: bold; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.dd-handle:hover, +.dd2-content:hover { + color: #438EB9; + background: #F4F6F7; + border-color: #DCE2E8; +} +.dd-handle[class*="btn-"], +.dd2-content[class*="btn-"] { + color: #FFF; + border: none; + padding: 9px 12px; +} +.dd-handle[class*="btn-"]:hover, +.dd2-content[class*="btn-"]:hover { + opacity: 0.85; + color: #FFF; +} +.dd2-handle + .dd2-content, +.dd2-handle + .dd2-content[class*="btn-"] { + padding-left: 44px; +} +.dd-handle[class*="btn-"]:hover, +.dd2-content[class*="btn-"] .dd2-handle[class*="btn-"]:hover + .dd2-content[class*="btn-"] { + color: #FFF; +} +.dd-item > button:hover ~ .dd-handle, +.dd-item > button:hover ~ .dd2-content { + color: #438EB9; + background: #F4F6F7; + border-color: #DCE2E8; +} +.dd-item > button:hover ~ .dd-handle[class*="btn-"], +.dd-item > button:hover ~ .dd2-content[class*="btn-"] { + opacity: 0.85; + color: #FFF; +} +.dd2-handle:hover ~ .dd2-content { + color: #438EB9; + background: #F4F6F7; + border-color: #DCE2E8; +} +.dd2-handle:hover ~ .dd2-content[class*="btn-"] { + opacity: 0.85; + color: #FFF; +} +.dd2-item.dd-item > button { + margin-left: 34px; +} +.dd-item > button { + display: block; + position: relative; + z-index: 1; + cursor: pointer; + float: left; + width: 25px; + height: 20px; + margin: 5px 1px 5px 5px; + padding: 0; + text-indent: 100%; + white-space: nowrap; + overflow: hidden; + border: 0; + background: transparent; + font-size: 12px; + line-height: 1; + text-align: center; + font-weight: bold; + top: 4px; + left: 1px; + color: #707070; +} +.dd-item > button:before { + font-family: FontAwesome; + content: '\f067'; + display: block; + position: absolute; + width: 100%; + text-align: center; + text-indent: 0; + font-weight: normal; + font-size: 14px; +} +.dd-item > button[data-action="collapse"]:before { + content: '\f068'; +} +.dd-item > button:hover { + color: #707070; +} +.dd-item.dd-colored > button, +.dd-item.dd-colored > button:hover { + color: #EEE; +} +.dd-placeholder, +.dd-empty { + margin: 5px 0; + padding: 0; + min-height: 30px; + background: #F0F9FF; + border: 2px dashed #BED2DB; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.dd-empty { + border-color: #AAA; + border-style: solid; + background-color: #e5e5e5; +} +.dd-dragel { + position: absolute; + pointer-events: none; + z-index: 999; + opacity: 0.8; +} +.dd-dragel > li > .dd-handle { + color: #4B92BE; + background: #F1F5FA; + border-color: #D6E1EA; + border-left: 2px solid #777; + position: relative; +} +.dd-dragel > li > .dd-handle[class*="btn-"] { + color: #FFF; +} +.dd-dragel > .dd-item > .dd-handle { + margin-top: 0; +} +.dd-list > li[class*="item-"] { + border-width: 0; + padding: 0; +} +.dd-list > li[class*="item-"] > .dd-handle { + border-left: 2px solid; + border-left-color: inherit; +} +.dd-list > li > .dd-handle .sticker { + position: absolute; + right: 0; + top: 0; +} +.dd2-handle, +.dd-dragel > li > .dd2-handle { + left: 0; + top: 0; + width: 36px; + margin: 0; + border-width: 1px 1px 0 0; + text-align: center; + padding: 0 !important; + line-height: 38px; + height: 38px; + background: #EBEDF2; + border: 1px solid #DEE4EA; + cursor: pointer; + overflow: hidden; + position: absolute; + z-index: 1; +} +.dd2-handle:hover, +.dd-dragel > li > .dd2-handle { + background: #E3E8ED; +} +.dd2-content[class*="btn-"] { + text-shadow: none !important; +} +.dd2-handle[class*="btn-"] { + text-shadow: none !important; + background: rgba(0, 0, 0, 0.1) !important; + border-right: 1px solid #EEE; +} +.dd2-handle[class*="btn-"]:hover { + background: rgba(0, 0, 0, 0.08) !important; +} +.dd-dragel .dd2-handle[class*="btn-"] { + border-color: transparent; + border-right-color: #EEE; +} +.dd2-handle.btn-yellow { + text-shadow: none !important; + background: rgba(0, 0, 0, 0.05) !important; + border-right: 1px solid #FFF; +} +.dd2-handle.btn-yellow:hover { + background: rgba(0, 0, 0, 0.08) !important; +} +.dd-dragel .dd2-handle.btn-yellow { + border-color: transparent; + border-right-color: #FFF; +} +.dd-item > .dd2-handle .drag-icon { + display: none; +} +.dd-dragel > .dd-item > .dd2-handle .drag-icon { + display: inline; +} +.dd-dragel > .dd-item > .dd2-handle .normal-icon { + display: none; +} +.dropzone { + border-radius: 0; + border: 1px solid rgba(0, 0, 0, 0.06); +} +.dropzone .dz-default.dz-message { + background-image: none; + font-size: 24px; + text-align: center; + line-height: 32px; + left: 0; + width: 100%; + margin-left: auto; +} +.dropzone .dz-default.dz-message span { + display: inline; + color: #555; +} +.dropzone .dz-default.dz-message span .upload-icon { + opacity: 0.7; + filter: alpha(opacity=70); + margin-top: 8px; + cursor: pointer; +} +.dropzone .dz-default.dz-message span .upload-icon:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark, +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark { + background-image: none; + background-color: rgba(255, 255, 255, 0.8); + border-radius: 100%; + text-align: center; + line-height: 35px; +} +.dropzone .dz-preview .dz-error-mark:before, +.dropzone-previews .dz-preview .dz-error-mark:before { + font-family: FontAwesome; + font-size: 30px; + color: #DB6262; + content: "\f00d"; +} +.dropzone .dz-preview .dz-success-mark:before, +.dropzone-previews .dz-preview .dz-success-mark:before { + font-family: FontAwesome; + font-size: 30px; + color: #6DA552; + content: "\f00c"; +} +.dropzone a.dz-remove, +.dropzone-previews a.dz-remove { + border: none; + border-radius: 0; + color: #FFF; + background: #D15B47; + cursor: pointer; +} +.dropzone a.dz-remove:hover, +.dropzone-previews a.dz-remove:hover { + color: #FFF; + background: #B74635; +} +.dropzone .progress, +.dropzone-previews .progress { + margin-bottom: 0; +} +.dropzone .dz-preview.dz-success .progress, +.dropzone-previews .dz-preview.dz-success .progress, +.dropzone .dz-preview.dz-error .progress, +.dropzone-previews .dz-preview.dz-error .progress { + display: none; +} +input.typeahead, +input.tt-query, +input.tt-hint { + min-width: 175px; + font-size: 16px; + line-height: 24px; + border: 1px solid #CCC; + border-radius: 0; + outline: none; +} +input.tt-hint, +.form-group input.tt-hint { + background-color: #FFF !important; + color: #B0B0B0 !important; +} +.tt-dropdown-menu { + text-align: left; + position: absolute; + left: 0 !important; + right: 0 !important; + min-width: 175px; + margin-top: 2px; + padding: 8px 0; + background-color: #FFF; + border: 1px solid #D0D0D0; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.tt-suggestion { + padding: 3px 12px 4px; + font-size: 16px; + line-height: 24px; +} +.tt-suggestion.tt-cursor { + color: #FFF; + background-color: #4F99C6; + cursor: pointer; +} +.tt-suggestion p { + margin: 0; +} +input.typeahead.scrollable ~ .tt-dropdown-menu { + max-height: 200px; + overflow-y: auto; +} +.btn-group > .btn.moveall:first-child, +.btn-group > .btn.remove:first-child { + margin: 0; +} +.btn-group > .btn.moveall:first-child + .btn.move, +.btn-group > .btn.remove:first-child + .btn.removeall { + margin: 0; +} +.bootstrap-duallistbox-container .info { + font-size: 12px; +} +.bootstrap-duallistbox-container .clear1, +.bootstrap-duallistbox-container .clear2 { + font-size: 12px; +} +.multiselect-container > li > a { + padding: 0; +} +.multiselect-container > li > a > label { + padding: 7px 10px 7px 20px; +} +.cancel-on-png, +.cancel-off-png, +.star-on-png, +.star-off-png, +.star-half-png { + font-size: 2em; +} +.cancel-on-png, +.cancel-off-png, +.star-on-png, +.star-off-png, +.star-half-png { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-family: "FontAwesome"; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + speak: none; + text-transform: none; + color: #777777; +} +.cancel-on-png { + color: #dd5a43; +} +.cancel-on-png:before { + content: "\f057"; +} +.cancel-off-png { + color: #e08374; +} +.cancel-off-png:before { + content: "\f05c"; +} +.star-on-png { + color: #feb902; +} +.star-on-png:before { + content: "\f005"; +} +.star-off-png { + color: #777777; +} +.star-off-png:before { + content: "\f006"; +} +.star-half-png { + color: #feb902; +} +.star-half-png:before { + content: "\f123"; +} +/* custom animated icons */ +.icon-animated-bell { + display: inline-block; + -moz-animation: ringing 2.0s 5 ease 1.0s; + -webkit-animation: ringing 2.0s 5 ease 1.0s; + -o-animation: ringing 2.0s 5 ease 1.0s; + -ms-animation: ringing 2.0s 5 ease 1.0s; + animation: ringing 2.0s 5 ease 1.0s; + -moz-transform-origin: 50% 0%; + -webkit-transform-origin: 50% 0%; + -o-transform-origin: 50% 0%; + -ms-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@-moz-keyframes ringing { + 0% { + -moz-transform: rotate(-15deg); + } + 2% { + -moz-transform: rotate(15deg); + } + 4% { + -moz-transform: rotate(-18deg); + } + 6% { + -moz-transform: rotate(18deg); + } + 8% { + -moz-transform: rotate(-22deg); + } + 10% { + -moz-transform: rotate(22deg); + } + 12% { + -moz-transform: rotate(-18deg); + } + 14% { + -moz-transform: rotate(18deg); + } + 16% { + -moz-transform: rotate(-12deg); + } + 18% { + -moz-transform: rotate(12deg); + } + 20% { + -moz-transform: rotate(0deg); + } +} +@-webkit-keyframes ringing { + 0% { + -webkit-transform: rotate(-15deg); + } + 2% { + -webkit-transform: rotate(15deg); + } + 4% { + -webkit-transform: rotate(-18deg); + } + 6% { + -webkit-transform: rotate(18deg); + } + 8% { + -webkit-transform: rotate(-22deg); + } + 10% { + -webkit-transform: rotate(22deg); + } + 12% { + -webkit-transform: rotate(-18deg); + } + 14% { + -webkit-transform: rotate(18deg); + } + 16% { + -webkit-transform: rotate(-12deg); + } + 18% { + -webkit-transform: rotate(12deg); + } + 20% { + -webkit-transform: rotate(0deg); + } +} +@-ms-keyframes ringing { + 0% { + -ms-transform: rotate(-15deg); + } + 2% { + -ms-transform: rotate(15deg); + } + 4% { + -ms-transform: rotate(-18deg); + } + 6% { + -ms-transform: rotate(18deg); + } + 8% { + -ms-transform: rotate(-22deg); + } + 10% { + -ms-transform: rotate(22deg); + } + 12% { + -ms-transform: rotate(-18deg); + } + 14% { + -ms-transform: rotate(18deg); + } + 16% { + -ms-transform: rotate(-12deg); + } + 18% { + -ms-transform: rotate(12deg); + } + 20% { + -ms-transform: rotate(0deg); + } +} +@keyframes ringing { + 0% { + transform: rotate(-15deg); + } + 2% { + transform: rotate(15deg); + } + 4% { + transform: rotate(-18deg); + } + 6% { + transform: rotate(18deg); + } + 8% { + transform: rotate(-22deg); + } + 10% { + transform: rotate(22deg); + } + 12% { + transform: rotate(-18deg); + } + 14% { + transform: rotate(18deg); + } + 16% { + transform: rotate(-12deg); + } + 18% { + transform: rotate(12deg); + } + 20% { + transform: rotate(0deg); + } +} +.icon-animated-vertical { + display: inline-block; + -moz-animation: vertical 2.0s 5 ease 2.0s; + -webkit-animation: vertical 2.0s 5 ease 2.0s; + -o-animation: vertical 2.0s 5 ease 2.0s; + -ms-animation: vertical 2.0s 5 ease 2.0s; + animation: vertical 2.0s 5 ease 2.0s; +} +@-moz-keyframes vertical { + 0% { + -moz-transform: translate(0, -3px); + } + 4% { + -moz-transform: translate(0, 3px); + } + 8% { + -moz-transform: translate(0, -3px); + } + 12% { + -moz-transform: translate(0, 3px); + } + 16% { + -moz-transform: translate(0, -3px); + } + 20% { + -moz-transform: translate(0, 3px); + } + 22% { + -moz-transform: translate(0, 0); + } +} +@-webkit-keyframes vertical { + 0% { + -webkit-transform: translate(0, -3px); + } + 4% { + -webkit-transform: translate(0, 3px); + } + 8% { + -webkit-transform: translate(0, -3px); + } + 12% { + -webkit-transform: translate(0, 3px); + } + 16% { + -webkit-transform: translate(0, -3px); + } + 20% { + -webkit-transform: translate(0, 3px); + } + 22% { + -webkit-transform: translate(0, 0); + } +} +@-ms-keyframes vertical { + 0% { + -ms-transform: translate(0, -3px); + } + 4% { + -ms-transform: translate(0, 3px); + } + 8% { + -ms-transform: translate(0, -3px); + } + 12% { + -ms-transform: translate(0, 3px); + } + 16% { + -ms-transform: translate(0, -3px); + } + 20% { + -ms-transform: translate(0, 3px); + } + 22% { + -ms-transform: translate(0, 0); + } +} +@keyframes vertical { + 0% { + transform: translate(0, -3px); + } + 4% { + transform: translate(0, 3px); + } + 8% { + transform: translate(0, -3px); + } + 12% { + transform: translate(0, 3px); + } + 16% { + transform: translate(0, -3px); + } + 20% { + transform: translate(0, 3px); + } + 22% { + transform: translate(0, 0); + } +} +.icon-animated-hand-pointer { + display: inline-block; + -moz-animation: hand-pointer 2.0s 4 ease 2.0s; + -webkit-animation: hand-pointer 2.0s 4 ease 2.0s; + -o-animation: hand-pointer 2.0s 4 ease 2.0s; + -ms-animation: hand-pointer 2.0s 4 ease 2.0s; + animation: hand-pointer 2.0s 4 ease 2.0s; +} +@-moz-keyframes hand-pointer { + 0% { + -moz-transform: translate(0, 0); + } + 6% { + -moz-transform: translate(5px, 0); + } + 12% { + -moz-transform: translate(0, 0); + } + 18% { + -moz-transform: translate(5px, 0); + } + 24% { + -moz-transform: translate(0, 0); + } + 30% { + -moz-transform: translate(5px, 0); + } + 36% { + -moz-transform: translate(0, 0); + } +} +.icon-animated-wrench { + display: inline-block; + -moz-animation: wrenching 2.5s 4 ease; + -webkit-animation: wrenching 2.5s 4 ease; + -o-animation: wrenching 2.5s 4 ease; + -ms-animation: wrenching 2.5s 4 ease; + animation: wrenching 2.5s 4 ease; + -moz-transform-origin: 90% 35%; + -webkit-transform-origin: 90% 35%; + -o-transform-origin: 90% 35%; + -ms-transform-origin: 90% 35%; + transform-origin: 90% 35%; +} +@-moz-keyframes wrenching { + 0% { + -moz-transform: rotate(-12deg); + } + 8% { + -moz-transform: rotate(12deg); + } + 10% { + -moz-transform: rotate(24deg); + } + 18% { + -moz-transform: rotate(-24deg); + } + 20% { + -moz-transform: rotate(-24deg); + } + 28% { + -moz-transform: rotate(24deg); + } + 30% { + -moz-transform: rotate(24deg); + } + 38% { + -moz-transform: rotate(-24deg); + } + 40% { + -moz-transform: rotate(-24deg); + } + 48% { + -moz-transform: rotate(24deg); + } + 50% { + -moz-transform: rotate(24deg); + } + 58% { + -moz-transform: rotate(-24deg); + } + 60% { + -moz-transform: rotate(-24deg); + } + 68% { + -moz-transform: rotate(24deg); + } + 75% { + -moz-transform: rotate(0deg); + } +} +@-webkit-keyframes wrenching { + 0% { + -webkit-transform: rotate(-12deg); + } + 8% { + -webkit-transform: rotate(12deg); + } + 10% { + -webkit-transform: rotate(24deg); + } + 18% { + -webkit-transform: rotate(-24deg); + } + 20% { + -webkit-transform: rotate(-24deg); + } + 28% { + -webkit-transform: rotate(24deg); + } + 30% { + -webkit-transform: rotate(24deg); + } + 38% { + -webkit-transform: rotate(-24deg); + } + 40% { + -webkit-transform: rotate(-24deg); + } + 48% { + -webkit-transform: rotate(24deg); + } + 50% { + -webkit-transform: rotate(24deg); + } + 58% { + -webkit-transform: rotate(-24deg); + } + 60% { + -webkit-transform: rotate(-24deg); + } + 68% { + -webkit-transform: rotate(24deg); + } + 75% { + -webkit-transform: rotate(0deg); + } +} +@-o-keyframes wrenching { + 0% { + -o-transform: rotate(-12deg); + } + 8% { + -o-transform: rotate(12deg); + } + 10% { + -o-transform: rotate(24deg); + } + 18% { + -o-transform: rotate(-24deg); + } + 20% { + -o-transform: rotate(-24deg); + } + 28% { + -o-transform: rotate(24deg); + } + 30% { + -o-transform: rotate(24deg); + } + 38% { + -o-transform: rotate(-24deg); + } + 40% { + -o-transform: rotate(-24deg); + } + 48% { + -o-transform: rotate(24deg); + } + 50% { + -o-transform: rotate(24deg); + } + 58% { + -o-transform: rotate(-24deg); + } + 60% { + -o-transform: rotate(-24deg); + } + 68% { + -o-transform: rotate(24deg); + } + 75% { + -o-transform: rotate(0deg); + } +} +@-ms-keyframes wrenching { + 0% { + -ms-transform: rotate(-12deg); + } + 8% { + -ms-transform: rotate(12deg); + } + 10% { + -ms-transform: rotate(24deg); + } + 18% { + -ms-transform: rotate(-24deg); + } + 20% { + -ms-transform: rotate(-24deg); + } + 28% { + -ms-transform: rotate(24deg); + } + 30% { + -ms-transform: rotate(24deg); + } + 38% { + -ms-transform: rotate(-24deg); + } + 40% { + -ms-transform: rotate(-24deg); + } + 48% { + -ms-transform: rotate(24deg); + } + 50% { + -ms-transform: rotate(24deg); + } + 58% { + -ms-transform: rotate(-24deg); + } + 60% { + -ms-transform: rotate(-24deg); + } + 68% { + -ms-transform: rotate(24deg); + } + 75% { + -ms-transform: rotate(0deg); + } +} +@keyframes wrenching { + 0% { + transform: rotate(-12deg); + } + 8% { + transform: rotate(12deg); + } + 10% { + transform: rotate(24deg); + } + 18% { + transform: rotate(-24deg); + } + 20% { + transform: rotate(-24deg); + } + 28% { + transform: rotate(24deg); + } + 30% { + transform: rotate(24deg); + } + 38% { + transform: rotate(-24deg); + } + 40% { + transform: rotate(-24deg); + } + 48% { + transform: rotate(24deg); + } + 50% { + transform: rotate(24deg); + } + 58% { + transform: rotate(-24deg); + } + 60% { + transform: rotate(-24deg); + } + 68% { + transform: rotate(24deg); + } + 75% { + transform: rotate(0deg); + } +} +@-moz-keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@-webkit-keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@-ms-keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@-moz-keyframes pulsating { + 0% { + -moz-transform: scale(1); + } + 5% { + -moz-transform: scale(0.75); + } + 10% { + -moz-transform: scale(1); + } + 15% { + -moz-transform: scale(1.25); + } + 20% { + -moz-transform: scale(1); + } + 25% { + -moz-transform: scale(0.75); + } + 30% { + -moz-transform: scale(1); + } + 35% { + -moz-transform: scale(1.25); + } + 40% { + -moz-transform: scale(1); + } +} +@-webkit-keyframes pulsating { + 0% { + -webkit-transform: scale(1); + } + 5% { + -webkit-transform: scale(0.75); + } + 10% { + -webkit-transform: scale(1); + } + 15% { + -webkit-transform: scale(1.25); + } + 20% { + -webkit-transform: scale(1); + } + 25% { + -webkit-transform: scale(0.75); + } + 30% { + -webkit-transform: scale(1); + } + 35% { + -webkit-transform: scale(1.25); + } + 40% { + -webkit-transform: scale(1); + } +} +@-ms-keyframes pulsating { + 0% { + -ms-transform: scale(1); + } + 5% { + -ms-transform: scale(0.75); + } + 10% { + -ms-transform: scale(1); + } + 15% { + -ms-transform: scale(1.25); + } + 20% { + -ms-transform: scale(1); + } + 25% { + -ms-transform: scale(0.75); + } + 30% { + -ms-transform: scale(1); + } + 35% { + -ms-transform: scale(1.25); + } + 40% { + -ms-transform: scale(1); + } +} +@keyframes pulsating { + 0% { + transform: scale(1); + } + 5% { + transform: scale(0.75); + } + 10% { + transform: scale(1); + } + 15% { + transform: scale(1.25); + } + 20% { + transform: scale(1); + } + 25% { + transform: scale(0.75); + } + 30% { + transform: scale(1); + } + 35% { + transform: scale(1.25); + } + 40% { + transform: scale(1); + } +} +.btn-scroll-up { + border-width: 0; + position: fixed; + right: 2px; + z-index: 99; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + opacity: 0; + filter: alpha(opacity=0); + bottom: -24px; + visibility: hidden; +} +.btn-scroll-up.display { + opacity: 0.7; + filter: alpha(opacity=70); + bottom: 2px; + visibility: visible; +} +.btn-scroll-up:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.btn-scroll-up:focus { + outline: none; +} +@media (min-width: 768px) { + .main-container.container > .btn-scroll-up { + right: auto; + margin-left: 714px; + } +} +@media (min-width: 992px) { + .main-container.container > .btn-scroll-up { + right: auto; + margin-left: 934px; + } +} +@media (min-width: 1200px) { + .main-container.container > .btn-scroll-up { + right: auto; + margin-left: 1134px; + } +} +.ace-settings-container { + position: absolute; + right: 0; + top: auto; + z-index: 12; +} +.btn.btn-app.ace-settings-btn { + float: left; + display: block; + text-align: center; + border-radius: 6px 0 0 6px; + opacity: 0.55; + vertical-align: top; + margin: 0; +} +.btn.btn-app.ace-settings-btn:hover, +.btn.btn-app.ace-settings-btn.open { + opacity: 1; +} +.btn.btn-app.ace-settings-btn.btn-xs { + width: 42px; +} +.ace-settings-box { + display: block; + float: left; + max-width: 0; + max-height: 0; + overflow: hidden; + padding: 0; + -moz-transform: translate(0,0); + -webkit-transform: translate(0,0); + -o-transform: translate(0,0); + -ms-transform: translate(0,0); + transform: translate(0,0); + background-color: #FFF; + border: 0 solid #ffb34b; + -webkit-transition: max-width 0.25s linear 0s, max-height 0s linear 0.25s, padding 0s linear 0.25s, border-width 0s linear 0.25s; + -o-transition: max-width 0.25s linear 0s, max-height 0s linear 0.25s, padding 0s linear 0.25s, border-width 0s linear 0.25s; + transition: max-width 0.25s linear 0s, max-height 0s linear 0.25s, padding 0s linear 0.25s, border-width 0s linear 0.25s; +} +.ace-settings-box.open { + max-width: 320px; + max-height: 1000px; + padding: 0 14px; + border-width: 2px; + -webkit-transition-delay: 0s; + -moz-transition-delay: 0s; + -o-transition-delay: 0s; + transition-delay: 0s; +} +.ace-settings-box.open .ace-settings-item { + z-index: auto; + min-width: 140px; +} +.ace-settings-box .ace-settings-item { + margin: 6px 0; + color: #444; + max-height: 24px; + position: relative; + z-index: -1; + white-space: nowrap; +} +.ace-settings-box .ace-settings-item > label.lbl { + font-size: 13px; +} +@media (max-width: 480px) { + .ace-settings-container { + text-align: right; + } + .ace-settings-box { + float: none !important; + text-align: left; + } + .btn.ace-settings-btn { + float: none !important; + display: inline-block; + } +} +@media (max-width: 320px) { + .ace-settings-box > .clearfix > .pull-left, + .ace-settings-box > .clearfix > .pull-right { + float: none !important; + } +} +.grid2, +.grid3, +.grid4 { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: block; + margin: 0 1%; + padding: 0 2%; + float: left; + border-left: 1px solid #E3E3E3; +} +.grid2:first-child, +.grid3:first-child, +.grid4:first-child { + border-left: none; +} +.grid2 { + width: 48%; +} +.grid3 { + width: 31.33%; +} +.grid4 { + width: 23%; + padding: 0 1%; +} +.draggable-placeholder { + border: 2px dashed #D9D9D9 !important; + background-color: #F7F7F7 !important; +} +.easyPieChart, +.easy-pie-chart { + position: relative; + text-align: center; +} +.easyPieChart canvas, +.easy-pie-chart canvas { + position: absolute; + top: 0; + left: 0; +} +.knob-container { + direction: ltr; + text-align: left; +} +.tags { + display: inline-block; + padding: 4px 6px; + color: #777777; + vertical-align: middle; + background-color: #FFF; + border: 1px solid #d5d5d5; + width: 206px; +} +.tags:hover { + border-color: #b5b5b5; +} +.tags-hover, +.tags-hover:hover { + border-color: #f59942; + outline: 0; +} +.tags[class*="span"] { + float: none; + margin-left: 0; +} +.tags input[type="text"], +.tags input[type="text"]:focus { + border: none; + display: inline; + outline: 0; + margin: 0; + padding: 0; + line-height: 18px; + -webkit-box-shadow: none; + box-shadow: none; + width: 100%; +} +.tags .tag { + display: inline-block; + position: relative; + font-size: 13px; + font-weight: normal; + vertical-align: baseline; + white-space: nowrap; + background-color: #91b8d0; + color: #FFF; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); + padding: 4px 22px 5px 9px; + margin-bottom: 3px; + margin-right: 3px; + -webkit-transition: all 0.2s; + -o-transition: all 0.2s; + transition: all 0.2s; + /** + &:nth-child(5n+1) { + background-color:#48A2E0; + } + &:nth-child(5n+2) { + background-color:#34C896; + } + &:nth-child(5n+3) { + background-color:#B57BB3; + } + &:nth-child(5n+4) { + background-color:#CC7DA8; + } + &:nth-child(5n+5) { + background-color:#666; + } +*/ +} +.tags .tag:empty { + display: none; +} +.tags .tag-important { + background-color: #d15b47; +} +.tags .tag-warning { + background-color: #ffb752; +} +.tags .tag-success { + background-color: #87b87f; +} +.tags .tag-info { + background-color: #6fb3e0; +} +.tags .tag-inverse { + background-color: #555555; +} +.tags .tag .close { + font-size: 15px; + line-height: 20px; + opacity: 1; + filter: alpha(opacity=100); + color: #FFF; + text-shadow: none; + float: none; + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 18px; + text-align: center; +} +.tags .tag .close:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.page-content > .row .col-xs-12, +.page-content > .row .col-sm-12, +.page-content > .row .col-md-12, +.page-content > .row .col-lg-12 { + float: left; + max-width: 100%; +} +.col-xs-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; +} +@media (min-width: 768px) { + .col-sm-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; + } +} +@media (min-width: 992px) { + .col-md-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; + } +} +@media (min-width: 1200px) { + .col-lg-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; + } +} +.jqstooltip, +.legendColorBox div { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.legendLabel { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 22px; + padding-left: 2px; + font-size: 10px; +} +@media only screen and (max-width: 991px) { + body { + overflow-x: hidden; + } +} +.navbar-fixed-top + .main-container { + padding-top: 45px; +} +@media (max-width: 479px) { + .navbar-fixed-top + .main-container { + padding-top: 90px; + } + .navbar-fixed-top.navbar-collapse + .main-container { + padding-top: 45px; + } +} +@media only screen and (max-width: 360px) { + .grid2, + .grid3, + .grid4 { + float: none; + display: block; + width: 96%; + border-left-width: 0; + position: relative; + margin-bottom: 11px; + border-bottom: 1px solid #E3E3E3; + padding-bottom: 4px; + } + .grid2 > [class*="pull-"], + .grid3 > [class*="pull-"], + .grid4 > [class*="pull-"] { + float: none !important; + display: inline-block; + position: absolute; + right: 11px; + top: 0; + margin-top: 0; + } + .grid2:last-child, + .grid3:last-child, + .grid4:last-child { + border-bottom-width: 0; + } +} +@media only screen and (max-width: 480px) { + .hidden-480 { + display: none !important; + } +} +@media only screen and (max-width: 320px) { + .hidden-320 { + display: none !important; + } +} +.no-skin { + /** + .nav-list > li.disabled.active:after { + border-color: #999; + } + .nav-list li.disabled li.active > a:after, + .nav-list li.active.disabled > a:after { + -moz-border-right-colors: #999 !important; + border-right-color: #999 !important; + } + */ +} +.no-skin .navbar .navbar-toggle { + background-color: #75B3D7; +} +.no-skin .navbar .navbar-toggle:focus { + background-color: #75B3D7; + border-color: transparent; +} +.no-skin .navbar .navbar-toggle:hover { + background-color: #61a8d1; + border-color: rgba(255, 255, 255, 0.1); +} +.no-skin .navbar .navbar-toggle.display, +.no-skin .navbar .navbar-toggle[data-toggle=collapse]:not(.collapsed) { + background-color: #4d9dcc; + box-shadow: inset 1px 1px 2px 0 rgba(0, 0, 0, 0.25); + border-color: rgba(255, 255, 255, 0.35); +} +.no-skin .sidebar { + background-color: #f2f2f2; + border-style: solid; + border-color: #cccccc; + border-width: 0 1px 0 0; +} +.no-skin .nav-list .open > a, +.no-skin .nav-list .open > a:hover, +.no-skin .nav-list .open > a:focus { + background-color: #fafafa; +} +.no-skin .nav-list > li { + border-color: #e5e5e5; +} +.no-skin .nav-list > li > a { + background-color: #f8f8f8; + color: #585858; +} +.no-skin .nav-list > li > a:focus { + background-color: #f8f8f8; + color: #1963aa; +} +.no-skin .nav-list > li:hover > a { + background-color: #ffffff; + color: #266cad; +} +.no-skin .nav-list > li.open > a { + background-color: #fafafa; + color: #1963aa; +} +.no-skin .nav-list > li.active > a { + font-weight: bold; + color: #2b7dbc; +} +.no-skin .nav-list > li.active > a, +.no-skin .nav-list > li.active > a:hover, +.no-skin .nav-list > li.active > a:focus { + background-color: #ffffff; +} +.no-skin .nav-list > li .submenu { + background-color: #ffffff; + border-color: #e5e5e5; +} +.no-skin .nav-list > li .submenu > li > a { + border-top-color: #e4e4e4; + background-color: #ffffff; + color: #616161; +} +.no-skin .nav-list > li .submenu > li > a:hover { + color: #4b88b7; + background-color: #f1f5f9; +} +.no-skin .nav-list > li .submenu > li.active > a { + color: #2b7dbc; +} +.no-skin .nav-list > li .submenu > li.active > a > .menu-icon { + color: #c86139; +} +.no-skin .nav-list > li .submenu > li.active.open > a > .menu-icon { + color: inherit; +} +@media only screen and (min-width: 992px) { + .no-skin .nav-list > li .submenu > li.active.hover > a.dropdown-toggle > .menu-icon { + color: inherit; + } +} +.no-skin .nav-list > li .submenu > li.active:not(.open) > a { + background-color: #f5f7fa; +} +.no-skin .nav-list > li .submenu > li.active:not(.open) > a:hover { + background-color: #f1f5f9; +} +.no-skin .nav-list > li > .submenu .open > a, +.no-skin .nav-list > li > .submenu .open > a:hover, +.no-skin .nav-list > li > .submenu .open > a:focus { + border-color: #e4e4e4; +} +.no-skin .nav-list > li > .submenu li > .submenu > li a { + color: #757575; +} +.no-skin .nav-list > li > .submenu li > .submenu > li a:hover { + color: #4b88b7; + background-color: #f1f5f9; +} +.no-skin .nav-list > li > .submenu li.open > a { + color: #4b88b7; +} +.no-skin .nav-list > li > .submenu li > .submenu li.open > a, +.no-skin .nav-list > li > .submenu li > .submenu li.active > a { + color: #4b88b7; +} +.no-skin .nav-list > li > .submenu:before, +.no-skin .nav-list > li > .submenu > li:before { + border-color: #9dbdd6; +} +.no-skin .nav-list > li.active > .submenu:before, +.no-skin .nav-list > li.active > .submenu > li:before { + border-color: #8eb3d0; +} +.no-skin .sidebar-toggle { + background-color: #f3f3f3; + border-color: #e0e0e0; +} +.no-skin .sidebar-toggle > .ace-icon { + border-color: #bbbbbb; + color: #aaaaaa; + background-color: #ffffff; +} +.no-skin .sidebar-shortcuts { + background-color: #fafafa; +} +.no-skin .sidebar-fixed .sidebar-shortcuts { + border-color: #dddddd; +} +.no-skin .sidebar-shortcuts-mini { + background-color: #ffffff; +} +.no-skin .nav-list li > .arrow:before { + border-right-color: #B8B8B8; + -moz-border-right-colors: #B8B8B8; + border-width: 10px 10px 10px 0; + left: -11px; +} +.no-skin .nav-list li > .arrow:after { + border-right-color: #ffffff; + -moz-border-right-colors: #ffffff; + border-width: 10px 10px 10px 0; + left: -10px; +} +.no-skin .nav-list > li.pull_up > .arrow:after { + border-right-color: #ffffff !important; + -moz-border-right-colors: #ffffff !important; + border-width: 10px 10px 10px 0 !important; + left: -10px !important; +} +.no-skin .nav-list > li.pull_up > .arrow:before { + border-width: 10px 10px 10px 0 !important; + left: -11px !important; +} +.no-skin .nav-list li.active > a:after { + border-right-color: #2b7dbc; + -moz-border-right-colors: #2b7dbc; +} +.no-skin .nav-list > li.active:after { + display: block; + content: ""; + position: absolute; + right: -2px; + top: -1px; + bottom: 0; + z-index: 1; + border: 2px solid; + border-width: 0 2px 0 0; + border-color: #2b7dbc; +} +.no-skin .sidebar-scroll .nav-list > li.active:after { + right: 0; +} +@media only screen and (max-width: 991px) { + .no-skin .sidebar.responsive .nav-list > li.active.open > a:after, + .no-skin .sidebar.responsive-max .nav-list > li.active.open > a:after { + display: block; + } + .no-skin .sidebar.responsive .nav-list li li.active > a:after, + .no-skin .sidebar.responsive-max .nav-list li li.active > a:after { + display: none; + } + .no-skin .sidebar.responsive .nav-list > li.active:after, + .no-skin .sidebar.responsive-max .nav-list > li.active:after { + height: 41px; + } +} +.no-skin .sidebar.menu-min .nav-list > li > a > .menu-text { + background-color: #f5f5f5; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; +} +.no-skin .sidebar.menu-min .nav-list > li > a.dropdown-toggle > .menu-text { + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); +} +.no-skin .sidebar.menu-min .nav-list > li.active > .submenu { + border-left-color: #83b6d1; +} +.no-skin .sidebar.menu-min .nav-list > li > .submenu { + background-color: #ffffff; + border: 1px solid #cccccc; + border-top-color: #e6e6e6; + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); +} +.no-skin .sidebar.menu-min .nav-list > li > .arrow:after { + border-right-color: #f5f5f5; + -moz-border-right-colors: #f5f5f5; + border-width: 8px 8px 8px 0; + left: -8px; +} +.no-skin .sidebar.menu-min .nav-list > li > .arrow:before { + border-width: 8px 8px 8px 0; + left: -9px; +} +.no-skin .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: #5a9ec2; + -moz-border-right-colors: #5a9ec2; +} +.no-skin .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #83b6d1; +} +.no-skin .sidebar.menu-min .sidebar-shortcuts-large { + background-color: #ffffff; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; +} +.no-skin .sidebar.menu-min .sidebar-toggle > .ace-icon { + border-color: #b1b1b1; +} +@media (max-width: 991px) { + .no-skin .sidebar.responsive-min .nav-list > li > a > .menu-text { + background-color: #f5f5f5; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; + } + .no-skin .sidebar.responsive-min .nav-list > li > a.dropdown-toggle > .menu-text { + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + } + .no-skin .sidebar.responsive-min .nav-list > li.active > .submenu { + border-left-color: #83b6d1; + } + .no-skin .sidebar.responsive-min .nav-list > li > .submenu { + background-color: #ffffff; + border: 1px solid #cccccc; + border-top-color: #e6e6e6; + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + } + .no-skin .sidebar.responsive-min .nav-list > li > .arrow:after { + border-right-color: #f5f5f5; + -moz-border-right-colors: #f5f5f5; + border-width: 8px 8px 8px 0; + left: -8px; + } + .no-skin .sidebar.responsive-min .nav-list > li > .arrow:before { + border-width: 8px 8px 8px 0; + left: -9px; + } + .no-skin .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: #5a9ec2; + -moz-border-right-colors: #5a9ec2; + } + .no-skin .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + border-left-color: #83b6d1; + } + .no-skin .sidebar.responsive-min .sidebar-shortcuts-large { + background-color: #ffffff; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; + } + .no-skin .sidebar.responsive-min .sidebar-toggle > .ace-icon { + border-color: #b1b1b1; + } +} +@media only screen and (min-width: 992px) { + .no-skin .nav-list li.hover > .submenu { + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; + } + .no-skin .nav-list li.hover > .submenu > li.active > a { + background-color: #f5f5f5; + } + .no-skin .nav-list li.hover > .submenu > li:hover > a { + background-color: #eef3f7; + color: #2e7db4; + } +} +@media only screen and (min-width: 992px) and (max-width: 991px) { + .no-skin .sidebar.navbar-collapse .nav-list li li.hover.active.open > a { + background-color: #ffffff; + } + .no-skin .sidebar.navbar-collapse .nav-list li li.hover:hover > a { + background-color: #ffffff; + } + .no-skin .sidebar.navbar-collapse .nav-list li li.hover > a:hover, + .no-skin .sidebar.navbar-collapse .nav-list li li.hover.open > a:hover, + .no-skin .sidebar.navbar-collapse .nav-list li li.hover.open.active > a:hover { + background-color: #f1f5f9; + } + .no-skin .sidebar.navbar-collapse .nav-list > li .submenu > li.active.hover > a.dropdown-toggle > .menu-icon { + color: #c86139; + } + .no-skin .sidebar.navbar-collapse .nav-list > li .submenu > li.active.open.hover > a.dropdown-toggle > .menu-icon { + color: inherit; + } +} +@media only screen and (min-width: 992px) { + .no-skin .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a { + color: #585858; + } + .no-skin .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a > .arrow { + color: inherit; + } + .no-skin .sidebar.navbar-collapse .nav-list > li.open.hover:hover > a { + background-color: #ffffff; + } + .no-skin .sidebar.navbar-collapse .nav-list > li > .submenu li.open.hover:not(:hover):not(:focus):not(.active) > a { + color: #616161; + } + .no-skin .sidebar.navbar-collapse .nav-list > li > .submenu li.open.hover:not(:hover):not(:focus):not(.active) > a > .arrow { + color: inherit; + } +} +@media only screen and (min-width: 992px) and (max-width: 991px) { + .no-skin .sidebar.navbar-collapse .nav-list li.hover > .submenu { + border-top-color: #e5e5e5; + background-color: #ffffff; + } + .no-skin .nav-list li.hover > .submenu > li.active:not(.open) > a { + background-color: #f5f7fa; + } + .no-skin .nav-list li.hover > .submenu > li.active:not(.open) > a:hover { + background-color: #f1f5f9; + } +} +@media only screen and (min-width: 992px) { + .no-skin .sidebar.h-sidebar { + background-color: #f8f8f8; + } + .no-skin .sidebar.h-sidebar:before { + background-color: #e4e4e4; + -webkit-box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.05) inset; + box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.05) inset; + } + .no-skin .sidebar.h-sidebar .nav-list > li:hover, + .no-skin .sidebar.h-sidebar .nav-list > li:hover + li { + border-left-color: #cedde5; + } + .no-skin .sidebar.h-sidebar .nav-list > li:last-child:hover { + border-right-color: #cedde5; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active, + .no-skin .sidebar.h-sidebar .nav-list > li.active + li, + .no-skin .sidebar.h-sidebar .nav-list > li:hover + li.active { + border-left-color: #79b0ce; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active:last-child { + border-right-color: #79b0ce; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active:before { + background-color: #2b7dbc; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active > a:after { + border-width: 0 0 2px 0; + border-color: transparent; + border-bottom-color: #FFF; + left: 0; + right: 0; + top: auto; + bottom: -2px; + } + .no-skin .sidebar.h-sidebar .sidebar-shortcuts-large { + background-color: #FFF; + border-color: #cccccc; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + } + .no-skin .sidebar.h-sidebar .sidebar-shortcuts-large:after { + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .no-skin .sidebar.h-sidebar .nav-list > li.hover > .submenu { + border-color: #cccccc; + } + .no-skin .sidebar.h-sidebar.menu-min .nav-list > li.hover > .submenu { + border-top-color: #e6e6e6; + } + .no-skin .sidebar.h-sidebar .nav-list > li.hover > .arrow:after { + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + -moz-border-left-colors: none; + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .no-skin .sidebar.h-sidebar .nav-list > li.hover > .arrow:before { + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + -moz-border-left-colors: none; + -moz-border-bottom-colors: #B8B8B8; + border-bottom-color: #B8B8B8; + } + .no-skin .sidebar.h-sidebar.menu-min .nav-list > li.hover > .arrow:after { + -moz-border-bottom-colors: #F5F5F5; + border-bottom-color: #F5F5F5; + } + .no-skin .sidebar.h-sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #cccccc; + } +} +@media only screen and (max-width: 991px) { + .no-skin .sidebar { + border-width: 0 1px 1px 0; + border-top-color: #d6d6d6; + } + .no-skin .menu-toggler + .sidebar.responsive { + border-top-width: 1px; + } + .no-skin .sidebar.responsive-min { + border-width: 0 1px 0 0; + } + .no-skin .sidebar.navbar-collapse { + border-width: 0; + border-bottom-width: 1px !important; + border-bottom-color: #cccccc; + -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1) !important; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1) !important; + } + .no-skin .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu { + background-color: #ffffff; + } +} +.no-skin .sidebar-scroll .sidebar-shortcuts { + border-bottom-color: #dddddd; +} +.no-skin .sidebar-scroll .sidebar-toggle { + border-top-color: #dddddd; +} +.no-skin .main-container .menu-toggler { + background-color: #444444; +} +.no-skin .main-container .menu-toggler:before { + border-top-color: #87b87f; + border-bottom-color: #6fb3e0; +} +.no-skin .main-container .menu-toggler:after { + border-top-color: #ffa24d; + border-bottom-color: #d15b47; +} +.no-skin .main-container .menu-toggler > .toggler-text { + border-top-color: #444444; + -moz-border-top-colors: #444444; +} +.no-skin .nav-list > li.disabled:before { + display: none !important; +} +.no-skin .nav-list > li.disabled > a { + background-color: #ebebeb !important; + color: #656565 !important; +} +.no-skin .nav-list li .submenu > li.disabled > a, +.no-skin .nav-list li.disabled .submenu > li > a { + background-color: #f2f2f2 !important; + color: #7a7a7a !important; + cursor: not-allowed !important; +} +.no-skin .nav-list li .submenu > li.disabled > a > .menu-icon, +.no-skin .nav-list li.disabled .submenu > li > a > .menu-icon { + display: none; +} +.nav-list li.highlight li.active > a:after, +.nav-list li li.highlight.active > a:after, +.nav-list li.highlight li.active > a:before, +.nav-list li li.highlight.active > a:before { + display: none; +} +.nav-list > li.highlight.active > a:after, +.nav-list > li.highlight.active > a:before { + display: block; +} +.no-skin .nav-list > li.highlight:hover, +.no-skin .nav-list > li.highlight.active { + border-color: #c8d8e2; +} +.no-skin .nav-list > li.highlight:hover + li, +.no-skin .nav-list > li.highlight.active + li { + border-top-color: #c8d8e2; +} +.no-skin .nav-list > li.highlight:hover > a, +.no-skin .nav-list > li.highlight.active > a { + background-color: #FFF; +} +.no-skin .nav-list > li.highlight.active:after { + display: none; +} +.no-skin .nav-list > li.highlight.active:before { + display: block; + background-color: #4f90c2; +} +.no-skin .nav-list > li.highlight.active > a { + background-color: #f2f6f9 !important; +} +.no-skin .nav-list > li.highlight.active > a:before, +.no-skin .nav-list > li.highlight.active > a:after { + display: block; + content: ""; + position: absolute; + top: -1px; + right: -10px; + bottom: auto; + z-index: 1; + border-style: solid; + border-width: 20px 0 21px 10px; + border-color: transparent; +} +.no-skin .nav-list > li.highlight.active > a:before { + border-left-color: #a0bccd; + -moz-border-left-colors: #a0bccd; + right: -11px; +} +.no-skin .nav-list > li.highlight.active > a:after { + border-left-color: #f2f6f9; + -moz-border-left-colors: #f2f6f9; +} +.no-skin .nav-list li li.highlight.active > a { + background-color: #f2f6f9; +} +.no-skin .nav-list li li.highlight.active.open > a { + background-color: #FFF; +} +.no-skin .nav-list li li.highlight.active.open > a:hover { + background-color: #f1f5f9; +} +@media (min-width: 992px) { + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active > a:after { + display: block; + content: ""; + position: absolute; + left: 0; + top: auto; + right: auto; + bottom: -2px; + left: 50%; + margin-left: -7px; + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-left-colors: none; + -moz-border-top-colors: none; + border-width: 8px 7px; + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active > a:before { + content: ""; + position: absolute; + display: block; + left: 0; + top: auto; + right: auto; + bottom: -1px; + left: 50%; + margin-left: -7px; + border-width: 8px; + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-left-colors: none; + -moz-border-top-colors: none; + border-bottom-color: #74add7; + -moz-border-bottom-colors: #74add7; + } + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:after, + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active.hover-show > a:after, + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:before, + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active.hover-show > a:before { + display: none; + } +} +@media (min-width: 992px) { + .sidebar.compact .nav-list li.highlight.active > a:after, + .sidebar.compact .nav-list li.highlight.active > a:before { + display: none; + } + .sidebar.compact.menu-min .nav-list li.highlight.active > a:after, + .sidebar.compact.menu-min .nav-list li.highlight.active > a:before { + display: block; + } +} +@media (min-width: 992px) { + .sidebar.h-sidebar .nav-list li.highlight.active > a:after, + .sidebar.h-sidebar .nav-list li.highlight.active > a:before { + display: block; + border-width: 8px !important; + -moz-border-left-colors: none !important; + -moz-border-right-colors: none !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + } + .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:after, + .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:before { + display: none !important; + } +} +.sidebar-scroll .nav-list > li.active.highlight > a:after, +.sidebar-scroll .nav-list > li.active.highlight > a:before { + display: none !important; +} +.onpage-help-backdrop { + position: absolute; + z-index: 99990; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: #000; + filter: alpha(opacity=5); + background-color: rgba(0, 0, 0, 0.05); +} +.onpage-help-section { + display: block; + position: absolute; + z-index: 100000; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4DFFFFFF', endColorstr='#4DFFFFFF', GradientType=0); + background-color: rgba(255, 255, 255, 0.3); + border: 1px dashed #8BBCD3; + border-radius: 4px; + transition: background-color 0.2s, border-color 0.2s; + -webkit-transition: background-color 0.2s, border-color 0.2s; + text-align: center; + vertical-align: middle; + outline: none !important; +} +.onpage-help-section > .ie-hover-fix { + /* ie8-9 fix*/ + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: #FFF; + filter: alpha(opacity=1); +} +.onpage-help-section:focus, +.onpage-help-section:active { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33C9D8EA', endColorstr='#33C9D8EA', GradientType=0); + background-color: rgba(201, 216, 234, 0.2); + border-color: #77ACC4; +} +.onpage-help-section:hover { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#66C9D8EA', endColorstr='#66C9D8EA', GradientType=0); + background-color: rgba(201, 216, 234, 0.4); + border-color: #77ACC4; + border-style: solid; +} +.onpage-help-section > .help-icon-1 { + font-size: 18px; + display: inline-block; + position: absolute; + z-index: 1; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + opacity: 0; + filter: alpha(opacity=0); + color: #FFF; + text-shadow: 0 0 2px black; + background-color: #85B8DB; + border: 2px solid #FFF; + border-radius: 100%; + box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.4); + width: 48px; + height: 48px; + line-height: 46px; + transition: opacity 0.2s; + -webkit-transition: opacity 0.2s; +} +.onpage-help-section:focus > .help-icon-1, +.onpage-help-section:active > .help-icon-1 { + opacity: 0.5; +} +.onpage-help-section:hover > .help-icon-1 { + opacity: 1; + filter: alpha(opacity=100); +} +.onpage-help-section.help-section-small > .help-icon-1 { + font-size: 18px; + width: 28px; + height: 28px; + line-height: 26px; + border-radius: 12px; +} +.onpage-help-section.help-section-smaller > .help-icon-1 { + font-size: 14px; + width: 20px; + height: 20px; + line-height: 17px; + border-radius: 8px; +} +.onpage-help-section > .help-icon-2 { + position: absolute; + z-index: 2; + left: -4px; + top: -4px; + width: 18px; + height: 18px; + line-height: 16px; + display: block; + font-size: 16px; + color: orange; + background-color: #FFF; + border: 1px solid orange; + border-radius: 4px; + opacity: 1; + transition: all 0.2s; + -webkit-transition: all 0.2s; +} +.onpage-help-section:hover > .help-icon-2 { + color: #59A34E; + border-color: #59A34E; + transform: scale(1.25); + -webkit-transform: scale(1.25); +} +.onpage-help-modal { + z-index: 100010; +} +.onpage-help-modal + .modal-backdrop { + z-index: 100009; +} +.onpage-help-modal-buttons button { + border-radius: 100%; + border-width: 2px !important; +} +.onpage-help-modal-buttons button:focus { + outline: none !important; +} +.onpage-help-modal-buttons button.disabled { + transform: scale(0.9); + -webkit-transform: scale(0.9); +} +.onpage-help-content { + max-width: 800px; + margin: 0 auto; +} +.code-modal.onpage-help-modal .modal-dialog { + margin-top: 6px; + margin-bottom: 6px; +} +.code-modal.onpage-help-modal .modal-header { + padding-top: 6px; + padding-bottom: 6px; +} +.code-modal.onpage-help-modal .modal-body { + padding: 10px 12px; +} +.onpage-help-modal pre { + border-width: 0; + box-shadow: none; + border-radius: 0; + margin-top: 8px; +} +.onpage-help-modal .modal-title code { + font-size: 13px; +} +.onpage-help-modal .modal-body { + font-size: 14px; +} +@media print { + .navbar { + display: none !important; + /** + background: transparent none !important; + border-bottom: 1px solid #DDD; + + .navbar-brand { + color: @text-color !important; + } + + .ace-nav { + display: none !important; + } + */ + } + .sidebar { + display: none !important; + } + .main-content { + margin-left: 0 !important; + margin-right: 0 !important; + } + .main-content .nav-search { + display: none !important; + } + .main-content .breadcrumbs { + float: right; + border-width: 0 !important; + } + .main-content .breadcrumbs .breadcrumb > li + li:before { + content: "/"; + } + .main-content .breadcrumbs .breadcrumb .home-icon { + display: none; + } + .ace-settings-container { + display: none !important; + } + .footer { + width: 100%; + height: auto; + position: relative; + } + .footer .footer-inner, + .footer .footer-inner .footer-content { + width: 100%; + } + .btn-scroll-up { + display: none !important; + } + .btn, + .btn.btn-app { + background: transparent none !important; + border-width: 1px !important; + border-radius: 0 !important; + color: #555 !important; + } + .label { + border: 1px solid #666 !important; + } + .label[class*=arrowed]:before, + .label[class*=arrowed]:after { + display: none !important; + } +} diff --git a/web/public/assets/css/app-preview.css b/web/public/assets/css/app-preview.css new file mode 100644 index 0000000..c0af011 --- /dev/null +++ b/web/public/assets/css/app-preview.css @@ -0,0 +1,25 @@ +.footer-tab-item { + width: 28px; + height: 24px; + background-size: contain; + background-repeat: no-repeat; +} +.middle-content { + background-size: contain; + background-repeat: no-repeat; +} +.middle-content-contacts { + background-image: url('../images/app-preview/contacts.png'); +} +.middle-content-message { + background-image: url('../images/app-preview/message.png'); +} +.middle-content-workbench { + background-image: url('../images/app-preview/workbench.png'); +} +.middle-content-alert { + background-image: url('../images/app-preview/alert.png'); +} +.middle-content-me { + background-image: url('../images/app-preview/me.png'); +} \ No newline at end of file diff --git a/web/public/assets/css/sm.css b/web/public/assets/css/sm.css new file mode 100644 index 0000000..960a0a1 --- /dev/null +++ b/web/public/assets/css/sm.css @@ -0,0 +1,4685 @@ +/*! + * ===================================================== + * SUI Mobile - http://m.sui.taobao.org/ + * + * ===================================================== + */ + +/*.transition(@d) { + -webkit-transition-duration: @d; + transition-duration: @d; +} +.delay(@d) { + -webkit-transition-delay: @d; + transition-delay: @d; +} +.transform(@t) { + -webkit-transform: @t; + transform: @t; +} +.transform-origin(@to) { + -webkit-transform-origin: @to; + transform-origin: @to; +} +.translate3d(@x:0, @y:0, @z:0) { + -webkit-transform: translate3d(@x,@y,@z); + transform: translate3d(@x,@y,@z); +} +.animation(@a) { + -webkit-animation: @a; + animation: @a; +} +.border-box(){ + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.box-shadow(@bs) { + -webkit-box-shadow: @bs; + box-shadow: @bs; +} +.animation-name(@name) { + -webkit-animation-name: @name; + -moz-animation-name: @name; + animation-name: @name; +} +.animation-duration(@duration) { + -webkit-animation-duration: @duration; + -moz-animation-duration: @duration; + animation-duration: @duration; +} +.animation-direction(@direction) { + -webkit-animation-direction: @direction; + -moz-animation-direction: @direction; + animation-direction: @direction; +} +*/ +html { + font-size: 20px; +} +@media only screen and (min-width: 400px) { + html { + font-size: 21.33333333px !important; + } +} +@media only screen and (min-width: 414px) { + html { + font-size: 22.08px !important; + } +} +@media only screen and (min-width: 480px) { + html { + font-size: 25.6px !important; + } +} +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +* { + box-sizing: border-box; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-touch-callout: none; +} +body { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + font-family: "Helvetica Neue", Helvetica, sans-serif; + font-size: 0.85rem; + line-height: 1.5; + color: #3d4145; + background: #eeeeee; + overflow: hidden; +} +a, +input, +textarea, +select, +button { + outline: 0; +} +p { + margin: 1em 0; +} +a { + color: #0894ec; + text-decoration: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +a:active { + color: #0a8ddf; +} +.page { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: #eeeeee; + z-index: 2000; +} +.content { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.bar-nav ~ .content { + top: 2.2rem; +} +.bar-header-secondary ~ .content { + top: 4.4rem; +} +.bar-footer ~ .content { + bottom: 2.2rem; +} +.bar-footer-secondary ~ .content { + bottom: 4.4rem; +} +.bar-tab ~ .content { + bottom: 2.5rem; +} +.bar-footer-secondary-tab ~ .content { + bottom: 4.7rem; +} +.content-padded { + margin: 0.5rem; +} +.text-center { + text-align: center; +} +.pull-left { + float: left; +} +.pull-right { + float: right; +} +.clearfix:before, +.clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} +/* === Content Block === */ +.content-block { + margin: 1.75rem 0; + padding: 0 0.75rem; + color: #6d6d72; +} +.content-block-title { + position: relative; + overflow: hidden; + margin: 0; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 0.7rem; + text-transform: uppercase; + line-height: 1; + color: #6d6d72; + margin: 1.75rem 0.75rem 0.5rem; +} +.content-block-title + .list-block, +.content-block-title + .content-block, +.content-block-title + .card { + margin-top: 0.5rem; +} +.content-block-inner { + background: #fff; + padding: 0.5rem 0.75rem; + margin-left: -0.75rem; + width: 100%; + position: relative; + color: #3d4145; +} +.content-block-inner:before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: auto; + right: auto; + height: 1px; + width: 100%; + background-color: #c8c7cc; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .content-block-inner:before { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .content-block-inner:before { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.content-block-inner:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #c8c7cc; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .content-block-inner:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .content-block-inner:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.content-block.inset { + margin-left: 0.75rem; + margin-right: 0.75rem; + border-radius: 0.35rem; +} +.content-block.inset .content-block-inner { + border-radius: 0.35rem; +} +.content-block.inset .content-block-inner:before { + display: none; +} +.content-block.inset .content-block-inner:after { + display: none; +} +@media all and (min-width: 768px) { + .content-block.tablet-inset { + margin-left: 0.75rem; + margin-right: 0.75rem; + border-radius: 0.35rem; + } + .content-block.tablet-inset .content-block-inner { + border-radius: 0.35rem; + } + .content-block.tablet-inset .content-block-inner:before { + display: none; + } + .content-block.tablet-inset .content-block-inner:after { + display: none; + } +} +/* === Grid === */ +.row { + overflow: hidden; + margin-left: -4%; +} +.row > [class*="col-"], +.row > [class*="tablet-"] { + box-sizing: border-box; + float: left; +} +.row.no-gutter { + margin-left: 0; +} +.row .col-100 { + width: 96%; + margin-left: 4%; +} +.row.no-gutter .col-100 { + width: 100%; + margin: 0; +} +.row .col-95 { + width: 91%; + margin-left: 4%; +} +.row.no-gutter .col-95 { + width: 95%; + margin: 0; +} +.row .col-90 { + width: 86%; + margin-left: 4%; +} +.row.no-gutter .col-90 { + width: 90%; + margin: 0; +} +.row .col-85 { + width: 81%; + margin-left: 4%; +} +.row.no-gutter .col-85 { + width: 85%; + margin: 0; +} +.row .col-80 { + width: 76%; + margin-left: 4%; +} +.row.no-gutter .col-80 { + width: 80%; + margin: 0; +} +.row .col-75 { + width: 71.00000000000001%; + margin-left: 4%; +} +.row.no-gutter .col-75 { + width: 75%; + margin: 0; +} +.row .col-66 { + width: 62.66666666666666%; + margin-left: 4%; +} +.row.no-gutter .col-66 { + width: 66.66666666666666%; + margin: 0; +} +.row .col-60 { + width: 55.99999999999999%; + margin-left: 4%; +} +.row.no-gutter .col-60 { + width: 60%; + margin: 0; +} +.row .col-50 { + width: 46%; + margin-left: 4%; +} +.row.no-gutter .col-50 { + width: 50%; + margin: 0; +} +.row .col-40 { + width: 36%; + margin-left: 4%; +} +.row.no-gutter .col-40 { + width: 40%; + margin: 0; +} +.row .col-33 { + width: 29.333333333333332%; + margin-left: 4%; +} +.row.no-gutter .col-33 { + width: 33.333333333333336%; + margin: 0; +} +.row .col-25 { + width: 21%; + margin-left: 4%; +} +.row.no-gutter .col-25 { + width: 25%; + margin: 0; +} +.row .col-20 { + width: 16%; + margin-left: 4%; +} +.row.no-gutter .col-20 { + width: 20%; + margin: 0; +} +.row .col-15 { + width: 10.999999999999998%; + margin-left: 4%; +} +.row.no-gutter .col-15 { + width: 15%; + margin: 0; +} +.row .col-10 { + width: 6%; + margin-left: 4%; +} +.row.no-gutter .col-10 { + width: 10%; + margin: 0; +} +.row .col-5 { + width: 1%; + margin-left: 4%; +} +.row.no-gutter .col-5 { + width: 5%; + margin: 0; +} +@media all and (min-width: 768px) { + .row { + margin-left: -2%; + } + .row .col-100 { + width: 98%; + margin-left: 2%; + } + .row.no-gutter .col-100 { + width: 100%; + margin: 0; + } + .row .col-95 { + width: 93%; + margin-left: 2%; + } + .row.no-gutter .col-95 { + width: 95%; + margin: 0; + } + .row .col-90 { + width: 87.99999999999999%; + margin-left: 2%; + } + .row.no-gutter .col-90 { + width: 90%; + margin: 0; + } + .row .col-85 { + width: 82.99999999999999%; + margin-left: 2%; + } + .row.no-gutter .col-85 { + width: 85%; + margin: 0; + } + .row .col-80 { + width: 78%; + margin-left: 2%; + } + .row.no-gutter .col-80 { + width: 80%; + margin: 0; + } + .row .col-75 { + width: 73%; + margin-left: 2%; + } + .row.no-gutter .col-75 { + width: 75%; + margin: 0; + } + .row .col-66 { + width: 64.66666666666666%; + margin-left: 2%; + } + .row.no-gutter .col-66 { + width: 66.66666666666666%; + margin: 0; + } + .row .col-60 { + width: 58%; + margin-left: 2%; + } + .row.no-gutter .col-60 { + width: 60%; + margin: 0; + } + .row .col-50 { + width: 48%; + margin-left: 2%; + } + .row.no-gutter .col-50 { + width: 50%; + margin: 0; + } + .row .col-40 { + width: 38%; + margin-left: 2%; + } + .row.no-gutter .col-40 { + width: 40%; + margin: 0; + } + .row .col-33 { + width: 31.333333333333332%; + margin-left: 2%; + } + .row.no-gutter .col-33 { + width: 33.333333333333336%; + margin: 0; + } + .row .col-25 { + width: 23%; + margin-left: 2%; + } + .row.no-gutter .col-25 { + width: 25%; + margin: 0; + } + .row .col-20 { + width: 18%; + margin-left: 2%; + } + .row.no-gutter .col-20 { + width: 20%; + margin: 0; + } + .row .col-15 { + width: 13%; + margin-left: 2%; + } + .row.no-gutter .col-15 { + width: 15%; + margin: 0; + } + .row .col-10 { + width: 8%; + margin-left: 2%; + } + .row.no-gutter .col-10 { + width: 10%; + margin: 0; + } + .row .col-5 { + width: 3%; + margin-left: 2%; + } + .row.no-gutter .col-5 { + width: 5%; + margin: 0; + } + .row .tablet-100 { + width: 98%; + margin-left: 2%; + } + .row.no-gutter .tablet-100 { + width: 100%; + margin: 0; + } + .row .tablet-95 { + width: 93%; + margin-left: 2%; + } + .row.no-gutter .tablet-95 { + width: 95%; + margin: 0; + } + .row .tablet-90 { + width: 87.99999999999999%; + margin-left: 2%; + } + .row.no-gutter .tablet-90 { + width: 90%; + margin: 0; + } + .row .tablet-85 { + width: 82.99999999999999%; + margin-left: 2%; + } + .row.no-gutter .tablet-85 { + width: 85%; + margin: 0; + } + .row .tablet-80 { + width: 78%; + margin-left: 2%; + } + .row.no-gutter .tablet-80 { + width: 80%; + margin: 0; + } + .row .tablet-75 { + width: 73%; + margin-left: 2%; + } + .row.no-gutter .tablet-75 { + width: 75%; + margin: 0; + } + .row .tablet-66 { + width: 64.66666666666666%; + margin-left: 2%; + } + .row.no-gutter .tablet-66 { + width: 66.66666666666666%; + margin: 0; + } + .row .tablet-60 { + width: 58%; + margin-left: 2%; + } + .row.no-gutter .tablet-60 { + width: 60%; + margin: 0; + } + .row .tablet-50 { + width: 48%; + margin-left: 2%; + } + .row.no-gutter .tablet-50 { + width: 50%; + margin: 0; + } + .row .tablet-40 { + width: 38%; + margin-left: 2%; + } + .row.no-gutter .tablet-40 { + width: 40%; + margin: 0; + } + .row .tablet-33 { + width: 31.333333333333332%; + margin-left: 2%; + } + .row.no-gutter .tablet-33 { + width: 33.333333333333336%; + margin: 0; + } + .row .tablet-25 { + width: 23%; + margin-left: 2%; + } + .row.no-gutter .tablet-25 { + width: 25%; + margin: 0; + } + .row .tablet-20 { + width: 18%; + margin-left: 2%; + } + .row.no-gutter .tablet-20 { + width: 20%; + margin: 0; + } + .row .tablet-15 { + width: 13%; + margin-left: 2%; + } + .row.no-gutter .tablet-15 { + width: 15%; + margin: 0; + } + .row .tablet-10 { + width: 8%; + margin-left: 2%; + } + .row.no-gutter .tablet-10 { + width: 10%; + margin: 0; + } + .row .tablet-5 { + width: 3%; + margin-left: 2%; + } + .row.no-gutter .tablet-5 { + width: 5%; + margin: 0; + } +} +.color-default { + color: #3d4145; +} +.color-gray { + color: #999; +} +.color-primary { + color: #0894ec; +} +.color-success { + color: #4cd964; +} +.color-danger { + color: #f6383a; +} +.color-warning { + color: #ff6600; +} +.text-center { + text-align: center; +} +.bar { + position: absolute; + right: 0; + left: 0; + z-index: 10; + height: 2.2rem; + padding-right: 0.5rem; + padding-left: 0.5rem; + background-color: #f7f7f8; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.bar:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #e7e7e7; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .bar:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .bar:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.bar-header-secondary { + top: 2.2rem; +} +.bar-footer { + bottom: 0; +} +.bar-footer-secondary { + bottom: 2.2rem; +} +.bar-footer-secondary-tab { + bottom: 2.5rem; +} +.bar-footer:before, +.bar-footer-secondary:before, +.bar-footer-secondary-tab:before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: auto; + right: auto; + height: 1px; + width: 100%; + background-color: #e7e7e7; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .bar-footer:before, + .bar-footer-secondary:before, + .bar-footer-secondary-tab:before { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .bar-footer:before, + .bar-footer-secondary:before, + .bar-footer-secondary-tab:before { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.bar-footer:after, +.bar-footer-secondary:after, +.bar-footer-secondary-tab:after { + display: none; +} +.bar-nav { + top: 0; +} +.title { + position: absolute; + display: block; + width: 100%; + padding: 0; + margin: 0 -0.5rem; + font-size: 0.85rem; + font-weight: 500; + line-height: 2.2rem; + color: #3d4145; + text-align: center; + white-space: nowrap; +} +.title a { + color: inherit; +} +.bar-tab { + bottom: 0; + width: 100%; + height: 2.5rem; + padding: 0; + table-layout: fixed; +} +.bar-tab:before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: auto; + right: auto; + height: 1px; + width: 100%; + background-color: #e7e7e7; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .bar-tab:before { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .bar-tab:before { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.bar-tab:after { + display: none; +} +.bar-tab .tab-item { + position: relative; + display: table-cell; + width: 1%; + height: 2.5rem; + color: #929292; + text-align: center; + vertical-align: middle; +} +.bar-tab .tab-item.active, +.bar-tab .tab-item:active { + color: #0894ec; +} +.bar-tab .tab-item .badge { + position: absolute; + top: .1rem; + left: 50%; + z-index: 100; + height: .8rem; + min-width: .8rem; + padding: 0 .2rem; + font-size: .6rem; + line-height: .8rem; + color: white; + vertical-align: top; + background: red; + border-radius: .5rem; + margin-left: .1rem; +} +.bar-tab .tab-item .icon { + top: 0.05rem; + height: 1.2rem; + font-size: 1.2rem; + line-height: 1.2rem; + padding-top: 0; + padding-bottom: 0; +} +.bar-tab .tab-item .icon ~ .tab-label { + display: block; + font-size: 0.55rem; + position: relative; + top: 0.15rem; +} +.bar .button { + position: relative; + top: 0.35rem; + z-index: 20; + margin-top: 0; + font-weight: 400; +} +.bar .button.pull-right { + margin-left: 0.5rem; +} +.bar .button.pull-left { + margin-right: 0.5rem; +} +.bar .button-link { + top: 0; + padding: 0; + font-size: 0.8rem; + line-height: 2.2rem; + height: 2.2rem; + color: #0894ec; + border: 0; +} +.bar .button-link:active, +.bar .button-link.active { + color: #0675bb; +} +.bar .button-block { + top: 0.35rem; + font-size: 0.8rem; + width: 100%; +} +.bar .button-nav.pull-left { + margin-left: -0.25rem; +} +.bar .button-nav.pull-left .icon-left-nav { + margin-right: -0.15rem; +} +.bar .button-nav.pull-right { + margin-right: -0.25rem; +} +.bar .button-nav.pull-right .icon-right-nav { + margin-left: -0.15rem; +} +.bar .icon { + position: relative; + z-index: 20; + padding: .5rem .1rem; + font-size: 1rem; + line-height: 1.2rem; +} +.bar .button .icon { + padding: 0; +} +.bar .title .icon { + padding: 0; +} +.bar .title .icon.icon-caret { + top: 0.2rem; + margin-left: -0.25rem; +} +.bar-footer .icon { + font-size: 1.2rem; + line-height: 1.2rem; +} +.bar input[type="search"] { + height: 1.45rem; + margin: 0.3rem 0; +} +.badge { + display: inline-block; + padding: 0.1rem 0.45rem 0.15rem; + font-size: 0.6rem; + line-height: 1; + color: #3d4145; + background-color: rgba(0, 0, 0, 0.15); + border-radius: 5rem; +} +.badge.badge-inverted { + padding: 0 0.25rem 0 0; + background-color: transparent; +} +/* === Lists === */ +.list-block { + margin: 1.75rem 0; + font-size: 0.85rem; + /* + .swipeout { + overflow: hidden; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; + } + .swipeout.deleting { + transition-duration: 300ms; + .swipeout-content { + transform: translateX(-100%); + } + } + .swipeout.transitioning { + .swipeout-content, .swipeout-actions-right a, .swipeout-actions-left a, .swipeout-overswipe { + -webkit-transition: 300ms; + transition: 300ms; + } + } + .swipeout-content { + position: relative; + z-index: 10; + } + .swipeout-overswipe { + -webkit-transition: 200ms left; + transition: 200ms left; + } + .swipeout-actions-left, .swipeout-actions-right { + position: absolute; + top: 0; + height: 100%; + .flexbox(); + a { + padding: 0 1.5rem; + color:#fff; + background: #c7c7cc; + .flexbox(); + .align-items(center); + position: relative; + left: 0; + &:after { + content:''; + position: absolute; + top: 0; + width: 600%; + height: 100%; + background: inherit; + z-index: -1; + } + } + a.swipeout-delete { + background: @color-danger; + } + } + .swipeout-actions-right { + right: 0%; + transform: translateX(100%); + a:after { + left: 100%; + margin-left: -1px; + } + } + .swipeout-actions-left { + left: 0%; + transform: translateX(-100%); + a:after { + right: 100%; + margin-right: -1px; + } + } + */ + /* + .sortable-handler { + position: absolute; + right: 0; + top: 0; + bottom: 1px; + z-index: 10; + background-repeat: no-repeat; + background-size: 0.9rem 0.6rem; + background-image: url("@{imgBaseUrl}/i-sortable-handler.png"); + background-position: center; + width: 1.75rem; + opacity: 0; + visibility: hidden; + right: 0; + } + &.sortable { + .item-inner { + transition-duration: 300ms; + } + } + &.sortable-opened { + .sortable-handler { + visibility: visible; + opacity: 1; + } + .item-inner, .item-link .item-inner { + padding-right: 1.5rem; + } + .item-link .item-inner, .item-link .item-title-row { + background-image: none; + } + } + &.sortable-sorting { + li { + transition-duration: 300ms; + } + } + li.sorting { + z-index: 50; + background: rgba(255,255,255,0.8); + box-shadow: 0 0.1rem 0.4rem rgba(0,0,0,0.6); + transition-duration: 0ms; + .item-inner { + .hairline-remove(bottom); + } + } + */ +} +.list-block ul { + background: #ffffff; + list-style: none; + padding: 0; + margin: 0; + position: relative; +} +.list-block ul:before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: auto; + right: auto; + height: 1px; + width: 100%; + background-color: #e7e7e7; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .list-block ul:before { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .list-block ul:before { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.list-block ul:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #e7e7e7; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .list-block ul:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .list-block ul:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.list-block ul ul { + padding-left: 2.25rem; +} +.list-block ul ul:before { + display: none; +} +.list-block ul ul:after { + display: none; +} +.list-block .align-top, +.list-block .align-top .item-content, +.list-block .align-top .item-inner { + -webkit-box-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; +} +.list-block.inset { + margin-left: 0.75rem; + margin-right: 0.75rem; + border-radius: 0.35rem; +} +.list-block.inset .content-block-title { + margin-left: 0; + margin-right: 0; +} +.list-block.inset ul { + border-radius: 0.35rem; +} +.list-block.inset ul:before { + display: none; +} +.list-block.inset ul:after { + display: none; +} +.list-block.inset li:first-child > a { + border-radius: 0.35rem 0.35rem 0 0; +} +.list-block.inset li:last-child > a { + border-radius: 0 0 0.35rem 0.35rem; +} +.list-block.inset li:first-child:last-child > a { + border-radius: 0.35rem; +} +@media all and (min-width: 768px) { + .list-block.tablet-inset { + margin-left: 0.75rem; + margin-right: 0.75rem; + border-radius: 0.35rem; + } + .list-block.tablet-inset .content-block-title { + margin-left: 0; + margin-right: 0; + } + .list-block.tablet-inset ul { + border-radius: 0.35rem; + } + .list-block.tablet-inset ul:before { + display: none; + } + .list-block.tablet-inset ul:after { + display: none; + } + .list-block.tablet-inset li:first-child > a { + border-radius: 0.35rem 0.35rem 0 0; + } + .list-block.tablet-inset li:last-child > a { + border-radius: 0 0 0.35rem 0.35rem; + } + .list-block.tablet-inset li:first-child:last-child > a { + border-radius: 0.35rem; + } + .list-block.tablet-inset .content-block-title { + margin-left: 0; + margin-right: 0; + } + .list-block.tablet-inset ul { + border-radius: 0.35rem; + } + .list-block.tablet-inset ul:before { + display: none; + } + .list-block.tablet-inset ul:after { + display: none; + } + .list-block.tablet-inset li:first-child > a { + border-radius: 0.35rem 0.35rem 0 0; + } + .list-block.tablet-inset li:last-child > a { + border-radius: 0 0 0.35rem 0.35rem; + } + .list-block.tablet-inset li:first-child:last-child > a { + border-radius: 0.35rem; + } +} +.list-block li { + box-sizing: border-box; + position: relative; +} +.list-block .item-media { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-shrink: 0; + -ms-flex: 0 0 auto; + -webkit-flex-shrink: 0; + flex-shrink: 0; + -webkit-box-lines: single; + -moz-box-lines: single; + -webkit-flex-wrap: nowrap; + flex-wrap: nowrap; + box-sizing: border-box; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + padding-top: 0.35rem; + padding-bottom: 0.4rem; +} +.list-block .item-media i + i { + margin-left: 0.25rem; +} +.list-block .item-media i + img { + margin-left: 0.25rem; +} +.list-block .item-media + .item-inner { + margin-left: 0.75rem; +} +.list-block .item-inner { + padding-right: 0.75rem; + position: relative; + width: 100%; + padding-top: 0.4rem; + padding-bottom: 0.35rem; + min-height: 2.2rem; + overflow: hidden; + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.list-block .item-inner:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #e7e7e7; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .list-block .item-inner:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .list-block .item-inner:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.list-block .item-title { + -webkit-flex-shrink: 1; + -ms-flex: 0 1 auto; + -webkit-flex-shrink: 1; + flex-shrink: 1; + white-space: nowrap; + position: relative; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} +.list-block .item-title.label { + width: 35%; + -webkit-flex-shrink: 0; + -ms-flex: 0 0 auto; + -webkit-flex-shrink: 0; + flex-shrink: 0; + margin: 4px 0; +} +.list-block .item-input { + width: 100%; + margin-top: -0.4rem; + margin-bottom: -0.35rem; + -webkit-box-flex: 1; + -ms-flex: 1; + -webkit-flex-shrink: 1; + -ms-flex: 0 1 auto; + -webkit-flex-shrink: 1; + flex-shrink: 1; +} +.list-block .item-after { + white-space: nowrap; + color: #5f646e; + -webkit-flex-shrink: 0; + -ms-flex: 0 0 auto; + -webkit-flex-shrink: 0; + flex-shrink: 0; + margin-left: 0.25rem; + display: -webkit-box; + display: -webkit-flex; + display: flex; + max-height: 1.4rem; +} +.list-block .smart-select .item-after { + max-width: 70%; + overflow: hidden; + text-overflow: ellipsis; + position: relative; +} +.list-block .item-link { + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + display: block; + color: inherit; +} +.list-block .item-link .item-inner { + padding-right: 1.5rem; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUM0QzFDNzMyREM0MTFFNUJDNTI4OTMzMEE0RjBENzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUM0QzFDNzQyREM0MTFFNUJDNTI4OTMzMEE0RjBENzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1QzRDMUM3MTJEQzQxMUU1QkM1Mjg5MzMwQTRGMEQ3MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1QzRDMUM3MjJEQzQxMUU1QkM1Mjg5MzMwQTRGMEQ3MyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pjs2Bb4AAAItSURBVHjazJhbK0RRGIb3DIOU/AG5kUTOgxmHceFGKf6BO+Vf+E8KKYcYg3FuMpNIDhFJXJAcp/GtvKumrzVs+zBrvfU2u689q6d3rb33+lYgl8tZvymZ3JOX7eQp8gT50fJA0Wj4z3tKbY5VR14hV5ObyWLkZ6sICtq4p4V8CjihevIWucoUQJFUmtUayTvkShMAL5DiGqs3IMlK3YBSgwrIZkBWmAAoIRMKyG2/IIMO/hMjbygepCS53ARAoQHyOqu1YbrLTADMAXJbASmSDOkGlOpTQHaQN72CdAuYBeQuq4cBWaIbUEJGC0Am3UIGPVoqMsk9Vu/CwxTQDSj0iSQPWD2C6Q7oBhT6AmRKAZkwAVDoowBkn+LdqQVQ6A2QhwrIuAmAEjKi2KrF/jPdfgIKveI7Pcfq/eSMCYBSD4pakymA0+RxVrsn15oAOEMeY7Vbcif5ys4ApT7CzZJHWO2G3I1fSyfgPHmY1a7x6bvT/ZpZUMBdOoHzI8El8pCiK+wq8CQXNcFlBdw51tyD00G9SnAVHV++zgDn6hzHiwTjCrgTTKvrQya3Ca5jA5CvY3IP+UlnTxJEb8zhjpDck1cL20mCAcBFWD2D2ovOvjiERojDpTGtnsL9N8EQegt+LJrC5vRN59lMORp0DrePNH2BswvYivXVzuoHSO7dz+2QHcAa6+eMOl87WHOffm8m7QCK7foog+tFi2mZACg3npPkRUxrtkitgvUtwAA5A3LWdzPizwAAAABJRU5ErkJggg==); + background-size: 0.7rem; + background-repeat: no-repeat; + background-position: 97% center; + background-position: -webkit-calc(100% - .5rem) center; + background-position: calc(100% - .5rem) center; +} +html:not(.watch-active-state) .list-block .item-link:active, +.list-block .item-link.active-state { + -webkit-transition-duration: 0ms; + transition-duration: 0ms; + background-color: #d9d9d9; +} +html:not(.watch-active-state) .list-block .item-link:active .item-inner:after, +.list-block .item-link.active-state .item-inner:after { + background-color: transparent; +} +.list-block .item-link.list-button { + padding: 0 0.75rem; + text-align: center; + color: #0894ec; + display: block; + line-height: 2.15rem; +} +.list-block .item-link.list-button:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #e7e7e7; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .list-block .item-link.list-button:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .list-block .item-link.list-button:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.list-block .item-content { + box-sizing: border-box; + padding-left: 0.75rem; + min-height: 2.2rem; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.list-block .list-block-label { + margin: 0.5rem 0 1.75rem; + padding: 0 0.75rem; + font-size: 0.7rem; + color: #5f646e; +} +.list-block .item-subtitle { + font-size: 0.75rem; + position: relative; + overflow: hidden; + white-space: nowrap; + max-width: 100%; + text-overflow: ellipsis; +} +.list-block .item-text { + font-size: 0.75rem; + color: #5f646e; + line-height: 1.05rem; + position: relative; + overflow: hidden; + height: 2.1rem; + text-overflow: ellipsis; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + display: -webkit-box; +} +.list-block.media-list .item-title { + font-weight: 500; +} +.list-block.media-list .item-inner { + display: block; + padding-top: 0.5rem; + padding-bottom: 0.45rem; + -webkit-align-self: stretch; + align-self: stretch; +} +.list-block.media-list .item-media { + padding-top: 0.45rem; + padding-bottom: 0.5rem; +} +.list-block.media-list .item-media img { + display: block; +} +.list-block.media-list .item-title-row { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} +.list-block .list-group ul:after, +.list-block .list-group ul:before { + z-index: 11; +} +.list-block .list-group + .list-group ul:before { + display: none; +} +.list-block .item-divider, +.list-block .list-group-title { + background: #f7f7f7; + margin-top: -1px; + padding: 0.2rem 0.75rem; + white-space: nowrap; + position: relative; + max-width: 100%; + text-overflow: ellipsis; + overflow: hidden; + color: #e7e7e7; +} +.list-block .item-divider:before, +.list-block .list-group-title:before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: auto; + right: auto; + height: 1px; + width: 100%; + background-color: #e7e7e7; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .list-block .item-divider:before, + .list-block .list-group-title:before { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .list-block .item-divider:before, + .list-block .list-group-title:before { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.list-block .list-group-title { + position: relative; + position: -webkit-sticky; + position: -moz-sticky; + position: sticky; + top: 0; + z-index: 20; + margin-top: 0; +} +.list-block .list-group-title:before { + display: none; +} +.list-block li:last-child .list-button:after { + display: none; +} +.list-block li:last-child .item-inner:after, +.list-block li:last-child li:last-child .item-inner:after { + display: none; +} +.list-block li li:last-child .item-inner:after, +.list-block li:last-child li .item-inner:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #e7e7e7; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .list-block li li:last-child .item-inner:after, + .list-block li:last-child li .item-inner:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .list-block li li:last-child .item-inner:after, + .list-block li:last-child li .item-inner:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +/* === Forms === */ +.list-block input[type="text"], +.list-block input[type="password"], +.list-block input[type="search"], +.list-block input[type="email"], +.list-block input[type="tel"], +.list-block input[type="url"], +.list-block input[type="date"], +.list-block input[type="datetime-local"], +.list-block input[type="time"], +.list-block input[type="number"], +.list-block select, +.list-block textarea { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + box-sizing: border-box; + border: none; + background: none; + border-radius: 0 0 0 0; + box-shadow: none; + display: block; + padding: 0 0 0 0.25rem; + margin: 0; + width: 100%; + height: 2.15rem; + color: #3d4145; + font-size: 0.85rem; + font-family: inherit; +} +.list-block input[type="date"], +.list-block input[type="datetime-local"] { + line-height: 2.2rem; +} +.list-block select { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} +.list-block .label { + vertical-align: top; +} +.list-block textarea { + height: 5rem; + resize: none; + line-height: 1.4; + padding-top: 0.4rem; + padding-bottom: 0.35rem; +} +.label-switch { + display: inline-block; + vertical-align: middle; + width: 2.6rem; + border-radius: 0.8rem; + box-sizing: border-box; + height: 1.6rem; + position: relative; + cursor: pointer; + -webkit-align-self: center; + align-self: center; +} +.label-switch .checkbox { + width: 2.6rem; + border-radius: 0.8rem; + box-sizing: border-box; + height: 1.6rem; + background: #e5e5e5; + z-index: 0; + margin: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + cursor: pointer; + position: relative; + -webkit-transition-duration: 300ms; + transition-duration: 300ms; +} +.label-switch .checkbox:before { + content: ' '; + position: absolute; + left: 0.1rem; + top: 0.1rem; + width: 2.4rem; + border-radius: 0.8rem; + box-sizing: border-box; + height: 1.4rem; + background: #fff; + z-index: 1; + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + -webkit-transform: scale(1); + transform: scale(1); +} +.label-switch .checkbox:after { + content: ' '; + height: 1.4rem; + width: 1.4rem; + border-radius: 1.4rem; + background: #fff; + position: absolute; + z-index: 2; + top: 0.1rem; + left: 0.1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.4); + -webkit-transform: translateX(0px); + transform: translateX(0px); + -webkit-transition-duration: 300ms; + transition-duration: 300ms; +} +.label-switch input[type="checkbox"] { + display: none; +} +.label-switch input[type="checkbox"]:checked + .checkbox { + background: #4cd964; +} +.label-switch input[type="checkbox"]:checked + .checkbox:before { + -webkit-transform: scale(0); + transform: scale(0); +} +.label-switch input[type="checkbox"]:checked + .checkbox:after { + -webkit-transform: translateX(1.1rem); + transform: translateX(1.1rem); +} +html.android .label-switch input[type="checkbox"] + .checkbox { + -webkit-transition-duration: 0; + transition-duration: 0; +} +html.android .label-switch input[type="checkbox"] + .checkbox:after, +html.android .label-switch input[type="checkbox"] + .checkbox:before { + -webkit-transition-duration: 0; + transition-duration: 0; +} +.range-slider { + width: 100%; + position: relative; + overflow: hidden; + padding-left: 0.15rem; + padding-right: 0.15rem; + margin-left: -1px; + -webkit-align-self: center; + align-self: center; +} +.range-slider input[type="range"] { + position: relative; + height: 1.4rem; + width: 100%; + margin: 0.2rem 0 0.25rem 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + background: -webkit-gradient(linear, 50% 0, 50% 100%, color-stop(0, #b7b8b7), color-stop(100%, #b7b8b7)); + background: -webkit-linear-gradient(left, #b7b8b7 0, #b7b8b7 100%); + background: linear-gradient(to right, #b7b8b7 0, #b7b8b7 100%); + background-position: center; + background-size: 100% 0.1rem; + background-repeat: no-repeat; + outline: 0; +} +.range-slider input[type="range"]:after { + height: 0.1rem; + background: #fff; + content: ' '; + width: 0.25rem; + top: 50%; + margin-top: -1px; + left: -0.25rem; + z-index: 1; + position: absolute; +} +.range-slider input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + height: 1.4rem; + width: 1.4rem; + position: relative; + background: none; +} +.range-slider input[type="range"]::-webkit-slider-thumb:after { + height: 1.4rem; + width: 1.4rem; + border-radius: 1.4rem; + background: #fff; + z-index: 10; + box-shadow: 0 0.1rem 0.2rem rgba(0, 0, 0, 0.4); + position: absolute; + left: 0; + top: 0; + content: ' '; +} +.range-slider input[type="range"]::-webkit-slider-thumb:before { + position: absolute; + top: 50%; + right: 100%; + width: 100rem; + height: 0.1rem; + margin-top: -1px; + z-index: 1; + background: #0894ec; + content: ' '; +} +label.label-checkbox { + cursor: pointer; +} +label.label-checkbox i.icon-form-checkbox { + width: 1.1rem; + height: 1.1rem; + position: relative; + border-radius: 1.1rem; + border: 1px solid #c7c7cc; + box-sizing: border-box; +} +label.label-checkbox i.icon-form-checkbox:after { + content: ' '; + position: absolute; + left: 50%; + margin-left: -0.3rem; + top: 50%; + margin-top: -0.2rem; + width: 0.6rem; + height: 0.45rem; +} +label.label-checkbox input[type="checkbox"], +label.label-checkbox input[type="radio"] { + display: none; +} +label.label-checkbox input[type="checkbox"]:checked + .item-media i.icon-form-checkbox, +label.label-checkbox input[type="radio"]:checked + .item-media i.icon-form-checkbox { + border: none; + background-color: #0894ec; +} +label.label-checkbox input[type="checkbox"]:checked + .item-media i.icon-form-checkbox:after, +label.label-checkbox input[type="radio"]:checked + .item-media i.icon-form-checkbox:after { + background: no-repeat center; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20x%3D'0px'%20y%3D'0px'%20viewBox%3D'0%200%2012%209'%20xml%3Aspace%3D'preserve'%3E%3Cpolygon%20fill%3D'%23ffffff'%20points%3D'12%2C0.7%2011.3%2C0%203.9%2C7.4%200.7%2C4.2%200%2C4.9%203.9%2C8.8%203.9%2C8.8%203.9%2C8.8%20'%2F%3E%3C%2Fsvg%3E"); + background-size: 0.6rem 0.45rem; +} +label.label-checkbox { + -webkit-transition-duration: 300ms; + transition-duration: 300ms; +} +html:not(.watch-active-state) label.label-checkbox:active, +label.label-checkbox.active-state { + -webkit-transition: 0ms; + transition: 0ms; + background-color: #d9d9d9; +} +html:not(.watch-active-state) label.label-checkbox:active .item-inner:after, +label.label-checkbox.active-state .item-inner:after { + background-color: transparent; +} +.smart-select select { + display: none; +} +/* === Search Bar === */ +.searchbar { + padding: 8px 0; + overflow: hidden; + height: 2.2rem; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.searchbar .searchbar-cancel { + margin-right: -3rem; + width: 2.2rem; + float: right; + height: 1.4rem; + line-height: 1.4rem; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + opacity: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.searchbar .search-input { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + margin-right: 0; + -webkit-transition: all .3s; + transition: all .3s; +} +.searchbar .search-input input { + margin: 0; + height: 1.4rem; +} +.searchbar.searchbar-active .searchbar-cancel { + margin-right: 0; + opacity: 1; +} +.searchbar.searchbar-active .searchbar-cancel + .search-input { + margin-right: 2.5rem; +} +.search-input { + position: relative; +} +.search-input input { + box-sizing: border-box; + width: 100%; + height: 1.4rem; + display: block; + border: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0.25rem; + font-family: inherit; + color: #3d4145; + font-size: 0.7rem; + font-weight: normal; + padding: 0 0.5rem; + background-color: #fff; + border: 1px solid #b4b4b4; +} +.search-input input::-webkit-input-placeholder { + color: #cccccc; + opacity: 1; +} +.search-input .icon { + position: absolute; + font-size: 0.9rem; + color: #b4b4b4; + top: 50%; + left: 0.3rem; + -webkit-transform: translate3D(0, -50%, 0); + transform: translate3D(0, -50%, 0); +} +.search-input label + input { + padding-left: 1.4rem; +} +.bar .searchbar { + margin: 0 -0.5rem; + padding: 0.4rem 0.5rem; + background: rgba(0, 0, 0, 0.1); +} +.bar .searchbar .search-input input { + border: 0; +} +.bar .searchbar .searchbar-cancel { + color: #5f646e; +} +.button { + border: 1px solid #0894ec; + color: #0894ec; + text-decoration: none; + text-align: center; + display: block; + border-radius: 0.25rem; + line-height: 1.25rem; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + background: none; + padding: 0 0.5rem; + margin: 0; + height: 1.35rem; + white-space: nowrap; + position: relative; + text-overflow: ellipsis; + font-size: 0.7rem; + font-family: inherit; + cursor: pointer; +} +input[type="submit"].button, +input[type="button"].button { + width: 100%; +} +.button:active { + color: #0a8ddf; + border-color: #0a8ddf; +} +.button.button-round { + border-radius: 1.25rem; +} +.button.active, +.button.active:active { + color: #0a8ddf; + border-color: #0a8ddf; +} +.button.button-big { + font-size: 0.85rem; + height: 2.4rem; + line-height: 2.3rem; +} +.button.button-fill { + color: #fff; + background: #0894ec; + border: none; + line-height: 1.35rem; +} +.button.button-fill.active, +.button.button-fill:active { + background: #0a8ddf; +} +.button.button-fill.button-big { + line-height: 2.4rem; +} +.button .button-link { + padding-top: 0.3rem; + padding-bottom: 0.3rem; + color: #0894ec; + background-color: transparent; + border: 0; +} +.button i.icon:first-child { + margin-right: 0.5rem; +} +.button i.icon:last-child { + margin-left: 0.5rem; +} +.button i.icon:first-child:last-child { + margin-left: 0; + margin-right: 0; +} +.button-light { + border-color: #cccccc; + color: #cccccc; + color: #5f646e; +} +.button-light:active { + border-color: #0a8ddf; + color: #0a8ddf; +} +.button-light.button-fill { + color: white; + background-color: #cccccc; +} +.button-light.button-fill:active { + background-color: #0a8ddf; +} +.button-dark { + border-color: #6e727b; + color: #6e727b; + color: #5f646e; +} +.button-dark:active { + border-color: #0a8ddf; + color: #0a8ddf; +} +.button-dark.button-fill { + color: white; + background-color: #6e727b; +} +.button-dark.button-fill:active { + background-color: #0a8ddf; +} +.button-success { + border-color: #4cd964; + color: #4cd964; +} +.button-success:active { + border-color: #2ac845; + color: #2ac845; +} +.button-success.button-fill { + color: white; + background-color: #4cd964; +} +.button-success.button-fill:active { + background-color: #2ac845; +} +.button-danger { + border-color: #f6383a; + color: #f6383a; +} +.button-danger:active { + border-color: #f00b0d; + color: #f00b0d; +} +.button-danger.button-fill { + color: white; + background-color: #f6383a; +} +.button-danger.button-fill:active { + background-color: #f00b0d; +} +.button-warning { + border-color: #ff6600; + color: #ff6600; +} +.button-warning:active { + border-color: #cc5200; + color: #cc5200; +} +.button-warning.button-fill { + color: white; + background-color: #ff6600; +} +.button-warning.button-fill:active { + background-color: #cc5200; +} +.button.disabled, +.button.button-primary.disabled, +.button.button-success.disabled, +.button.button-danger.disabled, +.button.button-warning.disabled { + border-color: #c8c9cb; + color: #c8c9cb; + cursor: not-allowed; +} +.button.disabled:active, +.button.button-primary.disabled:active, +.button.button-success.disabled:active, +.button.button-danger.disabled:active, +.button.button-warning.disabled:active { + border-color: #c8c9cb; + color: #c8c9cb; +} +.button.disabled.button-fill, +.button.button-primary.disabled.button-fill, +.button.button-success.disabled.button-fill, +.button.button-danger.disabled.button-fill, +.button.button-warning.disabled.button-fill { + color: white; + background-color: #c8c9cb; +} +.button.disabled.button-fill:active, +.button.button-primary.disabled.button-fill:active, +.button.button-success.disabled.button-fill:active, +.button.button-danger.disabled.button-fill:active, +.button.button-warning.disabled.button-fill:active { + background-color: #c8c9cb; +} +.buttons-row, +.buttons-tab { + -webkit-align-self: center; + align-self: center; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-lines: single; + -moz-box-lines: single; + -webkit-flex-wrap: nowrap; + flex-wrap: nowrap; +} +.buttons-row .button { + border-radius: 0 0 0 0; + margin-left: -1px; + width: 100%; + -webkit-box-flex: 1; + -ms-flex: 1; + border-color: #0894ec; + color: #0894ec; +} +.buttons-row .button.active { + background-color: #0894ec; + color: white; + z-index: 90; +} +.buttons-row .button:first-child { + border-radius: 0.25rem 0 0 0.25rem; + margin-left: 0; + border-left-width: 1px; + border-left-style: solid; +} +.buttons-row .button:last-child { + border-radius: 0 0.25rem 0.25rem 0; +} +.buttons-row .button.button-round:first-child { + border-radius: 1.35rem 0 0 1.35rem; +} +.buttons-row .button.button-round:last-child { + border-radius: 0 1.35rem 1.35rem 0; +} +.buttons-tab { + background: white; + position: relative; +} +.buttons-tab:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #d0d0d0; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .buttons-tab:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .buttons-tab:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.buttons-tab .button { + color: #5f646e; + font-size: 0.8rem; + width: 100%; + height: 2rem; + line-height: 2rem; + -webkit-box-flex: 1; + -ms-flex: 1; + border: 0; + border-bottom: 2px solid transparent; + border-radius: 0; +} +.buttons-tab .button.active { + color: #0894ec; + border-color: #0894ec; + z-index: 100; +} +.buttons-fixed { + position: fixed; + z-index: 99; + width: 100%; +} +/* === Tabs === */ +.tabs .tab { + display: none; +} +.tabs .tab.active { + display: block; +} +.tabs-animated-wrap { + position: relative; + width: 100%; + overflow: hidden; + height: 100%; +} +.tabs-animated-wrap > .tabs { + display: -webkit-box; + display: -webkit-flex; + display: flex; + height: 100%; + -webkit-transition: 300ms; + transition: 300ms; +} +.tabs-animated-wrap > .tabs > .tab { + width: 100%; + display: block; + -webkit-flex-shrink: 0; + -ms-flex: 0 0 auto; + -webkit-flex-shrink: 0; + flex-shrink: 0; +} +/* === Pages === */ +.page, +.page-group { + box-sizing: border-box; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: #efeff4; + display: none; + overflow: hidden; +} +.page.page-current, +.page-group.page-current, +.page.page-visible, +.page-group.page-visible, +.page.page-from-center-to-left, +.page-group.page-from-center-to-left, +.page.page-from-center-to-right, +.page-group.page-from-center-to-right, +.page.page-from-right-to-center, +.page-group.page-from-right-to-center, +.page.page-from-left-to-center, +.page-group.page-from-left-to-center { + display: block; +} +.page.page-current, +.page-group.page-current { + overflow: hidden; +} +.page-group { + display: block; +} +.page-transitioning, +.page-transitioning .swipeback-page-shadow { + -webkit-transition: 400ms; + transition: 400ms; +} +.page-from-right-to-center { + -webkit-animation: pageFromRightToCenter 400ms forwards; + animation: pageFromRightToCenter 400ms forwards; + z-index: 2002; +} +.page-from-center-to-right { + -webkit-animation: pageFromCenterToRight 400ms forwards; + animation: pageFromCenterToRight 400ms forwards; + z-index: 2002; +} +@-webkit-keyframes pageFromRightToCenter { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + opacity: .9; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +@keyframes pageFromRightToCenter { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + opacity: .9; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +@-webkit-keyframes pageFromCenterToRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } + to { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + opacity: .9; + } +} +@keyframes pageFromCenterToRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } + to { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + opacity: .9; + } +} +.page-from-center-to-left { + -webkit-animation: pageFromCenterToLeft 400ms forwards; + animation: pageFromCenterToLeft 400ms forwards; +} +.page-from-left-to-center { + -webkit-animation: pageFromLeftToCenter 400ms forwards; + animation: pageFromLeftToCenter 400ms forwards; +} +@-webkit-keyframes pageFromCenterToLeft { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0.5; + -webkit-transform: translate3d(-20%, 0, 0); + transform: translate3d(-20%, 0, 0); + } +} +@keyframes pageFromCenterToLeft { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0.5; + -webkit-transform: translate3d(-20%, 0, 0); + transform: translate3d(-20%, 0, 0); + } +} +@-webkit-keyframes pageFromLeftToCenter { + from { + opacity: .5; + -webkit-transform: translate3d(-20%, 0, 0); + transform: translate3d(-20%, 0, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes pageFromLeftToCenter { + from { + opacity: .5; + -webkit-transform: translate3d(-20%, 0, 0); + transform: translate3d(-20%, 0, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.content-inner { + box-sizing: border-box; + border-top: 1px solid transparent; + margin-top: -1px; + padding-bottom: 0.5rem; +} +.javascript-scroll { + overflow: hidden; +} +/* === Pull To Refresh === */ +.pull-to-refresh-layer { + position: relative; + left: 0; + top: 0; + width: 100%; + height: 2.2rem; +} +.pull-to-refresh-layer .preloader { + position: absolute; + left: 50%; + top: 50%; + margin-left: -0.5rem; + margin-top: -0.5rem; + visibility: hidden; +} +.pull-to-refresh-layer .pull-to-refresh-arrow { + width: 0.65rem; + height: 1rem; + position: absolute; + left: 50%; + top: 50%; + margin-left: -0.15rem; + margin-top: -0.5rem; + background: no-repeat center; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2026%2040'%3E%3Cpolygon%20points%3D'9%2C22%209%2C0%2017%2C0%2017%2C22%2026%2C22%2013.5%2C40%200%2C22'%20fill%3D'%238c8c8c'%2F%3E%3C%2Fsvg%3E"); + background-size: 0.65rem 1rem; + z-index: 10; + -webkit-transform: rotate(0deg) translate3d(0, 0, 0); + transform: rotate(0deg) translate3d(0, 0, 0); + -webkit-transition-duration: 300ms; + transition-duration: 300ms; +} +.pull-to-refresh-content { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.pull-to-refresh-content.transitioning, +.pull-to-refresh-content.refreshing { + -webkit-transition: -webkit-transform 400ms; + transition: transform 400ms; +} +.pull-to-refresh-content:not(.refreshing) .pull-to-refresh-layer .preloader { + -webkit-animation: none; + animation: none; +} +.pull-to-refresh-content.refreshing .pull-to-refresh-arrow { + visibility: hidden; + -webkit-transition-duration: 0ms; + transition-duration: 0ms; +} +.pull-to-refresh-content.refreshing .preloader { + visibility: visible; +} +.pull-to-refresh-content.pull-up .pull-to-refresh-arrow { + -webkit-transform: rotate(180deg) translate3d(0, 0, 0); + transform: rotate(180deg) translate3d(0, 0, 0); +} +.pull-to-refresh-content { + top: -2.2rem; +} +.pull-to-refresh-content.refreshing { + -webkit-transform: translate3d(0, 2.2rem, 0); + transform: translate3d(0, 2.2rem, 0); +} +.bar-nav ~ .pull-to-refresh-content, +.bar-footer ~ .pull-to-refresh-content, +.bar-tab ~ .pull-to-refresh-content { + top: 0; +} +.bar-nav ~ .pull-to-refresh-content.refreshing, +.bar-footer ~ .pull-to-refresh-content.refreshing, +.bar-tab ~ .pull-to-refresh-content.refreshing { + -webkit-transform: translate3d(0, 2.2rem, 0); + transform: translate3d(0, 2.2rem, 0); +} +.bar-header-secondary ~ .pull-to-refresh-content, +.bar-footer-secondary ~ .pull-to-refresh-content { + top: 2.2rem; +} +.infinite-scroll-preloader { + margin: 0.5rem; + text-align: center; +} +.infinite-scroll-preloader .preloader { + width: 1.5rem; + height: 1.5rem; +} +.infinite-scroll-top .infinite-scroll-preloader { + position: absolute; + width: 100%; + top: 0; + margin: 0; +} +/* === Modals === */ +.modal-overlay, +.preloader-indicator-overlay, +.popup-overlay { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.4); + z-index: 10600; + visibility: hidden; + opacity: 0; + -webkit-transition-duration: 400ms; + transition-duration: 400ms; +} +.modal-overlay.modal-overlay-visible, +.preloader-indicator-overlay.modal-overlay-visible, +.popup-overlay.modal-overlay-visible { + visibility: visible; + opacity: 1; +} +.popup-overlay { + z-index: 10200; +} +.modal { + width: 13.5rem; + position: absolute; + z-index: 11000; + left: 50%; + margin-left: -6.75rem; + margin-top: 0; + top: 50%; + text-align: center; + border-radius: 0.35rem; + opacity: 0; + -webkit-transform: translate3d(0, 0, 0) scale(1.185); + transform: translate3d(0, 0, 0) scale(1.185); + -webkit-transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + color: #3d4145; + display: none; +} +.modal.modal-in { + opacity: 1; + -webkit-transition-duration: 400ms; + transition-duration: 400ms; + -webkit-transform: translate3d(0, 0, 0) scale(1); + transform: translate3d(0, 0, 0) scale(1); +} +.modal.modal-out { + opacity: 0; + z-index: 10999; + -webkit-transition-duration: 400ms; + transition-duration: 400ms; + -webkit-transform: translate3d(0, 0, 0) scale(0.815); + transform: translate3d(0, 0, 0) scale(0.815); +} +.modal-inner { + padding: 0.75rem; + border-radius: 0.35rem 0.35rem 0 0; + position: relative; + background: #e8e8e8; +} +.modal-inner:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #b5b5b5; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .modal-inner:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .modal-inner:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.modal-title { + font-weight: 500; + font-size: 0.9rem; + text-align: center; +} +.modal-title + .modal-text { + margin-top: 0.25rem; +} +.modal-buttons { + height: 2.2rem; + overflow: hidden; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; +} +.modal-buttons.modal-buttons-vertical { + display: block; + height: auto; +} +.modal-button { + width: 100%; + padding: 0 0.25rem; + height: 2.2rem; + font-size: 0.85rem; + line-height: 2.2rem; + text-align: center; + color: #0894ec; + background: #e8e8e8; + display: block; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + cursor: pointer; + box-sizing: border-box; + -webkit-box-flex: 1; + -ms-flex: 1; +} +.modal-button:after { + content: ''; + position: absolute; + right: 0; + top: 0; + left: auto; + bottom: auto; + width: 1px; + height: 100%; + background-color: #b5b5b5; + display: block; + z-index: 15; + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .modal-button:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .modal-button:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.modal-button:first-child { + border-radius: 0 0 0 0.35rem; +} +.modal-button:last-child { + border-radius: 0 0 0.35rem 0; +} +.modal-button:last-child:after { + display: none; +} +.modal-button:first-child:last-child { + border-radius: 0 0 0.35rem 0.35rem; +} +.modal-button.modal-button-bold { + font-weight: 500; +} +html:not(.watch-active-state) .modal-button:active, +.modal-button.active-state { + background: #d4d4d4; +} +.modal-buttons-vertical .modal-button { + border-radius: 0; +} +.modal-buttons-vertical .modal-button:after { + display: none; +} +.modal-buttons-vertical .modal-button:before { + display: none; +} +.modal-buttons-vertical .modal-button:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #b5b5b5; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .modal-buttons-vertical .modal-button:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .modal-buttons-vertical .modal-button:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.modal-buttons-vertical .modal-button:last-child { + border-radius: 0 0 0.35rem 0.35rem; +} +.modal-buttons-vertical .modal-button:last-child:after { + display: none; +} +.modal-no-buttons .modal-inner { + border-radius: 0.35rem; +} +.modal-no-buttons .modal-inner:after { + display: none; +} +.modal-no-buttons .modal-buttons { + display: none; +} +.actions-modal { + position: absolute; + left: 0; + bottom: 0; + z-index: 11000; + width: 100%; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} +.actions-modal.modal-in { + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.actions-modal.modal-out { + z-index: 10999; + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} +.actions-modal-group { + margin: 0.4rem; +} +.actions-modal-button, +.actions-modal-label { + width: 100%; + text-align: center; + font-weight: normal; + margin: 0; + background: rgba(243, 243, 243, 0.95); + box-sizing: border-box; + display: block; + position: relative; +} +.actions-modal-button:after, +.actions-modal-label:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #d2d2d6; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .actions-modal-button:after, + .actions-modal-label:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .actions-modal-button:after, + .actions-modal-label:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.actions-modal-button a, +.actions-modal-label a { + text-decoration: none; + color: inherit; +} +.actions-modal-button b, +.actions-modal-label b { + font-weight: 500; +} +.actions-modal-button.actions-modal-button-bold, +.actions-modal-label.actions-modal-button-bold { + font-weight: 500; +} +.actions-modal-button.actions-modal-button-danger, +.actions-modal-label.actions-modal-button-danger { + color: #f6383a; +} +.actions-modal-button.color-danger, +.actions-modal-label.color-danger { + color: #f6383a; +} +.actions-modal-button.bg-danger, +.actions-modal-label.bg-danger { + background: #f6383a; + color: white; +} +.actions-modal-button.bg-danger:active, +.actions-modal-label.bg-danger:active { + background: #f00b0d; +} +.actions-modal-button:first-child, +.actions-modal-label:first-child { + border-radius: 0.2rem 0.2rem 0 0; +} +.actions-modal-button:last-child, +.actions-modal-label:last-child { + border-radius: 0 0 0.2rem 0.2rem; +} +.actions-modal-button:last-child:after, +.actions-modal-label:last-child:after { + display: none; +} +.actions-modal-button:first-child:last-child, +.actions-modal-label:first-child:last-child { + border-radius: 0.2rem; +} +.actions-modal-button.disabled, +.actions-modal-label.disabled { + opacity: 0.95; + color: #8e8e93; +} +.actions-modal-button { + cursor: pointer; + line-height: 2.15rem; + font-size: 1rem; + color: #0894ec; +} +.actions-modal-button:active, +.actions-modal-button.active-state { + background: #dcdcdc; +} +.actions-modal-label { + font-size: 0.7rem; + line-height: 1.3; + min-height: 2.2rem; + padding: 0.4rem 0.5rem; + color: #5f646e; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +input.modal-text-input { + box-sizing: border-box; + height: 1.5rem; + background: #fff; + margin: 0; + margin-top: 0.75rem; + padding: 0 0.25rem; + border: 1px solid #a0a0a0; + border-radius: 0.25rem; + width: 100%; + font-size: 0.7rem; + font-family: inherit; + display: block; + box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +input.modal-text-input + input.modal-text-input { + margin-top: 0.25rem; +} +input.modal-text-input.modal-text-input-double { + border-radius: 0.25rem 0.25rem 0 0; +} +input.modal-text-input.modal-text-input-double + input.modal-text-input { + margin-top: 0; + border-top: 0; + border-radius: 0 0 0.25rem 0.25rem; +} +.popup, +.login-screen { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 10400; + background: #fff; + box-sizing: border-box; + display: none; + overflow: auto; + -webkit-overflow-scrolling: touch; + -webkit-transition-property: -webkit-transform; + transition-property: transform; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} +.popup.modal-in, +.login-screen.modal-in, +.popup.modal-out, +.login-screen.modal-out { + -webkit-transition-duration: 400ms; + transition-duration: 400ms; +} +.popup.modal-in, +.login-screen.modal-in { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.popup.modal-out, +.login-screen.modal-out { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} +.login-screen.modal-in, +.login-screen.modal-out { + display: block; +} +html.with-statusbar-overlay .popup { + height: -webkit-calc(100% - 1rem); + height: calc(100% - 1rem); + top: 1rem; +} +html.with-statusbar-overlay .popup-overlay { + z-index: 9800; +} +@media all and (max-width: 629px), (max-height: 629px) { + html.with-statusbar-overlay .popup { + height: -webkit-calc(100% - 1rem); + height: calc(100% - 1rem); + top: 1rem; + } + html.with-statusbar-overlay .popup-overlay { + z-index: 9800; + } +} +html.with-statusbar-overlay .login-screen, +html.with-statusbar-overlay .popup.tablet-fullscreen { + height: -webkit-calc(100% - 1rem); + height: calc(100% - 1rem); + top: 1rem; +} +.modal .preloader { + width: 1.7rem; + height: 1.7rem; +} +.preloader-indicator-overlay { + visibility: visible; + opacity: 0; + background: none; +} +.preloader-indicator-modal { + position: absolute; + left: 50%; + top: 50%; + padding: 0.4rem; + margin-left: -1.25rem; + margin-top: -1.25rem; + background: rgba(0, 0, 0, 0.8); + z-index: 11000; + border-radius: 0.25rem; +} +.preloader-indicator-modal .preloader { + display: block; + width: 1.7rem; + height: 1.7rem; +} +.picker-modal { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + height: 13rem; + z-index: 11500; + display: none; + -webkit-transition-property: -webkit-transform; + transition-property: transform; + background: #cfd5da; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} +.picker-modal.modal-in, +.picker-modal.modal-out { + -webkit-transition-duration: 400ms; + transition-duration: 400ms; +} +.picker-modal.modal-in { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.picker-modal.modal-out { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} +.picker-modal .picker-modal-inner { + height: 100%; + position: relative; +} +.picker-modal .toolbar { + position: relative; + width: 100%; +} +.picker-modal .toolbar:before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: auto; + right: auto; + height: 1px; + width: 100%; + background-color: #999999; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .picker-modal .toolbar:before { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .picker-modal .toolbar:before { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.picker-modal .toolbar + .picker-modal-inner { + height: -webkit-calc(100% - 2.2rem); + height: calc(100% - 2.2rem); +} +.picker-modal.picker-modal-inline { + display: block; + position: relative; + background: none; + z-index: inherit; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.picker-modal.picker-modal-inline .toolbar:before { + display: none; +} +.picker-modal.picker-modal-inline .toolbar:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #999999; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .picker-modal.picker-modal-inline .toolbar:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .picker-modal.picker-modal-inline .toolbar:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.toast { + background: rgba(0, 0, 0, 0.8); + border-radius: 1rem; + color: white; + padding: 0 .8rem; + height: 2rem; + line-height: 2rem; + font-size: 0.8rem; + width: auto; +} +/* === Preloader === */ +.preloader { + display: inline-block; + width: 1rem; + height: 1rem; + -webkit-transform-origin: 50%; + transform-origin: 50%; + -webkit-animation: preloader-spin 1s steps(12, end) infinite; + animation: preloader-spin 1s steps(12, end) infinite; +} +.preloader:after { + display: block; + content: ""; + width: 100%; + height: 100%; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); + background-position: 50%; + background-size: 100%; + background-repeat: no-repeat; +} +.preloader-white:after { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); +} +@-webkit-keyframes preloader-spin { + 100% { + -webkit-transform: rotate(360deg); + } +} +@keyframes preloader-spin { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +/* === Cards === */ +.cards-list ul, +.card .list-block ul { + background: none; +} +.cards-list > ul:before, +.card .list-block > ul:before { + display: none; +} +.cards-list > ul:after, +.card .list-block > ul:after { + display: none; +} +.card { + background: #fff; + box-shadow: 0 0.05rem 0.1rem rgba(0, 0, 0, 0.3); + margin: 0.5rem; + position: relative; + border-radius: 0.1rem; + font-size: 0.7rem; +} +.card .list-block, +.card .content-block { + margin: 0; +} +.row:not(.no-gutter) .col > .card { + margin-left: 0; + margin-right: 0; +} +.card-content { + position: relative; +} +.card-content-inner { + padding: 0.75rem; + position: relative; +} +.card-content-inner > p:first-child { + margin-top: 0; +} +.card-content-inner > p:last-child { + margin-bottom: 0; +} +.card-content-inner > .list-block, +.card-content-inner > .content-block { + margin: -0.75rem; +} +.card-header, +.card-footer { + min-height: 2.2rem; + position: relative; + padding: 0.5rem 0.75rem; + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.card-header[valign="top"], +.card-footer[valign="top"] { + -webkit-box-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; +} +.card-header[valign="bottom"], +.card-footer[valign="bottom"] { + -webkit-box-align: end; + -webkit-align-items: flex-end; + align-items: flex-end; +} +.card-header a.link, +.card-footer a.link { + line-height: 2.2rem; + height: 2.2rem; + text-decoration: none; + position: relative; + margin-top: -0.5rem; + margin-bottom: -0.5rem; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-transition-duration: 300ms; + transition-duration: 300ms; +} +html:not(.watch-active-state) .card-header a.link:active, +html:not(.watch-active-state) .card-footer a.link:active, +.card-header a.link.active-state, +.card-footer a.link.active-state { + opacity: 0.3; + -webkit-transition-duration: 0ms; + transition-duration: 0ms; +} +.card-header a.link i + span, +.card-footer a.link i + span, +.card-header a.link i + i, +.card-footer a.link i + i, +.card-header a.link span + i, +.card-footer a.link span + i, +.card-header a.link span + span, +.card-footer a.link span + span { + margin-left: 0.35rem; +} +.card-header a.link i.icon, +.card-footer a.link i.icon { + display: block; +} +.card-header a.icon-only, +.card-footer a.icon-only { + min-width: 2.2rem; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + margin: 0; +} +.card-header { + border-radius: 0.1rem 0.1rem 0 0; + font-size: 0.85rem; +} +.card-header:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #e1e1e1; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .card-header:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .card-header:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.card-header .card-cover { + width: 100%; + display: block; +} +.card-header.no-border:after { + display: none; +} +.card-header.no-padding { + padding: 0; +} +.card-footer { + border-radius: 0 0 0.1rem 0.1rem; + color: #5f646e; +} +.card-footer:before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: auto; + right: auto; + height: 1px; + width: 100%; + background-color: #e1e1e1; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .card-footer:before { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .card-footer:before { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.card-footer.no-border:before { + display: none; +} +.facebook-card .card-header { + display: block; + padding: 0.5rem; +} +.facebook-card .facebook-avatar { + float: left; +} +.facebook-card .facebook-name { + margin-left: 2.2rem; + font-size: 0.7rem; + font-weight: 500; +} +.facebook-card .facebook-date { + margin-left: 2.2rem; + font-size: 0.65rem; + color: #5f646e; +} +.facebook-card .card-footer { + background: #fafafa; +} +.facebook-card .card-footer a { + color: #5f646e; + font-weight: 500; +} +.facebook-card .card-content img { + display: block; +} +.facebook-card .card-content-inner { + padding: 0.75rem 0.5rem; +} +/* === Panels === */ +.panel-overlay { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0); + opacity: 0; + z-index: 5999; + display: none; +} +.panel { + z-index: 1000; + display: none; + background: #111; + color: white; + box-sizing: border-box; + overflow: auto; + -webkit-overflow-scrolling: touch; + position: absolute; + width: 12rem; + top: 0; + height: 100%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: -webkit-transform 400ms; + transition: transform 400ms; +} +.panel.panel-left.panel-cover { + z-index: 6000; + left: -12rem; +} +.panel.panel-left.panel-reveal { + left: 0; +} +.panel.panel-right.panel-cover { + z-index: 6000; + right: -12rem; +} +.panel.panel-right.panel-reveal { + right: 0; +} +body.with-panel-left-cover .page, +body.with-panel-right-cover .page { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: -webkit-transform 400ms; + transition: transform 400ms; +} +body.with-panel-left-cover .panel-overlay, +body.with-panel-right-cover .panel-overlay { + display: block; +} +body.with-panel-left-reveal .page, +body.with-panel-right-reveal .page { + -webkit-transition: 400ms; + transition: 400ms; + -webkit-transition-property: -webkit-transform; + transition-property: transform; +} +body.with-panel-left-reveal .panel-overlay, +body.with-panel-right-reveal .panel-overlay { + display: block; +} +body.with-panel-left-reveal .page { + -webkit-transform: translate3d(12rem, 0, 0); + transform: translate3d(12rem, 0, 0); +} +body.with-panel-left-reveal .panel-overlay { + margin-left: 12rem; +} +body.with-panel-left-cover .panel-left { + -webkit-transform: translate3d(12rem, 0, 0); + transform: translate3d(12rem, 0, 0); +} +body.with-panel-right-reveal .page { + -webkit-transform: translate3d(-12rem, 0, 0); + transform: translate3d(-12rem, 0, 0); +} +body.with-panel-right-reveal .panel-overlay { + margin-left: -12rem; +} +body.with-panel-right-cover .panel-right { + -webkit-transform: translate3d(-12rem, 0, 0); + transform: translate3d(-12rem, 0, 0); +} +body.panel-closing .page { + -webkit-transition: 400ms; + transition: 400ms; + -webkit-transition-property: -webkit-transform; + transition-property: transform; +} +/* === Calendar === */ +.picker-calendar { + background: #fff; + height: 300px; + width: 100%; + overflow: hidden; +} +@media (orientation: landscape) and (max-height: 415px) { + .picker-calendar:not(.picker-modal-inline) { + height: 220px; + } +} +.picker-calendar .picker-modal-inner { + overflow: hidden; +} +.picker-calendar-week-days { + height: 18px; + background: #f7f7f8; + display: -webkit-box; + display: -webkit-flex; + display: flex; + font-size: 11px; + box-sizing: border-box; + position: relative; +} +.picker-calendar-week-days:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #c4c4c4; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .picker-calendar-week-days:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .picker-calendar-week-days:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.picker-calendar-week-days .picker-calendar-week-day { + -webkit-flex-shrink: 1; + -ms-flex: 0 1 auto; + -webkit-flex-shrink: 1; + flex-shrink: 1; + width: 14.28571429%; + width: -webkit-calc(100% / 7); + width: calc(100% / 7); + line-height: 17px; + text-align: center; +} +.picker-calendar-week-days + .picker-calendar-months { + height: -webkit-calc(100% - 18px); + height: calc(100% - 18px); +} +.picker-calendar-months { + width: 100%; + height: 100%; + overflow: hidden; + position: relative; +} +.picker-calendar-months-wrapper { + position: relative; + width: 100%; + height: 100%; + -webkit-transition: 300ms; + transition: 300ms; +} +.picker-calendar-month { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-flex-direction: column; + flex-direction: column; + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; +} +.picker-calendar-row { + height: 16.66666667%; + height: -webkit-calc(100% / 6); + height: calc(100% / 6); + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-shrink: 1; + -ms-flex: 0 1 auto; + -webkit-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + position: relative; +} +.picker-calendar-row:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #cccccc; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .picker-calendar-row:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .picker-calendar-row:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.picker-calendar-row:last-child:after { + display: none; +} +.picker-calendar-day { + -webkit-flex-shrink: 1; + -ms-flex: 0 1 auto; + -webkit-flex-shrink: 1; + flex-shrink: 1; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + box-sizing: border-box; + width: 14.28571429%; + width: -webkit-calc(100% / 7); + width: calc(100% / 7); + text-align: center; + color: #3d4145; + font-size: 15px; + cursor: pointer; +} +.picker-calendar-day.picker-calendar-day-prev, +.picker-calendar-day.picker-calendar-day-next { + color: #cccccc; +} +.picker-calendar-day.picker-calendar-day-disabled { + color: #d4d4d4; + cursor: auto; +} +.picker-calendar-day.picker-calendar-day-today span { + background: #e3e3e3; +} +.picker-calendar-day.picker-calendar-day-selected span { + background: #0894ec; + color: #fff; +} +.picker-calendar-day span { + display: inline-block; + border-radius: 100%; + width: 30px; + height: 30px; + line-height: 30px; +} +.picker-calendar-month-picker, +.picker-calendar-year-picker { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + width: 50%; + max-width: 200px; + -webkit-flex-shrink: 10; + -ms-flex: 0 10 auto; + -webkit-flex-shrink: 10; + flex-shrink: 10; +} +.picker-calendar-month-picker a.icon-only, +.picker-calendar-year-picker a.icon-only { + min-width: 36px; +} +.picker-calendar-month-picker span, +.picker-calendar-year-picker span { + -webkit-flex-shrink: 1; + -ms-flex: 0 1 auto; + -webkit-flex-shrink: 1; + flex-shrink: 1; + position: relative; + overflow: hidden; + text-overflow: ellipsis; +} +.picker-modal .toolbar-inner { + height: 2.2rem; + display: -webkit-box; + display: -webkit-flex; + display: flex; + text-align: center; +} +.picker-calendar-month-picker, +.picker-calendar-year-picker { + display: block; + line-height: 2.2rem; +} +.picker-calendar-month-picker a.icon-only, +.picker-calendar-year-picker a.icon-only { + float: left; + width: 25%; + height: 2.2rem; + line-height: 2rem; +} +.picker-calendar-month-picker .current-month-value, +.picker-calendar-year-picker .current-month-value, +.picker-calendar-month-picker .current-year-value, +.picker-calendar-year-picker .current-year-value { + float: left; + width: 50%; + height: 2.2rem; +} +/* === Columns Picker === */ +.picker-columns { + width: 100%; + height: 13rem; + z-index: 11500; +} +.picker-columns.picker-modal-inline { + height: 10rem; +} +@media (orientation: landscape) and (max-height: 415px) { + .picker-columns:not(.picker-modal-inline) { + height: 10rem; + } +} +.picker-items { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + padding: 0; + text-align: right; + font-size: 1.2rem; + -webkit-mask-box-image: -webkit-linear-gradient(bottom, transparent, transparent 5%, white 20%, white 80%, transparent 95%, transparent); + -webkit-mask-box-image: linear-gradient(to top, transparent, transparent 5%, white 20%, white 80%, transparent 95%, transparent); +} +.bar + .picker-items { + height: 10.8rem; +} +.picker-items-col { + overflow: hidden; + position: relative; + max-height: 100%; +} +.picker-items-col.picker-items-col-left { + text-align: left; +} +.picker-items-col.picker-items-col-center { + text-align: center; +} +.picker-items-col.picker-items-col-right { + text-align: right; +} +.picker-items-col.picker-items-col-divider { + color: #3d4145; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.picker-items-col-normal { + width: 100%; +} +.picker-items-col-wrapper { + -webkit-transition: 300ms; + transition: 300ms; + -webkit-transition-timing-function: ease-out; + transition-timing-function: ease-out; +} +.picker-item { + height: 36px; + line-height: 36px; + padding: 0 10px; + white-space: nowrap; + position: relative; + overflow: hidden; + text-overflow: ellipsis; + color: #999999; + left: 0; + top: 0; + width: 100%; + box-sizing: border-box; + -webkit-transition: 300ms; + transition: 300ms; +} +.picker-items-col-absolute .picker-item { + position: absolute; +} +.picker-item.picker-item-far { + pointer-events: none; +} +.picker-item.picker-selected { + color: #3d4145; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transform: rotateX(0deg); + transform: rotateX(0deg); +} +.picker-center-highlight { + height: 36px; + box-sizing: border-box; + position: absolute; + left: 0; + width: 100%; + top: 50%; + margin-top: -18px; + pointer-events: none; +} +.picker-center-highlight:before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: auto; + right: auto; + height: 1px; + width: 100%; + background-color: #a8abb0; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .picker-center-highlight:before { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .picker-center-highlight:before { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.picker-center-highlight:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #a8abb0; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .picker-center-highlight:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .picker-center-highlight:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.picker-3d .picker-items { + overflow: hidden; + -webkit-perspective: 1200px; + perspective: 1200px; +} +.picker-3d .picker-items-col, +.picker-3d .picker-items-col-wrapper, +.picker-3d .picker-item { + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; +} +.picker-3d .picker-items-col { + overflow: visible; +} +.picker-3d .picker-item { + -webkit-transform-origin: center center -110px; + transform-origin: center center -110px; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transition-timing-function: ease-out; + transition-timing-function: ease-out; +} +.picker-modal .bar { + position: relative; + top: 0; +} +.picker-modal .bar:before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: auto; + right: auto; + height: 1px; + width: 100%; + background-color: #a8abb0; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .picker-modal .bar:before { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .picker-modal .bar:before { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.picker-modal .bar:after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + right: auto; + top: auto; + height: 1px; + width: 100%; + background-color: #a8abb0; + display: block; + z-index: 15; + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2) { + .picker-modal .bar:after { + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); + } +} +@media only screen and (-webkit-min-device-pixel-ratio: 3) { + .picker-modal .bar:after { + -webkit-transform: scaleY(0.33); + transform: scaleY(0.33); + } +} +.picker-modal .bar .title { + color: #5f646e; + font-weight: normal; +} +.city-picker .col-province { + width: 5rem; +} +.city-picker .col-city { + width: 6rem; +} +.city-picker .col-district { + width: 5rem; +} +@font-face { + font-family: "iconfont-sm"; + src: url('../fonts/iconfont.woff') format('woff'), /* chrome、firefox */ + url('../fonts/iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url('../fonts/iconfont.svg#iconfont') format('svg'); + + /* iOS 4.1- */ +} +.icon { + font-family: "iconfont-sm" !important; + font-style: normal; + display: inline-block; + vertical-align: middle; + background-size: 100% auto; + background-position: center; + -webkit-font-smoothing: antialiased; + -webkit-text-stroke-width: 0.2px; + -moz-osx-font-smoothing: grayscale; +} +.icon-app:before { + content: "\e605"; +} +.icon-browser:before { + content: "\e606"; +} +.icon-card:before { + content: "\e607"; +} +.icon-cart:before { + content: "\e600"; +} +.icon-code:before { + content: "\e609"; +} +.icon-computer:before { + content: "\e616"; +} +.icon-remove:before { + content: "\e60a"; +} +.icon-download:before { + content: "\e60b"; +} +.icon-edit:before { + content: "\e60c"; +} +.icon-emoji:before { + content: "\e615"; +} +.icon-star:before { + content: "\e60e"; +} +.icon-friends:before { + content: "\e601"; +} +.icon-gift:before { + content: "\e618"; +} +.icon-phone:before { + content: "\e60f"; +} +.icon-clock:before { + content: "\e619"; +} +.icon-home:before { + content: "\e602"; +} +.icon-menu:before { + content: "\e60d"; +} +.icon-message:before { + content: "\e617"; +} +.icon-me:before { + content: "\e603"; +} +.icon-picture:before { + content: "\e61a"; +} +.icon-share:before { + content: "\e61b"; +} +.icon-settings:before { + content: "\e604"; +} +.icon-refresh:before { + content: "\e61c"; +} +.icon-caret:before { + content: "\e610"; +} +.icon-down:before { + content: "\e611"; +} +.icon-up:before { + content: "\e612"; +} +.icon-right:before { + content: "\e613"; +} +.icon-left:before { + content: "\e614"; +} +.icon-check:before { + content: "\e608"; +} +.icon-search:before { + content: "\e61d"; +} +.icon-new:before { + content: "\e61e"; +} +.icon-next, +.icon-prev { + width: 0.75rem; + height: 0.75rem; +} +.icon-next { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23007aff'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); +} +.icon-prev { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23007aff'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); +} +/* +.icon-plus { + width: 1.25rem; + height: 1.25rem; + font-size: 1.55rem; + line-height: 1rem; + text-align: center; + font-weight: 100; +} +*/ +/*========================== +Framework7 Layouts Themes +==========================*/ +/* === Dark layout === */ +.theme-dark { + background-color: #222426; +} +.theme-dark .bar, +.bar.theme-dark { + background-color: #131313; + color: #ffffff; +} +.theme-dark .bar:after, +.bar.theme-dark:after { + background-color: #333333; +} +.theme-dark .title { + color: #ffffff; +} +.theme-dark .bar-nav, +.theme-dark .bar-tab, +.bar-nav.theme-dark, +.bar-tab.theme-dark { + background-color: #131313; + color: #ffffff; +} +.theme-dark .bar-nav:before, +.theme-dark .bar-tab:before, +.bar-nav.theme-dark:before, +.bar-tab.theme-dark:before { + background-color: #333333; +} +.theme-dark .tab-item { + color: #ffffff; +} +.theme-dark .tab-item.active { + color: #0894ec; +} +.theme-dark .picker-calendar-week-days { + color: #fff; + background-color: #131313; +} +.theme-dark .picker-modal.picker-modal-inline .picker-center-highlight:before { + background-color: #333333; +} +.theme-dark .picker-modal.picker-modal-inline .picker-center-highlight:after { + background-color: #333333; +} +.theme-dark .picker-modal.picker-modal-inline .picker-item.picker-selected { + color: #fff; +} +.theme-dark .picker-modal.picker-modal-inline .picker-calendar-week-days { + color: #fff; +} +.theme-dark .picker-modal.picker-modal-inline .picker-calendar-day { + color: #fff; +} +.theme-dark .picker-modal.picker-modal-inline .picker-calendar-day.picker-calendar-day-prev, +.theme-dark .picker-modal.picker-modal-inline .picker-calendar-day.picker-calendar-day-next { + color: #777; +} +.theme-dark .picker-modal.picker-modal-inline .picker-calendar-day.picker-calendar-day-disabled { + color: #555; +} +.theme-dark .picker-modal.picker-modal-inline .picker-calendar-day.picker-calendar-day-today span { + background: #444; +} +.theme-dark .picker-modal.picker-modal-inline .picker-calendar-week-days:after, +.theme-dark .picker-modal.picker-modal-inline .picker-calendar-row:after { + background-color: #333333; +} +.theme-dark .picker-modal.picker-modal-inline .toolbar ~ .picker-modal-inner .picker-calendar-months:before, +.theme-dark .picker-modal.picker-modal-inline .picker-calendar-week-days ~ .picker-calendar-months:before { + background-color: #333333; +} +.theme-dark .photo-browser .navbar, +.photo-browser.theme-dark .navbar, +.theme-dark .view[data-page="photo-browser-slides"] .navbar, +.view[data-page="photo-browser-slides"].theme-dark .navbar, +.theme-dark .photo-browser .toolbar, +.photo-browser.theme-dark .toolbar, +.theme-dark .view[data-page="photo-browser-slides"] .toolbar, +.view[data-page="photo-browser-slides"].theme-dark .toolbar { + background: rgba(19, 19, 19, 0.95); +} +.theme-dark .tabbar a:not(.active) { + color: #ffffff; +} +.theme-dark .page, +.theme-dark .login-screen-content, +.page.theme-dark, +.theme-dark .panel, +.panel.theme-dark, +.theme-dark .content { + background-color: #222426; + color: #dddddd; +} +.theme-dark .content-block-title { + color: #ffffff; +} +.theme-dark .content-block, +.content-block.theme-dark { + color: #bbbbbb; +} +.theme-dark .content-block-inner { + background: #1c1d1f; + color: #dddddd; +} +.theme-dark .content-block-inner:before { + background-color: #393939; +} +.theme-dark .content-block-inner:after { + background-color: #393939; +} +.theme-dark .list-block ul, +.list-block.theme-dark ul { + background: #1c1d1f; +} +.theme-dark .list-block ul:before, +.list-block.theme-dark ul:before { + background-color: #393939; +} +.theme-dark .list-block ul:after, +.list-block.theme-dark ul:after { + background-color: #393939; +} +.theme-dark .list-block.inset ul, +.list-block.theme-dark.inset ul { + background: #1c1d1f; +} +.theme-dark .list-block.notifications > ul, +.list-block.theme-dark.notifications > ul { + background: none; +} +.theme-dark .list-block .item-title, +.list-block.theme-dark .item-title, +.theme-dark .list-block .item-subtitle, +.list-block.theme-dark .item-subtitle { + color: #bbbbbb; +} +.theme-dark .card { + background: #1c1d1f; +} +.theme-dark .card-header:after { + background-color: #393939; +} +.theme-dark .card-footer { + color: #bbbbbb; +} +.theme-dark .card-footer:before { + background-color: #393939; +} +.theme-dark li.sorting { + background-color: #29292f; +} +.theme-dark .swipeout-actions-left a, +.theme-dark .swipeout-actions-right a { + background-color: #444444; +} +.theme-dark .item-inner:after, +.theme-dark .list-block ul ul li:last-child .item-inner:after { + background-color: #393939; +} +.theme-dark .item-after { + color: #bbbbbb; +} +html:not(.watch-active-state) .theme-dark .item-link:active, +html:not(.watch-active-state) .theme-dark label.label-checkbox:active, +html:not(.watch-active-state) .theme-dark label.label-radio:active, +.theme-dark .item-link.active-state, +.theme-dark label.label-checkbox.active-state, +.theme-dark label.label-radio.active-state { + background-color: #29292f; +} +.theme-dark .item-link.list-button:after { + background-color: #393939; +} +.theme-dark .list-block-label { + color: #bbbbbb; +} +.theme-dark .item-divider, +.theme-dark .list-group-title { + background: #1a1a1a; + color: #bbbbbb; +} +.theme-dark .item-divider:before, +.theme-dark .list-group-title:before { + background-color: #393939; +} +.theme-dark .searchbar { + background: #333333; +} +.theme-dark .searchbar:after { + background-color: #333333; +} +.theme-dark .list-block input[type="text"], +.list-block.theme-dark input[type="text"], +.theme-dark .list-block input[type="password"], +.list-block.theme-dark input[type="password"], +.theme-dark .list-block input[type="email"], +.list-block.theme-dark input[type="email"], +.theme-dark .list-block input[type="tel"], +.list-block.theme-dark input[type="tel"], +.theme-dark .list-block input[type="url"], +.list-block.theme-dark input[type="url"], +.theme-dark .list-block input[type="date"], +.list-block.theme-dark input[type="date"], +.theme-dark .list-block input[type="datetime-local"], +.list-block.theme-dark input[type="datetime-local"], +.theme-dark .list-block input[type="number"], +.list-block.theme-dark input[type="number"], +.theme-dark .list-block select, +.list-block.theme-dark select, +.theme-dark .list-block textarea, +.list-block.theme-dark textarea { + color: #ffffff; +} +.theme-dark .label-switch .checkbox { + background-color: #393939; +} +.theme-dark .label-switch .checkbox:before { + background-color: #1c1d1f; +} +.theme-dark .range-slider input[type="range"]:after { + background: #1c1d1f; +} +.theme-dark .buttons-tab { + background: #131313; +} +.theme-dark .buttons-tab .tab-link:not(.active) { + color: #dddddd; +} +/* === White layout === */ +.theme-white .navbar, +.navbar.theme-white, +.theme-white .subnavbar, +.subnavbar.theme-white { + background-color: #ffffff; + color: #000000; +} +.theme-white .navbar:after, +.navbar.theme-white:after, +.theme-white .subnavbar:after, +.subnavbar.theme-white:after { + background-color: #dddddd; +} +.theme-white .toolbar, +.toolbar.theme-white { + background-color: #ffffff; + color: #000000; +} +.theme-white .toolbar:before, +.toolbar.theme-white:before { + background-color: #dddddd; +} +.theme-white .picker-modal.picker-modal-inline .picker-center-highlight:before { + background-color: #dddddd; +} +.theme-white .picker-modal.picker-modal-inline .picker-center-highlight:after { + background-color: #dddddd; +} +.theme-white .picker-modal.picker-modal-inline .picker-calendar-week-days:after, +.theme-white .picker-modal.picker-modal-inline .picker-calendar-row:after { + background-color: #dddddd; +} +.theme-white .picker-modal.picker-modal-inline .toolbar ~ .picker-modal-inner .picker-calendar-months:before, +.theme-white .picker-modal.picker-modal-inline .picker-calendar-week-days ~ .picker-calendar-months:before { + background-color: #dddddd; +} +.theme-white .photo-browser .navbar, +.photo-browser.theme-white .navbar, +.theme-white .view[data-page="photo-browser-slides"] .navbar, +.view[data-page="photo-browser-slides"].theme-white .navbar, +.theme-white .photo-browser .toolbar, +.photo-browser.theme-white .toolbar, +.theme-white .view[data-page="photo-browser-slides"] .toolbar, +.view[data-page="photo-browser-slides"].theme-white .toolbar { + background: rgba(255, 255, 255, 0.95); +} +.theme-white .tabbar a:not(.active) { + color: #777777; +} +.theme-white .page, +.theme-white .login-screen-content, +.page.theme-white, +.theme-white .panel, +.panel.theme-white { + background-color: #ffffff; + color: #000000; +} +.theme-white .content-block-title { + color: #777777; +} +.theme-white .content-block, +.content-block.theme-white { + color: #777777; +} +.theme-white .content-block-inner { + background: #fafafa; + color: #000000; +} +.theme-white .content-block-inner:after { + background-color: #dddddd; +} +.theme-white .content-block-inner:before { + background-color: #dddddd; +} +.theme-white .list-block ul, +.list-block.theme-white ul { + background: #ffffff; +} +.theme-white .list-block ul:after, +.list-block.theme-white ul:after { + background-color: #dddddd; +} +.theme-white .list-block ul:before, +.list-block.theme-white ul:before { + background-color: #dddddd; +} +.theme-white .list-block.inset ul, +.list-block.theme-white.inset ul { + background: #fafafa; +} +.theme-white .list-block.notifications > ul, +.list-block.theme-white.notifications > ul { + background: none; +} +.theme-white li.sorting { + background-color: #eeeeee; +} +.theme-white .swipeout-actions-left a, +.theme-white .swipeout-actions-right a { + background-color: #c7c7cc; +} +.theme-white .item-inner, +.theme-white .list-block ul ul li:last-child .item-inner { + border-color: #dddddd; +} +.theme-white .item-inner:after, +.theme-white .list-block ul ul li:last-child .item-inner:after { + background-color: #dddddd; +} +.theme-white .item-after { + color: #8e8e93; +} +html:not(.watch-active-state) .theme-white .item-link:active, +html:not(.watch-active-state) .theme-white label.label-checkbox:active, +html:not(.watch-active-state) .theme-white label.label-radio:active, +.theme-white .item-link.active-state, +.theme-white label.label-checkbox.active-state, +.theme-white label.label-radio.active-state { + background-color: #eeeeee; +} +.theme-white .item-link.list-button:after { + background-color: #dddddd; +} +.theme-white .list-block-label { + color: #777777; +} +.theme-white .item-divider, +.theme-white .list-group-title { + background: #f7f7f7; + color: #777777; +} +.theme-white .item-divider:before, +.theme-white .list-group-title:before { + background-color: #dddddd; +} +.theme-white .searchbar { + background: #c9c9ce; +} +.theme-white .searchbar:after { + background-color: #b4b4b4; +} +.theme-white .list-block input[type="text"], +.list-block.theme-white input[type="text"], +.theme-white .list-block input[type="password"], +.list-block.theme-white input[type="password"], +.theme-white .list-block input[type="email"], +.list-block.theme-white input[type="email"], +.theme-white .list-block input[type="tel"], +.list-block.theme-white input[type="tel"], +.theme-white .list-block input[type="url"], +.list-block.theme-white input[type="url"], +.theme-white .list-block input[type="date"], +.list-block.theme-white input[type="date"], +.theme-white .list-block input[type="datetime-local"], +.list-block.theme-white input[type="datetime-local"], +.theme-white .list-block input[type="number"], +.list-block.theme-white input[type="number"], +.theme-white .list-block select, +.list-block.theme-white select, +.theme-white .list-block textarea, +.list-block.theme-white textarea { + color: #777777; +} +.theme-white .label-switch .checkbox { + background-color: #e5e5e5; +} +.theme-white .label-switch .checkbox:before { + background-color: #ffffff; +} +.theme-white .range-slider input[type="range"]:after { + background: #ffffff; +} diff --git a/web/public/assets/fonts/iconfont.svg b/web/public/assets/fonts/iconfont.svg new file mode 100644 index 0000000..9ce3b7b --- /dev/null +++ b/web/public/assets/fonts/iconfont.svg @@ -0,0 +1,158 @@ + + + + +Created by FontForge 20120731 at Thu Jun 4 14:56:48 2015 + By Ads + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/public/assets/fonts/iconfont.ttf b/web/public/assets/fonts/iconfont.ttf new file mode 100644 index 0000000..b5104af Binary files /dev/null and b/web/public/assets/fonts/iconfont.ttf differ diff --git a/web/public/assets/fonts/iconfont.woff b/web/public/assets/fonts/iconfont.woff new file mode 100644 index 0000000..32aa26e Binary files /dev/null and b/web/public/assets/fonts/iconfont.woff differ diff --git a/web/public/assets/images/app-preview/alert.png b/web/public/assets/images/app-preview/alert.png new file mode 100644 index 0000000..8397bb4 Binary files /dev/null and b/web/public/assets/images/app-preview/alert.png differ diff --git a/web/public/assets/images/app-preview/contacts.png b/web/public/assets/images/app-preview/contacts.png new file mode 100644 index 0000000..017cfee Binary files /dev/null and b/web/public/assets/images/app-preview/contacts.png differ diff --git a/web/public/assets/images/app-preview/me.png b/web/public/assets/images/app-preview/me.png new file mode 100644 index 0000000..ffa27b1 Binary files /dev/null and b/web/public/assets/images/app-preview/me.png differ diff --git a/web/public/assets/images/app-preview/message.png b/web/public/assets/images/app-preview/message.png new file mode 100644 index 0000000..d4e6945 Binary files /dev/null and b/web/public/assets/images/app-preview/message.png differ diff --git a/web/public/assets/images/app-preview/workbench.png b/web/public/assets/images/app-preview/workbench.png new file mode 100644 index 0000000..5094ee6 Binary files /dev/null and b/web/public/assets/images/app-preview/workbench.png differ diff --git a/web/public/assets/images/desktop.jpg b/web/public/assets/images/desktop.jpg new file mode 100644 index 0000000..11f661d Binary files /dev/null and b/web/public/assets/images/desktop.jpg differ diff --git a/web/public/assets/images/device-sprite-iPhone-5s.png b/web/public/assets/images/device-sprite-iPhone-5s.png new file mode 100644 index 0000000..27febbc Binary files /dev/null and b/web/public/assets/images/device-sprite-iPhone-5s.png differ diff --git a/web/public/assets/images/umsapp-logo-16x16.png b/web/public/assets/images/umsapp-logo-16x16.png new file mode 100644 index 0000000..b01b42f Binary files /dev/null and b/web/public/assets/images/umsapp-logo-16x16.png differ diff --git a/web/public/assets/images/umsapp-logo-24x24.png b/web/public/assets/images/umsapp-logo-24x24.png new file mode 100644 index 0000000..b8b4da2 Binary files /dev/null and b/web/public/assets/images/umsapp-logo-24x24.png differ diff --git a/web/public/assets/images/umsapp-logo-36x36.png b/web/public/assets/images/umsapp-logo-36x36.png new file mode 100644 index 0000000..7f92fa0 Binary files /dev/null and b/web/public/assets/images/umsapp-logo-36x36.png differ diff --git a/web/public/assets/js/app-preview.js b/web/public/assets/js/app-preview.js new file mode 100644 index 0000000..90f281d --- /dev/null +++ b/web/public/assets/js/app-preview.js @@ -0,0 +1,121 @@ +function AppViewModel() { + var me = this; + me._colorToStr = function(c) { + return c ? ['rgba(', c.r, ',', c.g, ',', c.b, ',', c.a, ')'].join('') : ''; + }; + me._isActiveItem = function(item) { + var ai = this.activeItem(); + return item && ai && item.name === ai.name; + }; + me.data = ko.observable({ + header: { + bgColor: { + r: 19, + g: 30, + b: 41, + a: 1 + }, + textColor: { + r: 230, + b: 180, + g: 145, + a: 1 + } + }, + footer: { + bgColor: { + r: 1, + g: 2, + b: 3, + a: 1 + }, + items: [] + } + }); + me.activeItem = ko.observable({}); + me.setDefaultActiveItem = function() { + me.activeItem($.grep(this.data().footer.items, + function(e) { + return e.active; + })[0]); + }; + me.headerTitle = ko.computed(function() { + var activeItem = this.activeItem(); + return activeItem ? activeItem.text : ''; + }, me); + me.headerBgColor = ko.computed(function() { + return this._colorToStr(this.data().header.bgColor); + }, me); + me.headerTextColor = ko.computed(function() { + return this._colorToStr(this.data().header.textColor); + }, me); + me.footerBgColor = ko.computed(function() { + return this._colorToStr(this.data().footer.bgColor); + }, me); + me.footerItems = ko.computed(function() { + return this.data().footer.items; + }, me); + me.footerItemClick = function(item) { + me.activeItem(item); + // load iframe + var mc = $('#app-middle-content').empty(); + var ai = me.activeItem(); + var url = ai && ai.onTap.startsWith('ph://webview?url=') && + decodeURIComponent(ai.onTap.replace('ph://webview?url=', '')); + if (url) { + mc.append(['
      ', + '', + '
      '].join('')); + } + }; + me.footerItemBgImage = function(item) { + return ['url(', + this._isActiveItem(item) ? + item.iconActive : item.iconNormal, + ')'].join(''); + }; + me.footerItemTextColor = function(item) { + return this._colorToStr(this._isActiveItem(item) ? + item.textActiveColor : item.textNormalColor); + }; + me._middleContentCssMapping = { + 'ph://view/workbench': 'middle-content-workbench', + + 'ph://view/contacts': 'middle-content-contacts', + + 'ph://view/alert-list': 'middle-content-alert', + + 'ph://view/me': 'middle-content-me', + + 'ph://view/room-list': 'middle-content-message' + }; + me.middleContentCss = function() { + var ai = this.activeItem(); + return ai && this._middleContentCssMapping[ai.onTap]; + }; +} + +var vm = new AppViewModel(); + +var firstInit = true; +addEventHandler(window, 'message', function(e) { + vm.data(JSON.parse(e.data)); + vm.setDefaultActiveItem(); + if (firstInit) { + $.hideIndicator(); + firstInit = false; + ko.applyBindings(vm); + } +}) +$.showIndicator(); + +function addEventHandler(el, event, handler) { + if (el.addEventListener) { + el.addEventListener(event, handler, false); + } + else if (el.attachEvent) { + el.attachEvent('on' + event, handler); + } +} diff --git a/web/public/assets/js/html5shiv.js b/web/public/assets/js/html5shiv.js new file mode 100644 index 0000000..85e0ec1 --- /dev/null +++ b/web/public/assets/js/html5shiv.js @@ -0,0 +1,350 @@ +/** +* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +;(function(window, document) { +/*jshint evil:true */ + /** version */ + var version = '3.7.2'; + + /** Preset options */ + var options = window.html5 || {}; + + /** Used to skip problem elements */ + var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; + + /** Not all elements can be cloned in IE **/ + var saveClones = /^(?: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; + + /** Detect whether the browser supports default html5 styles */ + var supportsHtml5Styles; + + /** Name of the expando, to work with multiple documents or to re-shiv one document */ + var expando = '_html5shiv'; + + /** The id for the the documents expando */ + var expanID = 0; + + /** Cached data for each document */ + var expandoData = {}; + + /** Detect whether the browser supports unknown elements */ + var supportsUnknownElements; + + (function() { + try { + var a = document.createElement('a'); + a.innerHTML = ''; + //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles + supportsHtml5Styles = ('hidden' in a); + + supportsUnknownElements = a.childNodes.length == 1 || (function() { + // assign a false positive if unable to shiv + (document.createElement)('a'); + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + } catch(e) { + // assign a false positive if detection fails => unable to shiv + supportsHtml5Styles = true; + supportsUnknownElements = true; + } + + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a style sheet with the given CSS text and adds it to the document. + * @private + * @param {Document} ownerDocument The document. + * @param {String} cssText The CSS text. + * @returns {StyleSheet} The style element. + */ + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + + p.innerHTML = 'x'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } + + /** + * Returns the value of `html5.elements` as an array. + * @private + * @returns {Array} An array of shived element node names. + */ + function getElements() { + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; + } + + /** + * Extends the built-in list of html5 elements + * @memberOf html5 + * @param {String|Array} newElements whitespace separated list or array of new element names to shiv + * @param {Document} ownerDocument The context document. + */ + function addElements(newElements, ownerDocument) { + var elements = html5.elements; + if(typeof elements != 'string'){ + elements = elements.join(' '); + } + if(typeof newElements != 'string'){ + newElements = newElements.join(' '); + } + html5.elements = elements +' '+ newElements; + shivDocument(ownerDocument); + } + + /** + * Returns the data associated to the given document + * @private + * @param {Document} ownerDocument The document. + * @returns {Object} An object of data. + */ + function getExpandoData(ownerDocument) { + var data = expandoData[ownerDocument[expando]]; + if (!data) { + data = {}; + expanID++; + ownerDocument[expando] = expanID; + expandoData[expanID] = data; + } + return data; + } + + /** + * returns a shived element for the given nodeName and document + * @memberOf html5 + * @param {String} nodeName name of the element + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived element. + */ + function createElement(nodeName, ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createElement(nodeName); + } + if (!data) { + data = getExpandoData(ownerDocument); + } + var node; + + if (data.cache[nodeName]) { + node = data.cache[nodeName].cloneNode(); + } else if (saveClones.test(nodeName)) { + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); + } else { + node = data.createElem(nodeName); + } + + // Avoid adding some elements to fragments in IE < 9 because + // * Attributes like `name` or `type` cannot be set/changed once an element + // is inserted into a document/fragment + // * Link elements with `src` attributes that are inaccessible, as with + // a 403 response, will cause the tab/window to crash + // * Script elements appended to fragments will execute when their `src` + // or `text` property is set + return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; + } + + /** + * returns a shived DocumentFragment for the given document + * @memberOf html5 + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived DocumentFragment. + */ + function createDocumentFragment(ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createDocumentFragment(); + } + data = data || getExpandoData(ownerDocument); + var clone = data.frag.cloneNode(), + i = 0, + elems = getElements(), + l = elems.length; + for(;i -1 ) { + props = mouseEventProps; + } + + // copy original event properties over to the new event + // this would happen if we could call $.event.fix instead of $.Event + // but we don't have a way to force an event to be fixed multiple times + if ( oe ) { + for ( i = props.length, prop; i; ) { + prop = props[ --i ]; + event[ prop ] = oe[ prop ]; + } + } + + // make sure that if the mouse and click virtual events are generated + // without a .which one is defined + if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ) { + event.which = 1; + } + + if ( t.search(/^touch/) !== -1 ) { + ne = getNativeEvent( oe ); + t = ne.touches; + ct = ne.changedTouches; + touch = ( t && t.length ) ? t[0] : ( ( ct && ct.length ) ? ct[ 0 ] : undefined ); + + if ( touch ) { + for ( j = 0, len = touchEventProps.length; j < len; j++) { + prop = touchEventProps[ j ]; + event[ prop ] = touch[ prop ]; + } + } + } + + return event; +} + +function getVirtualBindingFlags( element ) { + + var flags = {}, + b, k; + + while ( element ) { + + b = $.data( element, dataPropertyName ); + + for ( k in b ) { + if ( b[ k ] ) { + flags[ k ] = flags.hasVirtualBinding = true; + } + } + element = element.parentNode; + } + return flags; +} + +function getClosestElementWithVirtualBinding( element, eventType ) { + var b; + while ( element ) { + + b = $.data( element, dataPropertyName ); + + if ( b && ( !eventType || b[ eventType ] ) ) { + return element; + } + element = element.parentNode; + } + return null; +} + +function enableTouchBindings() { + blockTouchTriggers = false; +} + +function disableTouchBindings() { + blockTouchTriggers = true; +} + +function enableMouseBindings() { + lastTouchID = 0; + clickBlockList.length = 0; + blockMouseTriggers = false; + + // When mouse bindings are enabled, our + // touch bindings are disabled. + disableTouchBindings(); +} + +function disableMouseBindings() { + // When mouse bindings are disabled, our + // touch bindings are enabled. + enableTouchBindings(); +} + +function startResetTimer() { + clearResetTimer(); + resetTimerID = setTimeout( function() { + resetTimerID = 0; + enableMouseBindings(); + }, $.vmouse.resetTimerDuration ); +} + +function clearResetTimer() { + if ( resetTimerID ) { + clearTimeout( resetTimerID ); + resetTimerID = 0; + } +} + +function triggerVirtualEvent( eventType, event, flags ) { + var ve; + + if ( ( flags && flags[ eventType ] ) || + ( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) { + + ve = createVirtualEvent( event, eventType ); + + $( event.target).trigger( ve ); + } + + return ve; +} + +function mouseEventCallback( event ) { + var touchID = $.data( event.target, touchTargetPropertyName ), + ve; + + if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ) { + ve = triggerVirtualEvent( "v" + event.type, event ); + if ( ve ) { + if ( ve.isDefaultPrevented() ) { + event.preventDefault(); + } + if ( ve.isPropagationStopped() ) { + event.stopPropagation(); + } + if ( ve.isImmediatePropagationStopped() ) { + event.stopImmediatePropagation(); + } + } + } +} + +function handleTouchStart( event ) { + + var touches = getNativeEvent( event ).touches, + target, flags, t; + + if ( touches && touches.length === 1 ) { + + target = event.target; + flags = getVirtualBindingFlags( target ); + + if ( flags.hasVirtualBinding ) { + + lastTouchID = nextTouchID++; + $.data( target, touchTargetPropertyName, lastTouchID ); + + clearResetTimer(); + + disableMouseBindings(); + didScroll = false; + + t = getNativeEvent( event ).touches[ 0 ]; + startX = t.pageX; + startY = t.pageY; + + triggerVirtualEvent( "vmouseover", event, flags ); + triggerVirtualEvent( "vmousedown", event, flags ); + } + } +} + +function handleScroll( event ) { + if ( blockTouchTriggers ) { + return; + } + + if ( !didScroll ) { + triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) ); + } + + didScroll = true; + startResetTimer(); +} + +function handleTouchMove( event ) { + if ( blockTouchTriggers ) { + return; + } + + var t = getNativeEvent( event ).touches[ 0 ], + didCancel = didScroll, + moveThreshold = $.vmouse.moveDistanceThreshold, + flags = getVirtualBindingFlags( event.target ); + + didScroll = didScroll || + ( Math.abs( t.pageX - startX ) > moveThreshold || + Math.abs( t.pageY - startY ) > moveThreshold ); + + if ( didScroll && !didCancel ) { + triggerVirtualEvent( "vmousecancel", event, flags ); + } + + triggerVirtualEvent( "vmousemove", event, flags ); + startResetTimer(); +} + +function handleTouchEnd( event ) { + if ( blockTouchTriggers ) { + return; + } + + disableTouchBindings(); + + var flags = getVirtualBindingFlags( event.target ), + ve, t; + triggerVirtualEvent( "vmouseup", event, flags ); + + if ( !didScroll ) { + ve = triggerVirtualEvent( "vclick", event, flags ); + if ( ve && ve.isDefaultPrevented() ) { + // The target of the mouse events that follow the touchend + // event don't necessarily match the target used during the + // touch. This means we need to rely on coordinates for blocking + // any click that is generated. + t = getNativeEvent( event ).changedTouches[ 0 ]; + clickBlockList.push({ + touchID: lastTouchID, + x: t.clientX, + y: t.clientY + }); + + // Prevent any mouse events that follow from triggering + // virtual event notifications. + blockMouseTriggers = true; + } + } + triggerVirtualEvent( "vmouseout", event, flags); + didScroll = false; + + startResetTimer(); +} + +function hasVirtualBindings( ele ) { + var bindings = $.data( ele, dataPropertyName ), + k; + + if ( bindings ) { + for ( k in bindings ) { + if ( bindings[ k ] ) { + return true; + } + } + } + return false; +} + +function dummyMouseHandler() {} + +function getSpecialEventObject( eventType ) { + var realType = eventType.substr( 1 ); + + return { + setup: function(/* data, namespace */) { + // If this is the first virtual mouse binding for this element, + // add a bindings object to its data. + + if ( !hasVirtualBindings( this ) ) { + $.data( this, dataPropertyName, {} ); + } + + // If setup is called, we know it is the first binding for this + // eventType, so initialize the count for the eventType to zero. + var bindings = $.data( this, dataPropertyName ); + bindings[ eventType ] = true; + + // If this is the first virtual mouse event for this type, + // register a global handler on the document. + + activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1; + + if ( activeDocHandlers[ eventType ] === 1 ) { + $document.bind( realType, mouseEventCallback ); + } + + // Some browsers, like Opera Mini, won't dispatch mouse/click events + // for elements unless they actually have handlers registered on them. + // To get around this, we register dummy handlers on the elements. + + $( this ).bind( realType, dummyMouseHandler ); + + // For now, if event capture is not supported, we rely on mouse handlers. + if ( eventCaptureSupported ) { + // If this is the first virtual mouse binding for the document, + // register our touchstart handler on the document. + + activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; + + if ( activeDocHandlers[ "touchstart" ] === 1 ) { + $document.bind( "touchstart", handleTouchStart ) + .bind( "touchend", handleTouchEnd ) + + // On touch platforms, touching the screen and then dragging your finger + // causes the window content to scroll after some distance threshold is + // exceeded. On these platforms, a scroll prevents a click event from being + // dispatched, and on some platforms, even the touchend is suppressed. To + // mimic the suppression of the click event, we need to watch for a scroll + // event. Unfortunately, some platforms like iOS don't dispatch scroll + // events until *AFTER* the user lifts their finger (touchend). This means + // we need to watch both scroll and touchmove events to figure out whether + // or not a scroll happenens before the touchend event is fired. + + .bind( "touchmove", handleTouchMove ) + .bind( "scroll", handleScroll ); + } + } + }, + + teardown: function(/* data, namespace */) { + // If this is the last virtual binding for this eventType, + // remove its global handler from the document. + + --activeDocHandlers[ eventType ]; + + if ( !activeDocHandlers[ eventType ] ) { + $document.unbind( realType, mouseEventCallback ); + } + + if ( eventCaptureSupported ) { + // If this is the last virtual mouse binding in existence, + // remove our document touchstart listener. + + --activeDocHandlers[ "touchstart" ]; + + if ( !activeDocHandlers[ "touchstart" ] ) { + $document.unbind( "touchstart", handleTouchStart ) + .unbind( "touchmove", handleTouchMove ) + .unbind( "touchend", handleTouchEnd ) + .unbind( "scroll", handleScroll ); + } + } + + var $this = $( this ), + bindings = $.data( this, dataPropertyName ); + + // teardown may be called when an element was + // removed from the DOM. If this is the case, + // jQuery core may have already stripped the element + // of any data bindings so we need to check it before + // using it. + if ( bindings ) { + bindings[ eventType ] = false; + } + + // Unregister the dummy event handler. + + $this.unbind( realType, dummyMouseHandler ); + + // If this is the last virtual mouse binding on the + // element, remove the binding data from the element. + + if ( !hasVirtualBindings( this ) ) { + $this.removeData( dataPropertyName ); + } + } + }; +} + +// Expose our custom events to the jQuery bind/unbind mechanism. + +for ( i = 0; i < virtualEventNames.length; i++ ) { + $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); +} + +// Add a capture click handler to block clicks. +// Note that we require event capture support for this so if the device +// doesn't support it, we punt for now and rely solely on mouse events. +if ( eventCaptureSupported ) { + document.addEventListener( "click", function( e ) { + var cnt = clickBlockList.length, + target = e.target, + x, y, ele, i, o, touchID; + + if ( cnt ) { + x = e.clientX; + y = e.clientY; + threshold = $.vmouse.clickDistanceThreshold; + + // The idea here is to run through the clickBlockList to see if + // the current click event is in the proximity of one of our + // vclick events that had preventDefault() called on it. If we find + // one, then we block the click. + // + // Why do we have to rely on proximity? + // + // Because the target of the touch event that triggered the vclick + // can be different from the target of the click event synthesized + // by the browser. The target of a mouse/click event that is synthesized + // from a touch event seems to be implementation specific. For example, + // some browsers will fire mouse/click events for a link that is near + // a touch event, even though the target of the touchstart/touchend event + // says the user touched outside the link. Also, it seems that with most + // browsers, the target of the mouse/click event is not calculated until the + // time it is dispatched, so if you replace an element that you touched + // with another element, the target of the mouse/click will be the new + // element underneath that point. + // + // Aside from proximity, we also check to see if the target and any + // of its ancestors were the ones that blocked a click. This is necessary + // because of the strange mouse/click target calculation done in the + // Android 2.1 browser, where if you click on an element, and there is a + // mouse/click handler on one of its ancestors, the target will be the + // innermost child of the touched element, even if that child is no where + // near the point of touch. + + ele = target; + + while ( ele ) { + for ( i = 0; i < cnt; i++ ) { + o = clickBlockList[ i ]; + touchID = 0; + + if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) || + $.data( ele, touchTargetPropertyName ) === o.touchID ) { + // XXX: We may want to consider removing matches from the block list + // instead of waiting for the reset timer to fire. + e.preventDefault(); + e.stopPropagation(); + return; + } + } + ele = ele.parentNode; + } + } + }, true); +} +})( jQuery, window, document ); + +(function( $ ) { + $.mobile = {}; +}( jQuery )); + + (function( $, undefined ) { + var support = { + touch: "ontouchend" in document + }; + + $.mobile.support = $.mobile.support || {}; + $.extend( $.support, support ); + $.extend( $.mobile.support, support ); + }( jQuery )); + + +(function( $, window, undefined ) { + var $document = $( document ), + supportTouch = $.mobile.support.touch, + scrollEvent = "touchmove scroll", + touchStartEvent = supportTouch ? "touchstart" : "mousedown", + touchStopEvent = supportTouch ? "touchend" : "mouseup", + touchMoveEvent = supportTouch ? "touchmove" : "mousemove"; + + // setup new event shortcuts + $.each( ( "touchstart touchmove touchend " + + "tap taphold " + + "swipe swipeleft swiperight " + + "scrollstart scrollstop" ).split( " " ), function( i, name ) { + + $.fn[ name ] = function( fn ) { + return fn ? this.bind( name, fn ) : this.trigger( name ); + }; + + // jQuery < 1.8 + if ( $.attrFn ) { + $.attrFn[ name ] = true; + } + }); + + function triggerCustomEvent( obj, eventType, event, bubble ) { + var originalType = event.type; + event.type = eventType; + if ( bubble ) { + $.event.trigger( event, undefined, obj ); + } else { + $.event.dispatch.call( obj, event ); + } + event.type = originalType; + } + + // also handles scrollstop + $.event.special.scrollstart = { + + enabled: true, + setup: function() { + + var thisObject = this, + $this = $( thisObject ), + scrolling, + timer; + + function trigger( event, state ) { + scrolling = state; + triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event ); + } + + // iPhone triggers scroll after a small delay; use touchmove instead + $this.bind( scrollEvent, function( event ) { + + if ( !$.event.special.scrollstart.enabled ) { + return; + } + + if ( !scrolling ) { + trigger( event, true ); + } + + clearTimeout( timer ); + timer = setTimeout( function() { + trigger( event, false ); + }, 50 ); + }); + }, + teardown: function() { + $( this ).unbind( scrollEvent ); + } + }; + + // also handles taphold + $.event.special.tap = { + tapholdThreshold: 750, + emitTapOnTaphold: true, + setup: function() { + var thisObject = this, + $this = $( thisObject ), + isTaphold = false; + + $this.bind( "vmousedown", function( event ) { + isTaphold = false; + if ( event.which && event.which !== 1 ) { + return false; + } + + var origTarget = event.target, + timer; + + function clearTapTimer() { + clearTimeout( timer ); + } + + function clearTapHandlers() { + clearTapTimer(); + + $this.unbind( "vclick", clickHandler ) + .unbind( "vmouseup", clearTapTimer ); + $document.unbind( "vmousecancel", clearTapHandlers ); + } + + function clickHandler( event ) { + clearTapHandlers(); + + // ONLY trigger a 'tap' event if the start target is + // the same as the stop target. + if ( !isTaphold && origTarget === event.target ) { + triggerCustomEvent( thisObject, "tap", event ); + } else if ( isTaphold ) { + event.preventDefault(); + } + } + + $this.bind( "vmouseup", clearTapTimer ) + .bind( "vclick", clickHandler ); + $document.bind( "vmousecancel", clearTapHandlers ); + + timer = setTimeout( function() { + if ( !$.event.special.tap.emitTapOnTaphold ) { + isTaphold = true; + } + triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) ); + }, $.event.special.tap.tapholdThreshold ); + }); + }, + teardown: function() { + $( this ).unbind( "vmousedown" ).unbind( "vclick" ).unbind( "vmouseup" ); + $document.unbind( "vmousecancel" ); + } + }; + + // Also handles swipeleft, swiperight + $.event.special.swipe = { + + // More than this horizontal displacement, and we will suppress scrolling. + scrollSupressionThreshold: 30, + + // More time than this, and it isn't a swipe. + durationThreshold: 1000, + + // Swipe horizontal displacement must be more than this. + horizontalDistanceThreshold: 30, + + // Swipe vertical displacement must be less than this. + verticalDistanceThreshold: 30, + + getLocation: function ( event ) { + var winPageX = window.pageXOffset, + winPageY = window.pageYOffset, + x = event.clientX, + y = event.clientY; + + if ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) || + event.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) { + + // iOS4 clientX/clientY have the value that should have been + // in pageX/pageY. While pageX/page/ have the value 0 + x = x - winPageX; + y = y - winPageY; + } else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) { + + // Some Android browsers have totally bogus values for clientX/Y + // when scrolling/zooming a page. Detectable since clientX/clientY + // should never be smaller than pageX/pageY minus page scroll + x = event.pageX - winPageX; + y = event.pageY - winPageY; + } + + return { + x: x, + y: y + }; + }, + + start: function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + location = $.event.special.swipe.getLocation( data ); + return { + time: ( new Date() ).getTime(), + coords: [ location.x, location.y ], + origin: $( event.target ) + }; + }, + + stop: function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + location = $.event.special.swipe.getLocation( data ); + return { + time: ( new Date() ).getTime(), + coords: [ location.x, location.y ] + }; + }, + + handleSwipe: function( start, stop, thisObject, origTarget ) { + if ( stop.time - start.time < $.event.special.swipe.durationThreshold && + Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && + Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { + var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight"; + + triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }), true ); + triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true ); + return true; + } + return false; + + }, + + // This serves as a flag to ensure that at most one swipe event event is + // in work at any given time + eventInProgress: false, + + setup: function() { + var events, + thisObject = this, + $this = $( thisObject ), + context = {}; + + // Retrieve the events data for this element and add the swipe context + events = $.data( this, "mobile-events" ); + if ( !events ) { + events = { length: 0 }; + $.data( this, "mobile-events", events ); + } + events.length++; + events.swipe = context; + + context.start = function( event ) { + + // Bail if we're already working on a swipe event + if ( $.event.special.swipe.eventInProgress ) { + return; + } + $.event.special.swipe.eventInProgress = true; + + var stop, + start = $.event.special.swipe.start( event ), + origTarget = event.target, + emitted = false; + + context.move = function( event ) { + if ( !start || event.isDefaultPrevented() ) { + return; + } + + stop = $.event.special.swipe.stop( event ); + if ( !emitted ) { + emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget ); + if ( emitted ) { + + // Reset the context to make way for the next swipe event + $.event.special.swipe.eventInProgress = false; + } + } + // prevent scrolling + if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { + event.preventDefault(); + } + }; + + context.stop = function() { + emitted = true; + + // Reset the context to make way for the next swipe event + $.event.special.swipe.eventInProgress = false; + $document.off( touchMoveEvent, context.move ); + context.move = null; + }; + + $document.on( touchMoveEvent, context.move ) + .one( touchStopEvent, context.stop ); + }; + $this.on( touchStartEvent, context.start ); + }, + + teardown: function() { + var events, context; + + events = $.data( this, "mobile-events" ); + if ( events ) { + context = events.swipe; + delete events.swipe; + events.length--; + if ( events.length === 0 ) { + $.removeData( this, "mobile-events" ); + } + } + + if ( context ) { + if ( context.start ) { + $( this ).off( touchStartEvent, context.start ); + } + if ( context.move ) { + $document.off( touchMoveEvent, context.move ); + } + if ( context.stop ) { + $document.off( touchStopEvent, context.stop ); + } + } + } + }; + $.each({ + scrollstop: "scrollstart", + taphold: "tap", + swipeleft: "swipe.left", + swiperight: "swipe.right" + }, function( event, sourceEvent ) { + + $.event.special[ event ] = { + setup: function() { + $( this ).bind( sourceEvent, $.noop ); + }, + teardown: function() { + $( this ).unbind( sourceEvent ); + } + }; + }); + +})( jQuery, this ); + + +})); diff --git a/web/public/assets/js/knockout.js b/web/public/assets/js/knockout.js new file mode 100644 index 0000000..059d58f --- /dev/null +++ b/web/public/assets/js/knockout.js @@ -0,0 +1,123 @@ +/*! + * Knockout JavaScript library v3.4.0 + * (c) Steven Sanderson - http://knockoutjs.com/ + * License: MIT (http://www.opensource.org/licenses/mit-license.php) + */ + +(function() {(function(n){var x=this||(0,eval)("this"),u=x.document,M=x.navigator,v=x.jQuery,F=x.JSON;(function(n){"function"===typeof define&&define.amd?define(["exports","require"],n):"object"===typeof exports&&"object"===typeof module?n(module.exports||exports):n(x.ko={})})(function(N,O){function J(a,c){return null===a||typeof a in T?a===c:!1}function U(b,c){var d;return function(){d||(d=a.a.setTimeout(function(){d=n;b()},c))}}function V(b,c){var d;return function(){clearTimeout(d);d=a.a.setTimeout(b,c)}}function W(a, +c){c&&c!==I?"beforeChange"===c?this.Kb(a):this.Ha(a,c):this.Lb(a)}function X(a,c){null!==c&&c.k&&c.k()}function Y(a,c){var d=this.Hc,e=d[s];e.R||(this.lb&&this.Ma[c]?(d.Pb(c,a,this.Ma[c]),this.Ma[c]=null,--this.lb):e.r[c]||d.Pb(c,a,e.s?{ia:a}:d.uc(a)))}function K(b,c,d,e){a.d[b]={init:function(b,g,k,l,m){var h,r;a.m(function(){var q=a.a.c(g()),p=!d!==!q,A=!r;if(A||c||p!==h)A&&a.va.Aa()&&(r=a.a.ua(a.f.childNodes(b),!0)),p?(A||a.f.da(b,a.a.ua(r)),a.eb(e?e(m,q):m,b)):a.f.xa(b),h=p},null,{i:b});return{controlsDescendantBindings:!0}}}; +a.h.ta[b]=!1;a.f.Z[b]=!0}var a="undefined"!==typeof N?N:{};a.b=function(b,c){for(var d=b.split("."),e=a,f=0;fa.a.o(c,b[d])&&c.push(b[d]);return c},fb:function(a,b){a=a||[];for(var c=[],d=0,e=a.length;de?d&&b.push(c):d||b.splice(e,1)},ka:f,extend:c,Xa:d,Ya:f?d:c,D:b,Ca:function(a,b){if(!a)return a;var c={},d;for(d in a)a.hasOwnProperty(d)&&(c[d]=b(a[d],d,a));return c},ob:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},jc:function(b){b=a.a.V(b);for(var c=(b[0]&&b[0].ownerDocument||u).createElement("div"),d=0,e=b.length;dh?a.setAttribute("selected",b):a.selected=b},$a:function(a){return null===a||a===n?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},nd:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},Mc:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!= +b;)a=a.parentNode;return!!a},nb:function(b){return a.a.Mc(b,b.ownerDocument.documentElement)},Qb:function(b){return!!a.a.Sb(b,a.a.nb)},A:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},Wb:function(b){return a.onError?function(){try{return b.apply(this,arguments)}catch(c){throw a.onError&&a.onError(c),c;}}:b},setTimeout:function(b,c){return setTimeout(a.a.Wb(b),c)},$b:function(b){setTimeout(function(){a.onError&&a.onError(b);throw b;},0)},p:function(b,c,d){var e=a.a.Wb(d);d=h&&m[c];if(a.options.useOnlyNativeEvents|| +d||!v)if(d||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var l=function(a){e.call(b,a)},f="on"+c;b.attachEvent(f,l);a.a.F.oa(b,function(){b.detachEvent(f,l)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(c,e,!1);else v(b).bind(c,e)},Da:function(b,c){if(!b||!b.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var d;"input"===a.a.A(b)&&b.type&&"click"==c.toLowerCase()?(d=b.type,d="checkbox"== +d||"radio"==d):d=!1;if(a.options.useOnlyNativeEvents||!v||d)if("function"==typeof u.createEvent)if("function"==typeof b.dispatchEvent)d=u.createEvent(l[c]||"HTMLEvents"),d.initEvent(c,!0,!0,x,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(d);else throw Error("The supplied element doesn't support dispatchEvent");else if(d&&b.click)b.click();else if("undefined"!=typeof b.fireEvent)b.fireEvent("on"+c);else throw Error("Browser doesn't support triggering events");else v(b).trigger(c)},c:function(b){return a.H(b)? +b():b},zb:function(b){return a.H(b)?b.t():b},bb:function(b,c,d){var h;c&&("object"===typeof b.classList?(h=b.classList[d?"add":"remove"],a.a.q(c.match(r),function(a){h.call(b.classList,a)})):"string"===typeof b.className.baseVal?e(b.className,"baseVal",c,d):e(b,"className",c,d))},Za:function(b,c){var d=a.a.c(c);if(null===d||d===n)d="";var e=a.f.firstChild(b);!e||3!=e.nodeType||a.f.nextSibling(e)?a.f.da(b,[b.ownerDocument.createTextNode(d)]):e.data=d;a.a.Rc(b)},rc:function(a,b){a.name=b;if(7>=h)try{a.mergeAttributes(u.createElement(""),!1)}catch(c){}},Rc:function(a){9<=h&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},Nc:function(a){if(h){var b=a.style.width;a.style.width=0;a.style.width=b}},hd:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var d=[],e=b;e<=c;e++)d.push(e);return d},V:function(a){for(var b=[],c=0,d=a.length;c",""],d=[3,"","
      "],e=[1,""],f={thead:c,tbody:c,tfoot:c,tr:[2,"","
      "],td:d,th:d,option:e,optgroup:e}, +g=8>=a.a.C;a.a.ma=function(c,d){var e;if(v)if(v.parseHTML)e=v.parseHTML(c,d)||[];else{if((e=v.clean([c],d))&&e[0]){for(var h=e[0];h.parentNode&&11!==h.parentNode.nodeType;)h=h.parentNode;h.parentNode&&h.parentNode.removeChild(h)}}else{(e=d)||(e=u);var h=e.parentWindow||e.defaultView||x,r=a.a.$a(c).toLowerCase(),q=e.createElement("div"),p;p=(r=r.match(/^<([a-z]+)[ >]/))&&f[r[1]]||b;r=p[0];p="ignored
      "+p[1]+c+p[2]+"
      ";"function"==typeof h.innerShiv?q.appendChild(h.innerShiv(p)):(g&&e.appendChild(q), +q.innerHTML=p,g&&q.parentNode.removeChild(q));for(;r--;)q=q.lastChild;e=a.a.V(q.lastChild.childNodes)}return e};a.a.Cb=function(b,c){a.a.ob(b);c=a.a.c(c);if(null!==c&&c!==n)if("string"!=typeof c&&(c=c.toString()),v)v(b).html(c);else for(var d=a.a.ma(c,b.ownerDocument),e=0;eb){if(5E3<=++c){g=e;a.a.$b(Error("'Too much recursion' after processing "+c+" task groups."));break}b=e}try{m()}catch(h){a.a.$b(h)}}}function c(){b();g=e=d.length=0}var d=[],e=0,f=1,g=0;return{scheduler:x.MutationObserver?function(a){var b=u.createElement("div");(new MutationObserver(a)).observe(b,{attributes:!0});return function(){b.classList.toggle("foo")}}(c):u&&"onreadystatechange"in u.createElement("script")?function(a){var b=u.createElement("script");b.onreadystatechange= +function(){b.onreadystatechange=null;u.documentElement.removeChild(b);b=null;a()};u.documentElement.appendChild(b)}:function(a){setTimeout(a,0)},Wa:function(b){e||a.Y.scheduler(c);d[e++]=b;return f++},cancel:function(a){a-=f-e;a>=g&&ad[0]?g+d[0]:d[0]),g);for(var g=1===t?g:Math.min(c+(d[1]||0),g),t=c+t-2,G=Math.max(g,t),P=[],n=[],Q=2;cc;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.wc(b);return a.a.Eb(b,c,d)};d.prototype={save:function(b,c){var d=a.a.o(this.keys,b);0<=d?this.Ib[d]=c:(this.keys.push(b),this.Ib.push(c))},get:function(b){b=a.a.o(this.keys,b);return 0<=b?this.Ib[b]:n}}})();a.b("toJS",a.wc);a.b("toJSON",a.toJSON);(function(){a.j={u:function(b){switch(a.a.A(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?a.a.e.get(b,a.d.options.xb):7>=a.a.C?b.getAttributeNode("value")&& +b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.j.u(b.options[b.selectedIndex]):n;default:return b.value}},ha:function(b,c,d){switch(a.a.A(b)){case "option":switch(typeof c){case "string":a.a.e.set(b,a.d.options.xb,n);"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__;b.value=c;break;default:a.a.e.set(b,a.d.options.xb,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===typeof c?c:""}break;case "select":if(""===c|| +null===c)c=n;for(var e=-1,f=0,g=b.options.length,k;f=p){c.push(r&&k.length?{key:r,value:k.join("")}:{unknown:r||k.join("")});r=p=0;k=[];continue}}else if(58===t){if(!p&&!r&&1===k.length){r=k.pop();continue}}else 47===t&&A&&1=a.a.C&&b.tagName===c))return c};a.g.Ob=function(c,e,f,g){if(1===e.nodeType){var k=a.g.getComponentNameForNode(e);if(k){c=c||{};if(c.component)throw Error('Cannot use the "component" binding on a custom element matching a component'); +var l={name:k,params:b(e,f)};c.component=g?function(){return l}:l}}return c};var c=new a.Q;9>a.a.C&&(a.g.register=function(a){return function(b){u.createElement(b);return a.apply(this,arguments)}}(a.g.register),u.createDocumentFragment=function(b){return function(){var c=b(),f=a.g.Bc,g;for(g in f)f.hasOwnProperty(g)&&c.createElement(g);return c}}(u.createDocumentFragment))})();(function(b){function c(b,c,d){c=c.template;if(!c)throw Error("Component '"+b+"' has no template");b=a.a.ua(c);a.f.da(d,b)} +function d(a,b,c,d){var e=a.createViewModel;return e?e.call(a,d,{element:b,templateNodes:c}):d}var e=0;a.d.component={init:function(f,g,k,l,m){function h(){var a=r&&r.dispose;"function"===typeof a&&a.call(r);q=r=null}var r,q,p=a.a.V(a.f.childNodes(f));a.a.F.oa(f,h);a.m(function(){var l=a.a.c(g()),k,t;"string"===typeof l?k=l:(k=a.a.c(l.name),t=a.a.c(l.params));if(!k)throw Error("No component name specified");var n=q=++e;a.g.get(k,function(e){if(q===n){h();if(!e)throw Error("Unknown component '"+k+ +"'");c(k,e,f);var g=d(e,f,p,t);e=m.createChildContext(g,b,function(a){a.$component=g;a.$componentTemplateNodes=p});r=g;a.eb(e,f)}})},null,{i:f});return{controlsDescendantBindings:!0}}};a.f.Z.component=!0})();var S={"class":"className","for":"htmlFor"};a.d.attr={update:function(b,c){var d=a.a.c(c())||{};a.a.D(d,function(c,d){d=a.a.c(d);var g=!1===d||null===d||d===n;g&&b.removeAttribute(c);8>=a.a.C&&c in S?(c=S[c],g?b.removeAttribute(c):b[c]=d):g||b.setAttribute(c,d.toString());"name"===c&&a.a.rc(b, +g?"":d.toString())})}};(function(){a.d.checked={after:["value","attr"],init:function(b,c,d){function e(){var e=b.checked,f=p?g():e;if(!a.va.Sa()&&(!l||e)){var m=a.l.w(c);if(h){var k=r?m.t():m;q!==f?(e&&(a.a.pa(k,f,!0),a.a.pa(k,q,!1)),q=f):a.a.pa(k,f,e);r&&a.Ba(m)&&m(k)}else a.h.Ea(m,d,"checked",f,!0)}}function f(){var d=a.a.c(c());b.checked=h?0<=a.a.o(d,g()):k?d:g()===d}var g=a.nc(function(){return d.has("checkedValue")?a.a.c(d.get("checkedValue")):d.has("value")?a.a.c(d.get("value")):b.value}),k= +"checkbox"==b.type,l="radio"==b.type;if(k||l){var m=c(),h=k&&a.a.c(m)instanceof Array,r=!(h&&m.push&&m.splice),q=h?g():n,p=l||h;l&&!b.name&&a.d.uniqueName.init(b,function(){return!0});a.m(e,null,{i:b});a.a.p(b,"click",e);a.m(f,null,{i:b});m=n}}};a.h.ea.checked=!0;a.d.checkedValue={update:function(b,c){b.value=a.a.c(c())}}})();a.d.css={update:function(b,c){var d=a.a.c(c());null!==d&&"object"==typeof d?a.a.D(d,function(c,d){d=a.a.c(d);a.a.bb(b,c,d)}):(d=a.a.$a(String(d||"")),a.a.bb(b,b.__ko__cssValue, +!1),b.__ko__cssValue=d,a.a.bb(b,d,!0))}};a.d.enable={update:function(b,c){var d=a.a.c(c());d&&b.disabled?b.removeAttribute("disabled"):d||b.disabled||(b.disabled=!0)}};a.d.disable={update:function(b,c){a.d.enable.update(b,function(){return!a.a.c(c())})}};a.d.event={init:function(b,c,d,e,f){var g=c()||{};a.a.D(g,function(g){"string"==typeof g&&a.a.p(b,g,function(b){var m,h=c()[g];if(h){try{var r=a.a.V(arguments);e=f.$data;r.unshift(e);m=h.apply(e,r)}finally{!0!==m&&(b.preventDefault?b.preventDefault(): +b.returnValue=!1)}!1===d.get(g+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.d.foreach={ic:function(b){return function(){var c=b(),d=a.a.zb(c);if(!d||"number"==typeof d.length)return{foreach:c,templateEngine:a.W.sb};a.a.c(c);return{foreach:d.data,as:d.as,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.W.sb}}},init:function(b,c){return a.d.template.init(b, +a.d.foreach.ic(c))},update:function(b,c,d,e,f){return a.d.template.update(b,a.d.foreach.ic(c),d,e,f)}};a.h.ta.foreach=!1;a.f.Z.foreach=!0;a.d.hasfocus={init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var f=b.ownerDocument;if("activeElement"in f){var g;try{g=f.activeElement}catch(h){g=f.body}e=g===b}f=c();a.h.Ea(f,d,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var f=e.bind(null,!0),g=e.bind(null,!1);a.a.p(b,"focus",f);a.a.p(b,"focusin",f);a.a.p(b,"blur",g);a.a.p(b, +"focusout",g)},update:function(b,c){var d=!!a.a.c(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===d||(d?b.focus():b.blur(),!d&&b.__ko_hasfocusLastValue&&b.ownerDocument.body.focus(),a.l.w(a.a.Da,null,[b,d?"focusin":"focusout"]))}};a.h.ea.hasfocus=!0;a.d.hasFocus=a.d.hasfocus;a.h.ea.hasFocus=!0;a.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Cb(b,c())}};K("if");K("ifnot",!1,!0);K("with",!0,!1,function(a,c){return a.createChildContext(c)});var L={}; +a.d.options={init:function(b){if("select"!==a.a.A(b))throw Error("options binding applies only to SELECT elements");for(;0a.a.C)var g=a.a.e.I(),k=a.a.e.I(),l=function(b){var c=this.activeElement;(c=c&&a.a.e.get(c,k))&&c(b)},m=function(b,c){var d=b.ownerDocument;a.a.e.get(d,g)||(a.a.e.set(d,g,!0),a.a.p(d,"selectionchange",l));a.a.e.set(b,k,c)};a.d.textInput={init:function(b,d,g){function l(c,d){a.a.p(b,c,d)}function k(){var c=a.a.c(d());if(null===c||c===n)c="";v!==n&&c===v?a.a.setTimeout(k,4):b.value!==c&&(u=c,b.value=c)}function y(){s||(v=b.value,s=a.a.setTimeout(t,4))}function t(){clearTimeout(s);v=s=n;var c= +b.value;u!==c&&(u=c,a.h.Ea(d(),g,"textInput",c))}var u=b.value,s,v,x=9==a.a.C?y:t;10>a.a.C?(l("propertychange",function(a){"value"===a.propertyName&&x(a)}),8==a.a.C&&(l("keyup",t),l("keydown",t)),8<=a.a.C&&(m(b,x),l("dragend",y))):(l("input",t),5>e&&"textarea"===a.a.A(b)?(l("keydown",y),l("paste",y),l("cut",y)):11>c?l("keydown",y):4>f&&(l("DOMAutoComplete",t),l("dragdrop",t),l("drop",t)));l("change",t);a.m(k,null,{i:b})}};a.h.ea.textInput=!0;a.d.textinput={preprocess:function(a,b,c){c("textInput", +a)}}})();a.d.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.d.uniqueName.Ic;a.a.rc(b,d)}}};a.d.uniqueName.Ic=0;a.d.value={after:["options","foreach"],init:function(b,c,d){if("input"!=b.tagName.toLowerCase()||"checkbox"!=b.type&&"radio"!=b.type){var e=["change"],f=d.get("valueUpdate"),g=!1,k=null;f&&("string"==typeof f&&(f=[f]),a.a.ra(e,f),e=a.a.Tb(e));var l=function(){k=null;g=!1;var e=c(),f=a.j.u(b);a.h.Ea(e,d,"value",f)};!a.a.C||"input"!=b.tagName.toLowerCase()||"text"!=b.type|| +"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.o(e,"propertychange")||(a.a.p(b,"propertychange",function(){g=!0}),a.a.p(b,"focus",function(){g=!1}),a.a.p(b,"blur",function(){g&&l()}));a.a.q(e,function(c){var d=l;a.a.nd(c,"after")&&(d=function(){k=a.j.u(b);a.a.setTimeout(l,0)},c=c.substring(5));a.a.p(b,c,d)});var m=function(){var e=a.a.c(c()),f=a.j.u(b);if(null!==k&&e===k)a.a.setTimeout(m,0);else if(e!==f)if("select"===a.a.A(b)){var g=d.get("valueAllowUnset"),f=function(){a.j.ha(b, +e,g)};f();g||e===a.j.u(b)?a.a.setTimeout(f,0):a.l.w(a.a.Da,null,[b,"change"])}else a.j.ha(b,e)};a.m(m,null,{i:b})}else a.Ja(b,{checkedValue:c})},update:function(){}};a.h.ea.value=!0;a.d.visible={update:function(b,c){var d=a.a.c(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}};(function(b){a.d[b]={init:function(c,d,e,f,g){return a.d.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,f,g)}}})("click");a.O=function(){};a.O.prototype.renderTemplateSource= +function(){throw Error("Override renderTemplateSource");};a.O.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.O.prototype.makeTemplateSource=function(b,c){if("string"==typeof b){c=c||u;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.v.n(d)}if(1==b.nodeType||8==b.nodeType)return new a.v.qa(b);throw Error("Unknown template type: "+b);};a.O.prototype.renderTemplate=function(a,c,d,e){a=this.makeTemplateSource(a, +e);return this.renderTemplateSource(a,c,d,e)};a.O.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data("isRewritten")};a.O.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data("isRewritten",!0)};a.b("templateEngine",a.O);a.Gb=function(){function b(b,c,d,k){b=a.h.yb(b);for(var l=a.h.ta,m=0;m]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{Oc:function(b, +c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.Gb.dd(b,c)},d)},dd:function(a,f){return a.replace(c,function(a,c,d,e,h){return b(h,c,d,f)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",f)})},Ec:function(b,c){return a.M.wb(function(d,k){var l=d.nextSibling;l&&l.nodeName.toLowerCase()===c&&a.Ja(l,b,k)})}}}();a.b("__tr_ambtns",a.Gb.Ec);(function(){a.v={};a.v.n=function(b){if(this.n=b){var c=a.a.A(b);this.ab="script"===c?1:"textarea"===c?2:"template"==c&& +b.content&&11===b.content.nodeType?3:4}};a.v.n.prototype.text=function(){var b=1===this.ab?"text":2===this.ab?"value":"innerHTML";if(0==arguments.length)return this.n[b];var c=arguments[0];"innerHTML"===b?a.a.Cb(this.n,c):this.n[b]=c};var b=a.a.e.I()+"_";a.v.n.prototype.data=function(c){if(1===arguments.length)return a.a.e.get(this.n,b+c);a.a.e.set(this.n,b+c,arguments[1])};var c=a.a.e.I();a.v.n.prototype.nodes=function(){var b=this.n;if(0==arguments.length)return(a.a.e.get(b,c)||{}).jb||(3===this.ab? +b.content:4===this.ab?b:n);a.a.e.set(b,c,{jb:arguments[0]})};a.v.qa=function(a){this.n=a};a.v.qa.prototype=new a.v.n;a.v.qa.prototype.text=function(){if(0==arguments.length){var b=a.a.e.get(this.n,c)||{};b.Hb===n&&b.jb&&(b.Hb=b.jb.innerHTML);return b.Hb}a.a.e.set(this.n,c,{Hb:arguments[0]})};a.b("templateSources",a.v);a.b("templateSources.domElement",a.v.n);a.b("templateSources.anonymousTemplate",a.v.qa)})();(function(){function b(b,c,d){var e;for(c=a.f.nextSibling(c);b&&(e=b)!==c;)b=a.f.nextSibling(e), +d(e,b)}function c(c,d){if(c.length){var e=c[0],f=c[c.length-1],g=e.parentNode,k=a.Q.instance,n=k.preprocessNode;if(n){b(e,f,function(a,b){var c=a.previousSibling,d=n.call(k,a);d&&(a===e&&(e=d[0]||b),a===f&&(f=d[d.length-1]||c))});c.length=0;if(!e)return;e===f?c.push(e):(c.push(e,f),a.a.za(c,g))}b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.Rb(d,b)});b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.M.yc(b,[d])});a.a.za(c,g)}}function d(a){return a.nodeType?a:0a.a.C?0:b.nodes)? +b.nodes():null)return a.a.V(c.cloneNode(!0).childNodes);b=b.text();return a.a.ma(b,e)};a.W.sb=new a.W;a.Db(a.W.sb);a.b("nativeTemplateEngine",a.W);(function(){a.vb=function(){var a=this.$c=function(){if(!v||!v.tmpl)return 0;try{if(0<=v.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,f,g){g=g||u;f=f||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var k=b.data("precompiled"); +k||(k=b.text()||"",k=v.template(null,"{{ko_with $item.koBindingContext}}"+k+"{{/ko_with}}"),b.data("precompiled",k));b=[e.$data];e=v.extend({koBindingContext:e},f.templateOptions);e=v.tmpl(k,b,e);e.appendTo(g.createElement("div"));v.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){u.write(" + + + + + +
      +
      +
      +

      +
      + + +
      +
      +
      +
      + + diff --git a/web/public/robots.txt b/web/public/robots.txt new file mode 100644 index 0000000..f591645 --- /dev/null +++ b/web/public/robots.txt @@ -0,0 +1,3 @@ +# http://www.robotstxt.org +User-agent: * +Disallow: diff --git a/web/run b/web/run new file mode 100755 index 0000000..83bb338 --- /dev/null +++ b/web/run @@ -0,0 +1 @@ +ember s --proxy http://101.37.82.164/admin-api/ diff --git a/web/run.bat b/web/run.bat new file mode 100644 index 0000000..7e62626 --- /dev/null +++ b/web/run.bat @@ -0,0 +1 @@ +ember s --proxy http://127.0.0.1:8088 diff --git a/web/testem.js b/web/testem.js new file mode 100644 index 0000000..26044b2 --- /dev/null +++ b/web/testem.js @@ -0,0 +1,13 @@ +/*jshint node:true*/ +module.exports = { + "framework": "qunit", + "test_page": "tests/index.html?hidepassed", + "disable_watching": true, + "launch_in_ci": [ + "PhantomJS" + ], + "launch_in_dev": [ + "PhantomJS", + "Chrome" + ] +}; diff --git a/web/testem.json b/web/testem.json new file mode 100644 index 0000000..0f35392 --- /dev/null +++ b/web/testem.json @@ -0,0 +1,12 @@ +{ + "framework": "qunit", + "test_page": "tests/index.html?hidepassed", + "disable_watching": true, + "launch_in_ci": [ + "PhantomJS" + ], + "launch_in_dev": [ + "PhantomJS", + "Chrome" + ] +} diff --git a/web/tests/helpers/destroy-app.js b/web/tests/helpers/destroy-app.js new file mode 100644 index 0000000..c3d4d1a --- /dev/null +++ b/web/tests/helpers/destroy-app.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default function destroyApp(application) { + Ember.run(application, 'destroy'); +} diff --git a/web/tests/helpers/module-for-acceptance.js b/web/tests/helpers/module-for-acceptance.js new file mode 100644 index 0000000..8c8b74e --- /dev/null +++ b/web/tests/helpers/module-for-acceptance.js @@ -0,0 +1,23 @@ +import { module } from 'qunit'; +import startApp from '../helpers/start-app'; +import destroyApp from '../helpers/destroy-app'; + +export default function(name, options = {}) { + module(name, { + beforeEach() { + this.application = startApp(); + + if (options.beforeEach) { + options.beforeEach.apply(this, arguments); + } + }, + + afterEach() { + if (options.afterEach) { + options.afterEach.apply(this, arguments); + } + + destroyApp(this.application); + } + }); +} diff --git a/web/tests/helpers/resolver.js b/web/tests/helpers/resolver.js new file mode 100644 index 0000000..b208d38 --- /dev/null +++ b/web/tests/helpers/resolver.js @@ -0,0 +1,11 @@ +import Resolver from '../../resolver'; +import config from '../../config/environment'; + +const resolver = Resolver.create(); + +resolver.namespace = { + modulePrefix: config.modulePrefix, + podModulePrefix: config.podModulePrefix +}; + +export default resolver; diff --git a/web/tests/helpers/start-app.js b/web/tests/helpers/start-app.js new file mode 100644 index 0000000..e098f1d --- /dev/null +++ b/web/tests/helpers/start-app.js @@ -0,0 +1,18 @@ +import Ember from 'ember'; +import Application from '../../app'; +import config from '../../config/environment'; + +export default function startApp(attrs) { + let application; + + let attributes = Ember.merge({}, config.APP); + attributes = Ember.merge(attributes, attrs); // use defaults, but you can override; + + Ember.run(() => { + application = Application.create(attributes); + application.setupForTesting(); + application.injectTestHelpers(); + }); + + return application; +} diff --git a/web/tests/index.html b/web/tests/index.html new file mode 100644 index 0000000..aa39497 --- /dev/null +++ b/web/tests/index.html @@ -0,0 +1,34 @@ + + + + + + UmsappOta Tests + + + + {{content-for "head"}} + {{content-for "test-head"}} + + + + + + {{content-for "head-footer"}} + {{content-for "test-head-footer"}} + + + {{content-for "body"}} + {{content-for "test-body"}} + + + + + + + + + {{content-for "body-footer"}} + {{content-for "test-body-footer"}} + + diff --git a/web/tests/integration/components/ace-login-test.js b/web/tests/integration/components/ace-login-test.js new file mode 100644 index 0000000..e7e92cb --- /dev/null +++ b/web/tests/integration/components/ace-login-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('ace-login', 'Integration | Component | ace login', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{ace-login}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#ace-login}} + template block text + {{/ace-login}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/app/manage-sidebar-test.js b/web/tests/integration/components/app/manage-sidebar-test.js new file mode 100644 index 0000000..bc15c3e --- /dev/null +++ b/web/tests/integration/components/app/manage-sidebar-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('app/manage-sidebar', 'Integration | Component | app/manage sidebar', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{app/manage-sidebar}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#app/manage-sidebar}} + template block text + {{/app/manage-sidebar}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/base-component-test.js b/web/tests/integration/components/base-component-test.js new file mode 100644 index 0000000..00d154f --- /dev/null +++ b/web/tests/integration/components/base-component-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('base-component', 'Integration | Component | base component', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{base-component}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#base-component}} + template block text + {{/base-component}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/breadcrumbs-bar-test.js b/web/tests/integration/components/breadcrumbs-bar-test.js new file mode 100644 index 0000000..82cfda9 --- /dev/null +++ b/web/tests/integration/components/breadcrumbs-bar-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('breadcrumbs-bar', 'Integration | Component | breadcrumbs bar', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{breadcrumbs-bar}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#breadcrumbs-bar}} + template block text + {{/breadcrumbs-bar}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/date-cell-test.js b/web/tests/integration/components/date-cell-test.js new file mode 100644 index 0000000..d6983ea --- /dev/null +++ b/web/tests/integration/components/date-cell-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('date-cell', 'Integration | Component | date cell', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{date-cell}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#date-cell}} + template block text + {{/date-cell}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/editable-cell-test.js b/web/tests/integration/components/editable-cell-test.js new file mode 100644 index 0000000..52de69f --- /dev/null +++ b/web/tests/integration/components/editable-cell-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('editable-cell', 'Integration | Component | editable cell', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{editable-cell}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#editable-cell}} + template block text + {{/editable-cell}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/form-content-test.js b/web/tests/integration/components/form-content-test.js new file mode 100644 index 0000000..ba782a5 --- /dev/null +++ b/web/tests/integration/components/form-content-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('form-content', 'Integration | Component | form content', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{form-content}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#form-content}} + template block text + {{/form-content}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/form-footer-buttons-test.js b/web/tests/integration/components/form-footer-buttons-test.js new file mode 100644 index 0000000..a9f3274 --- /dev/null +++ b/web/tests/integration/components/form-footer-buttons-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('form-footer-buttons', 'Integration | Component | form footer buttons', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{form-footer-buttons}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#form-footer-buttons}} + template block text + {{/form-footer-buttons}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/form-input-checkbox-test.js b/web/tests/integration/components/form-input-checkbox-test.js new file mode 100644 index 0000000..2a6d7fd --- /dev/null +++ b/web/tests/integration/components/form-input-checkbox-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('form-input-checkbox', 'Integration | Component | form input checkbox', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{form-input-checkbox}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#form-input-checkbox}} + template block text + {{/form-input-checkbox}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/form-input-color-test.js b/web/tests/integration/components/form-input-color-test.js new file mode 100644 index 0000000..441ebb6 --- /dev/null +++ b/web/tests/integration/components/form-input-color-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('form-input-color', 'Integration | Component | form input color', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{form-input-color}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#form-input-color}} + template block text + {{/form-input-color}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/form-input-errors-msg-test.js b/web/tests/integration/components/form-input-errors-msg-test.js new file mode 100644 index 0000000..9d9d613 --- /dev/null +++ b/web/tests/integration/components/form-input-errors-msg-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('form-input-errors-msg', 'Integration | Component | form input errors msg', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{form-input-errors-msg}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#form-input-errors-msg}} + template block text + {{/form-input-errors-msg}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/form-input-modal-select-test.js b/web/tests/integration/components/form-input-modal-select-test.js new file mode 100644 index 0000000..213e174 --- /dev/null +++ b/web/tests/integration/components/form-input-modal-select-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('form-input-modal-select', 'Integration | Component | form input modal select', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{form-input-modal-select}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#form-input-modal-select}} + template block text + {{/form-input-modal-select}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/form-input-select-test.js b/web/tests/integration/components/form-input-select-test.js new file mode 100644 index 0000000..8c82032 --- /dev/null +++ b/web/tests/integration/components/form-input-select-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('form-input-select', 'Integration | Component | form input select', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{form-input-select}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#form-input-select}} + template block text + {{/form-input-select}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/form-input-spinner-test.js b/web/tests/integration/components/form-input-spinner-test.js new file mode 100644 index 0000000..9a15346 --- /dev/null +++ b/web/tests/integration/components/form-input-spinner-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('form-input-spinner', 'Integration | Component | form input spinner', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{form-input-spinner}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#form-input-spinner}} + template block text + {{/form-input-spinner}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/form-input-test.js b/web/tests/integration/components/form-input-test.js new file mode 100644 index 0000000..5a4896b --- /dev/null +++ b/web/tests/integration/components/form-input-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('form-input', 'Integration | Component | form input', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{form-input}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#form-input}} + template block text + {{/form-input}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/gender-cell-test.js b/web/tests/integration/components/gender-cell-test.js new file mode 100644 index 0000000..32e95c5 --- /dev/null +++ b/web/tests/integration/components/gender-cell-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('gender-cell', 'Integration | Component | gender cell', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{gender-cell}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#gender-cell}} + template block text + {{/gender-cell}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/grid-header-test.js b/web/tests/integration/components/grid-header-test.js new file mode 100644 index 0000000..aee1ef7 --- /dev/null +++ b/web/tests/integration/components/grid-header-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('grid-header', 'Integration | Component | grid header', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{grid-header}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#grid-header}} + template block text + {{/grid-header}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/image-previews-test.js b/web/tests/integration/components/image-previews-test.js new file mode 100644 index 0000000..172c4e4 --- /dev/null +++ b/web/tests/integration/components/image-previews-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('image-previews', 'Integration | Component | image previews', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{image-previews}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#image-previews}} + template block text + {{/image-previews}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/list-select-checkbox-test.js b/web/tests/integration/components/list-select-checkbox-test.js new file mode 100644 index 0000000..a0babc0 --- /dev/null +++ b/web/tests/integration/components/list-select-checkbox-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('list-select-checkbox', 'Integration | Component | list select checkbox', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{list-select-checkbox}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#list-select-checkbox}} + template block text + {{/list-select-checkbox}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/main-container-test.js b/web/tests/integration/components/main-container-test.js new file mode 100644 index 0000000..bd8910e --- /dev/null +++ b/web/tests/integration/components/main-container-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('main-container', 'Integration | Component | main container', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{main-container}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#main-container}} + template block text + {{/main-container}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/main-content-test.js b/web/tests/integration/components/main-content-test.js new file mode 100644 index 0000000..00110e5 --- /dev/null +++ b/web/tests/integration/components/main-content-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('main-content', 'Integration | Component | main content', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{main-content}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#main-content}} + template block text + {{/main-content}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/modal-dialog-test.js b/web/tests/integration/components/modal-dialog-test.js new file mode 100644 index 0000000..aff8e59 --- /dev/null +++ b/web/tests/integration/components/modal-dialog-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('modal-dialog', 'Integration | Component | modal dialog', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{modal-dialog}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#modal-dialog}} + template block text + {{/modal-dialog}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/modal-frame-test.js b/web/tests/integration/components/modal-frame-test.js new file mode 100644 index 0000000..a2592b2 --- /dev/null +++ b/web/tests/integration/components/modal-frame-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('modal-frame', 'Integration | Component | modal frame', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{modal-frame}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#modal-frame}} + template block text + {{/modal-frame}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/modal-list-select-test.js b/web/tests/integration/components/modal-list-select-test.js new file mode 100644 index 0000000..5ed5641 --- /dev/null +++ b/web/tests/integration/components/modal-list-select-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('modal-list-select', 'Integration | Component | modal list select', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{modal-list-select}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#modal-list-select}} + template block text + {{/modal-list-select}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/op-detail-test.js b/web/tests/integration/components/op-detail-test.js new file mode 100644 index 0000000..3bbea8c --- /dev/null +++ b/web/tests/integration/components/op-detail-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('op-detail', 'Integration | Component | op detail', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{op-detail}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#op-detail}} + template block text + {{/op-detail}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/pagination-bar-test.js b/web/tests/integration/components/pagination-bar-test.js new file mode 100644 index 0000000..20164af --- /dev/null +++ b/web/tests/integration/components/pagination-bar-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('pagination-bar', 'Integration | Component | pagination bar', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{pagination-bar}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#pagination-bar}} + template block text + {{/pagination-bar}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/qr-code-test.js b/web/tests/integration/components/qr-code-test.js new file mode 100644 index 0000000..aeeddfd --- /dev/null +++ b/web/tests/integration/components/qr-code-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('qr-code', 'Integration | Component | qr code', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{qr-code}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#qr-code}} + template block text + {{/qr-code}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/reload-btn-test.js b/web/tests/integration/components/reload-btn-test.js new file mode 100644 index 0000000..5784418 --- /dev/null +++ b/web/tests/integration/components/reload-btn-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('reload-btn', 'Integration | Component | reload btn', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{reload-btn}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#reload-btn}} + template block text + {{/reload-btn}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/search-box-test.js b/web/tests/integration/components/search-box-test.js new file mode 100644 index 0000000..3235d80 --- /dev/null +++ b/web/tests/integration/components/search-box-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('search-box', 'Integration | Component | search box', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{search-box}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#search-box}} + template block text + {{/search-box}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/sortable-list-item-test.js b/web/tests/integration/components/sortable-list-item-test.js new file mode 100644 index 0000000..0d112a1 --- /dev/null +++ b/web/tests/integration/components/sortable-list-item-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('sortable-list-item', 'Integration | Component | sortable list item', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{sortable-list-item}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#sortable-list-item}} + template block text + {{/sortable-list-item}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/sortable-list-test.js b/web/tests/integration/components/sortable-list-test.js new file mode 100644 index 0000000..a22243a --- /dev/null +++ b/web/tests/integration/components/sortable-list-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('sortable-list', 'Integration | Component | sortable list', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{sortable-list}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#sortable-list}} + template block text + {{/sortable-list}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/status-cell-test.js b/web/tests/integration/components/status-cell-test.js new file mode 100644 index 0000000..a1d336d --- /dev/null +++ b/web/tests/integration/components/status-cell-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('status-cell', 'Integration | Component | status cell', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{status-cell}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#status-cell}} + template block text + {{/status-cell}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/status-toggle-button-test.js b/web/tests/integration/components/status-toggle-button-test.js new file mode 100644 index 0000000..ad2a9b0 --- /dev/null +++ b/web/tests/integration/components/status-toggle-button-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('status-toggle-button', 'Integration | Component | status toggle button', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{status-toggle-button}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#status-toggle-button}} + template block text + {{/status-toggle-button}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/top-navbar-test.js b/web/tests/integration/components/top-navbar-test.js new file mode 100644 index 0000000..2e8f7ca --- /dev/null +++ b/web/tests/integration/components/top-navbar-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('top-navbar', 'Integration | Component | top navbar', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{top-navbar}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#top-navbar}} + template block text + {{/top-navbar}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/tree-view-test.js b/web/tests/integration/components/tree-view-test.js new file mode 100644 index 0000000..8300f71 --- /dev/null +++ b/web/tests/integration/components/tree-view-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('tree-view', 'Integration | Component | tree view', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{tree-view}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#tree-view}} + template block text + {{/tree-view}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/integration/components/wysiwyg-editor-test.js b/web/tests/integration/components/wysiwyg-editor-test.js new file mode 100644 index 0000000..9473b22 --- /dev/null +++ b/web/tests/integration/components/wysiwyg-editor-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('wysiwyg-editor', 'Integration | Component | wysiwyg editor', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{wysiwyg-editor}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#wysiwyg-editor}} + template block text + {{/wysiwyg-editor}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/web/tests/test-helper.js b/web/tests/test-helper.js new file mode 100644 index 0000000..e6cfb70 --- /dev/null +++ b/web/tests/test-helper.js @@ -0,0 +1,6 @@ +import resolver from './helpers/resolver'; +import { + setResolver +} from 'ember-qunit'; + +setResolver(resolver); diff --git a/web/tests/unit/adapters/application-test.js b/web/tests/unit/adapters/application-test.js new file mode 100644 index 0000000..aeed71b --- /dev/null +++ b/web/tests/unit/adapters/application-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('adapter:application', 'Unit | Adapter | application', { + // Specify the other units that are required for this test. + // needs: ['serializer:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var adapter = this.subject(); + assert.ok(adapter); +}); diff --git a/web/tests/unit/controllers/api-group/api/create-test.js b/web/tests/unit/controllers/api-group/api/create-test.js new file mode 100644 index 0000000..caba7fe --- /dev/null +++ b/web/tests/unit/controllers/api-group/api/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:api-group/api/create', 'Unit | Controller | api group/api/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/api-group/api/edit-test.js b/web/tests/unit/controllers/api-group/api/edit-test.js new file mode 100644 index 0000000..25a4d0a --- /dev/null +++ b/web/tests/unit/controllers/api-group/api/edit-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:api-group/api/edit', 'Unit | Controller | api group/api/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/api-group/api/import-test.js b/web/tests/unit/controllers/api-group/api/import-test.js new file mode 100644 index 0000000..cf21efa --- /dev/null +++ b/web/tests/unit/controllers/api-group/api/import-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:api-group/api/import', 'Unit | Controller | api group/api/import', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/api-group/api/list-test.js b/web/tests/unit/controllers/api-group/api/list-test.js new file mode 100644 index 0000000..62f8df1 --- /dev/null +++ b/web/tests/unit/controllers/api-group/api/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:api-group/api/list', 'Unit | Controller | api group/api/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/api-group/create-test.js b/web/tests/unit/controllers/api-group/create-test.js new file mode 100644 index 0000000..5cfbf1f --- /dev/null +++ b/web/tests/unit/controllers/api-group/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:api-group/create', 'Unit | Controller | api group/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/api-group/edit-test.js b/web/tests/unit/controllers/api-group/edit-test.js new file mode 100644 index 0000000..45ff5c9 --- /dev/null +++ b/web/tests/unit/controllers/api-group/edit-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:api-group/edit', 'Unit | Controller | api group/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/create-test.js b/web/tests/unit/controllers/app/create-test.js new file mode 100644 index 0000000..e8c1a63 --- /dev/null +++ b/web/tests/unit/controllers/app/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/create/api-group-select-test.js b/web/tests/unit/controllers/app/create/api-group-select-test.js new file mode 100644 index 0000000..2bd9da9 --- /dev/null +++ b/web/tests/unit/controllers/app/create/api-group-select-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/create/api-group-select', 'Unit | Controller | app/create/api group select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/edit-test.js b/web/tests/unit/controllers/app/edit-test.js new file mode 100644 index 0000000..2f7b5a4 --- /dev/null +++ b/web/tests/unit/controllers/app/edit-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/list-test.js b/web/tests/unit/controllers/app/list-test.js new file mode 100644 index 0000000..0d56872 --- /dev/null +++ b/web/tests/unit/controllers/app/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/android-pad/create-test.js b/web/tests/unit/controllers/app/manage/appoint/android-pad/create-test.js new file mode 100644 index 0000000..6da4325 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/android-pad/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/android-pad/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/android-pad/list-test.js b/web/tests/unit/controllers/app/manage/appoint/android-pad/list-test.js new file mode 100644 index 0000000..cce5751 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/android-pad/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/android-pad/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/android-pad/update-test.js b/web/tests/unit/controllers/app/manage/appoint/android-pad/update-test.js new file mode 100644 index 0000000..3447863 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/android-pad/update-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/android-pad/update', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/android-phone/create-test.js b/web/tests/unit/controllers/app/manage/appoint/android-phone/create-test.js new file mode 100644 index 0000000..7ca1634 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/android-phone/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/android-phone/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/android-phone/list-test.js b/web/tests/unit/controllers/app/manage/appoint/android-phone/list-test.js new file mode 100644 index 0000000..2facdc0 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/android-phone/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/android-phone/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/android-phone/update-test.js b/web/tests/unit/controllers/app/manage/appoint/android-phone/update-test.js new file mode 100644 index 0000000..0cef063 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/android-phone/update-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/android-phone/update', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/ipad/create-test.js b/web/tests/unit/controllers/app/manage/appoint/ipad/create-test.js new file mode 100644 index 0000000..2e286fd --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/ipad/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/ipad/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/ipad/list-test.js b/web/tests/unit/controllers/app/manage/appoint/ipad/list-test.js new file mode 100644 index 0000000..750146d --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/ipad/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/ipad/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/ipad/update-test.js b/web/tests/unit/controllers/app/manage/appoint/ipad/update-test.js new file mode 100644 index 0000000..32b06c7 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/ipad/update-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/ipad/update', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/iphone/create-test.js b/web/tests/unit/controllers/app/manage/appoint/iphone/create-test.js new file mode 100644 index 0000000..32b97a2 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/iphone/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/iphone/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/iphone/list-test.js b/web/tests/unit/controllers/app/manage/appoint/iphone/list-test.js new file mode 100644 index 0000000..3e75ee5 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/iphone/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/iphone/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/appoint/iphone/update-test.js b/web/tests/unit/controllers/app/manage/appoint/iphone/update-test.js new file mode 100644 index 0000000..8a6c03c --- /dev/null +++ b/web/tests/unit/controllers/app/manage/appoint/iphone/update-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/appoint/iphone/update', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/release/android-pad/edit-test.js b/web/tests/unit/controllers/app/manage/release/android-pad/edit-test.js new file mode 100644 index 0000000..14bbac1 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/release/android-pad/edit-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/release/android-pad/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/release/android-phone/edit-test.js b/web/tests/unit/controllers/app/manage/release/android-phone/edit-test.js new file mode 100644 index 0000000..b9276aa --- /dev/null +++ b/web/tests/unit/controllers/app/manage/release/android-phone/edit-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/release/android-phone/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/release/ipad/edit-test.js b/web/tests/unit/controllers/app/manage/release/ipad/edit-test.js new file mode 100644 index 0000000..3aedac9 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/release/ipad/edit-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/release/ipad/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/release/iphone/edit-test.js b/web/tests/unit/controllers/app/manage/release/iphone/edit-test.js new file mode 100644 index 0000000..403aee9 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/release/iphone/edit-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/release/iphone/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/version/android-pad/list-test.js b/web/tests/unit/controllers/app/manage/version/android-pad/list-test.js new file mode 100644 index 0000000..3a9d160 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/version/android-pad/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/version/android-pad/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/version/android-pad/upload-test.js b/web/tests/unit/controllers/app/manage/version/android-pad/upload-test.js new file mode 100644 index 0000000..784fd7e --- /dev/null +++ b/web/tests/unit/controllers/app/manage/version/android-pad/upload-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/version/android-pad/upload', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/version/android-phone/list-test.js b/web/tests/unit/controllers/app/manage/version/android-phone/list-test.js new file mode 100644 index 0000000..68078a4 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/version/android-phone/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/version/android-phone/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/version/android-phone/upload-test.js b/web/tests/unit/controllers/app/manage/version/android-phone/upload-test.js new file mode 100644 index 0000000..14fbd0b --- /dev/null +++ b/web/tests/unit/controllers/app/manage/version/android-phone/upload-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/version/android-phone/upload', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/version/ipad/list-test.js b/web/tests/unit/controllers/app/manage/version/ipad/list-test.js new file mode 100644 index 0000000..2a15b57 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/version/ipad/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/version/ipad/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/version/ipad/upload-test.js b/web/tests/unit/controllers/app/manage/version/ipad/upload-test.js new file mode 100644 index 0000000..440800d --- /dev/null +++ b/web/tests/unit/controllers/app/manage/version/ipad/upload-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/version/ipad/upload', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/version/iphone/list-test.js b/web/tests/unit/controllers/app/manage/version/iphone/list-test.js new file mode 100644 index 0000000..5bc70c0 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/version/iphone/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/version/iphone/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/manage/version/iphone/upload-test.js b/web/tests/unit/controllers/app/manage/version/iphone/upload-test.js new file mode 100644 index 0000000..f8bf415 --- /dev/null +++ b/web/tests/unit/controllers/app/manage/version/iphone/upload-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/manage/version/iphone/upload', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/version/android-pad/create-test.js b/web/tests/unit/controllers/app/version/android-pad/create-test.js new file mode 100644 index 0000000..7dbefd5 --- /dev/null +++ b/web/tests/unit/controllers/app/version/android-pad/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/version/android-pad/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/version/android-phone-test.js b/web/tests/unit/controllers/app/version/android-phone-test.js new file mode 100644 index 0000000..628f780 --- /dev/null +++ b/web/tests/unit/controllers/app/version/android-phone-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/version/android-phone', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/version/android-phone/create-test.js b/web/tests/unit/controllers/app/version/android-phone/create-test.js new file mode 100644 index 0000000..9a5e791 --- /dev/null +++ b/web/tests/unit/controllers/app/version/android-phone/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/version/android-phone/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/version/android-phone/list-test.js b/web/tests/unit/controllers/app/version/android-phone/list-test.js new file mode 100644 index 0000000..a2c1758 --- /dev/null +++ b/web/tests/unit/controllers/app/version/android-phone/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/version/android-phone/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/version/ipad/create-test.js b/web/tests/unit/controllers/app/version/ipad/create-test.js new file mode 100644 index 0000000..7081f4b --- /dev/null +++ b/web/tests/unit/controllers/app/version/ipad/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/version/ipad/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/version/iphone/create-test.js b/web/tests/unit/controllers/app/version/iphone/create-test.js new file mode 100644 index 0000000..4a1d2d2 --- /dev/null +++ b/web/tests/unit/controllers/app/version/iphone/create-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/version/iphone/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/app/version/iphone/list-test.js b/web/tests/unit/controllers/app/version/iphone/list-test.js new file mode 100644 index 0000000..9b947f9 --- /dev/null +++ b/web/tests/unit/controllers/app/version/iphone/list-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:app/version/iphone/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/controllers/application-test.js b/web/tests/unit/controllers/application-test.js new file mode 100644 index 0000000..eb711c9 --- /dev/null +++ b/web/tests/unit/controllers/application-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:application', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var controller = this.subject(); + assert.ok(controller); +}); diff --git a/web/tests/unit/helpers/array-test.js b/web/tests/unit/helpers/array-test.js new file mode 100644 index 0000000..04edddc --- /dev/null +++ b/web/tests/unit/helpers/array-test.js @@ -0,0 +1,10 @@ +import { array } from 'umsapp-ota/helpers/array'; +import { module, test } from 'qunit'; + +module('Unit | Helper | array'); + +// Replace this with your real tests. +test('it works', function(assert) { + let result = array([42]); + assert.ok(result); +}); diff --git a/web/tests/unit/helpers/obj-merge-test.js b/web/tests/unit/helpers/obj-merge-test.js new file mode 100644 index 0000000..6b85fa6 --- /dev/null +++ b/web/tests/unit/helpers/obj-merge-test.js @@ -0,0 +1,10 @@ +import { objMerge } from 'umsapp-ota/helpers/obj-merge'; +import { module, test } from 'qunit'; + +module('Unit | Helper | obj merge'); + +// Replace this with your real tests. +test('it works', function(assert) { + let result = objMerge([42]); + assert.ok(result); +}); diff --git a/web/tests/unit/helpers/obj-query-params-test.js b/web/tests/unit/helpers/obj-query-params-test.js new file mode 100644 index 0000000..d8797dc --- /dev/null +++ b/web/tests/unit/helpers/obj-query-params-test.js @@ -0,0 +1,10 @@ +import { objQueryParams } from 'umsapp-ota/helpers/obj-query-params'; +import { module, test } from 'qunit'; + +module('Unit | Helper | obj query params'); + +// Replace this with your real tests. +test('it works', function(assert) { + let result = objQueryParams([42]); + assert.ok(result); +}); diff --git a/web/tests/unit/initializers/application-test.js b/web/tests/unit/initializers/application-test.js new file mode 100644 index 0000000..e3772f3 --- /dev/null +++ b/web/tests/unit/initializers/application-test.js @@ -0,0 +1,23 @@ +import Ember from 'ember'; +import { initialize } from '../../../initializers/application'; +import { module, test } from 'qunit'; + +var registry, application; + +module('Unit | Initializer | application', { + beforeEach: function() { + Ember.run(function() { + application = Ember.Application.create(); + registry = application.registry; + application.deferReadiness(); + }); + } +}); + +// Replace this with your real tests. +test('it works', function(assert) { + initialize(registry, application); + + // you would normally confirm the results of the initializer here + assert.ok(true); +}); diff --git a/web/tests/unit/mixins/app/manage/version/android-phone/basic-route-test.js b/web/tests/unit/mixins/app/manage/version/android-phone/basic-route-test.js new file mode 100644 index 0000000..19e9803 --- /dev/null +++ b/web/tests/unit/mixins/app/manage/version/android-phone/basic-route-test.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import AppManageVersionAndroidPhoneBasicRouteMixin from '../../../mixins/app/manage/version/android-phone/basic-route'; +import { module, test } from 'qunit'; + +module('Unit | Mixin | app/manage/version/android phone/basic route'); + +// Replace this with your real tests. +test('it works', function(assert) { + var AppManageVersionAndroidPhoneBasicRouteObject = Ember.Object.extend(AppManageVersionAndroidPhoneBasicRouteMixin); + var subject = AppManageVersionAndroidPhoneBasicRouteObject.create(); + assert.ok(subject); +}); diff --git a/web/tests/unit/mixins/app/manage/version/basic-route-test.js b/web/tests/unit/mixins/app/manage/version/basic-route-test.js new file mode 100644 index 0000000..0d47e32 --- /dev/null +++ b/web/tests/unit/mixins/app/manage/version/basic-route-test.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import AppManageVersionBasicRouteMixin from '../../../mixins/app/manage/version/basic-route'; +import { module, test } from 'qunit'; + +module('Unit | Mixin | app/manage/version/basic route'); + +// Replace this with your real tests. +test('it works', function(assert) { + var AppManageVersionBasicRouteObject = Ember.Object.extend(AppManageVersionBasicRouteMixin); + var subject = AppManageVersionBasicRouteObject.create(); + assert.ok(subject); +}); diff --git a/web/tests/unit/mixins/app/version/controller-test.js b/web/tests/unit/mixins/app/version/controller-test.js new file mode 100644 index 0000000..4617ec6 --- /dev/null +++ b/web/tests/unit/mixins/app/version/controller-test.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import AppVersionControllerMixin from '../../../mixins/app/version/controller'; +import { module, test } from 'qunit'; + +module('Unit | Mixin | app/version/controller'); + +// Replace this with your real tests. +test('it works', function(assert) { + var AppVersionControllerObject = Ember.Object.extend(AppVersionControllerMixin); + var subject = AppVersionControllerObject.create(); + assert.ok(subject); +}); diff --git a/web/tests/unit/mixins/app/version/version-cmp-create-controller-test.js b/web/tests/unit/mixins/app/version/version-cmp-create-controller-test.js new file mode 100644 index 0000000..8c6bb51 --- /dev/null +++ b/web/tests/unit/mixins/app/version/version-cmp-create-controller-test.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import AppVersionVersionCmpCreateControllerMixin from '../../../mixins/app/version/version-cmp-create-controller'; +import { module, test } from 'qunit'; + +module('Unit | Mixin | app/version/version cmp create controller'); + +// Replace this with your real tests. +test('it works', function(assert) { + var AppVersionVersionCmpCreateControllerObject = Ember.Object.extend(AppVersionVersionCmpCreateControllerMixin); + var subject = AppVersionVersionCmpCreateControllerObject.create(); + assert.ok(subject); +}); diff --git a/web/tests/unit/mixins/basic-list-route-test.js b/web/tests/unit/mixins/basic-list-route-test.js new file mode 100644 index 0000000..3dc946b --- /dev/null +++ b/web/tests/unit/mixins/basic-list-route-test.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import BasicListRouteMixin from '../../../mixins/basic-list-route'; +import { module, test } from 'qunit'; + +module('Unit | Mixin | basic list route'); + +// Replace this with your real tests. +test('it works', function(assert) { + var BasicListRouteObject = Ember.Object.extend(BasicListRouteMixin); + var subject = BasicListRouteObject.create(); + assert.ok(subject); +}); diff --git a/web/tests/unit/mixins/components/base-component-test.js b/web/tests/unit/mixins/components/base-component-test.js new file mode 100644 index 0000000..2b799c3 --- /dev/null +++ b/web/tests/unit/mixins/components/base-component-test.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import ComponentsBaseComponentMixin from 'umsapp-ota/mixins/components/base-component'; +import { module, test } from 'qunit'; + +module('Unit | Mixin | components/base component'); + +// Replace this with your real tests. +test('it works', function(assert) { + let ComponentsBaseComponentObject = Ember.Object.extend(ComponentsBaseComponentMixin); + let subject = ComponentsBaseComponentObject.create(); + assert.ok(subject); +}); diff --git a/web/tests/unit/mixins/services/base-service-test.js b/web/tests/unit/mixins/services/base-service-test.js new file mode 100644 index 0000000..0bb28a1 --- /dev/null +++ b/web/tests/unit/mixins/services/base-service-test.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import ServicesBaseServiceMixin from 'umsapp-ota/mixins/services/base-service'; +import { module, test } from 'qunit'; + +module('Unit | Mixin | services/base service'); + +// Replace this with your real tests. +test('it works', function(assert) { + let ServicesBaseServiceObject = Ember.Object.extend(ServicesBaseServiceMixin); + let subject = ServicesBaseServiceObject.create(); + assert.ok(subject); +}); diff --git a/web/tests/unit/models/app-test.js b/web/tests/unit/models/app-test.js new file mode 100644 index 0000000..b735794 --- /dev/null +++ b/web/tests/unit/models/app-test.js @@ -0,0 +1,12 @@ +import { moduleForModel, test } from 'ember-qunit'; + +moduleForModel('app', 'Unit | Model | app', { + // Specify the other units that are required for this test. + needs: [] +}); + +test('it exists', function(assert) { + var model = this.subject(); + // var store = this.store(); + assert.ok(!!model); +}); diff --git a/web/tests/unit/models/base-model-test.js b/web/tests/unit/models/base-model-test.js new file mode 100644 index 0000000..e9a5cd0 --- /dev/null +++ b/web/tests/unit/models/base-model-test.js @@ -0,0 +1,12 @@ +import { moduleForModel, test } from 'ember-qunit'; + +moduleForModel('base-model', 'Unit | Model | base model', { + // Specify the other units that are required for this test. + needs: [] +}); + +test('it exists', function(assert) { + var model = this.subject(); + // var store = this.store(); + assert.ok(!!model); +}); diff --git a/web/tests/unit/routes/api-group/api/create-test.js b/web/tests/unit/routes/api-group/api/create-test.js new file mode 100644 index 0000000..e95ed5d --- /dev/null +++ b/web/tests/unit/routes/api-group/api/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:api-group/api/create', 'Unit | Route | api group/api/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/api-group/api/edit-test.js b/web/tests/unit/routes/api-group/api/edit-test.js new file mode 100644 index 0000000..e97411c --- /dev/null +++ b/web/tests/unit/routes/api-group/api/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:api-group/api/edit', 'Unit | Route | api group/api/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/api-group/api/import-test.js b/web/tests/unit/routes/api-group/api/import-test.js new file mode 100644 index 0000000..c3a1efd --- /dev/null +++ b/web/tests/unit/routes/api-group/api/import-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:api-group/api/import', 'Unit | Route | api group/api/import', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/api-group/api/list-test.js b/web/tests/unit/routes/api-group/api/list-test.js new file mode 100644 index 0000000..f447d4c --- /dev/null +++ b/web/tests/unit/routes/api-group/api/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:api-group/api/list', 'Unit | Route | api group/api/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/api-group/api/substitute-test.js b/web/tests/unit/routes/api-group/api/substitute-test.js new file mode 100644 index 0000000..350eb84 --- /dev/null +++ b/web/tests/unit/routes/api-group/api/substitute-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:api-group/api/substitute', 'Unit | Route | api group/api/substitute', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/api-group/create-test.js b/web/tests/unit/routes/api-group/create-test.js new file mode 100644 index 0000000..17cbae3 --- /dev/null +++ b/web/tests/unit/routes/api-group/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:api-group/create', 'Unit | Route | api group/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/api-group/edit-test.js b/web/tests/unit/routes/api-group/edit-test.js new file mode 100644 index 0000000..2d53966 --- /dev/null +++ b/web/tests/unit/routes/api-group/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:api-group/edit', 'Unit | Route | api group/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/api-group/list-test.js b/web/tests/unit/routes/api-group/list-test.js new file mode 100644 index 0000000..b6f4ee0 --- /dev/null +++ b/web/tests/unit/routes/api-group/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:api-group/list', 'Unit | Route | api group/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-alias/list-test.js b/web/tests/unit/routes/app-alias/list-test.js new file mode 100644 index 0000000..a94168f --- /dev/null +++ b/web/tests/unit/routes/app-alias/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-alias/list', 'Unit | Route | app alias/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-config-test.js b/web/tests/unit/routes/app-config-test.js new file mode 100644 index 0000000..d7e164b --- /dev/null +++ b/web/tests/unit/routes/app-config-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-config', 'Unit | Route | app config', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-config/create-test.js b/web/tests/unit/routes/app-config/create-test.js new file mode 100644 index 0000000..fa25dd3 --- /dev/null +++ b/web/tests/unit/routes/app-config/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-config/create', 'Unit | Route | app config/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-config/edit-test.js b/web/tests/unit/routes/app-config/edit-test.js new file mode 100644 index 0000000..f32c950 --- /dev/null +++ b/web/tests/unit/routes/app-config/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-config/edit', 'Unit | Route | app config/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-config/footer-item/create-test.js b/web/tests/unit/routes/app-config/footer-item/create-test.js new file mode 100644 index 0000000..cfab512 --- /dev/null +++ b/web/tests/unit/routes/app-config/footer-item/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-config/footer-item/create', 'Unit | Route | app config/footer item/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-config/footer-item/edit-test.js b/web/tests/unit/routes/app-config/footer-item/edit-test.js new file mode 100644 index 0000000..beacff1 --- /dev/null +++ b/web/tests/unit/routes/app-config/footer-item/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-config/footer-item/edit', 'Unit | Route | app config/footer item/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-config/footer-item/list-test.js b/web/tests/unit/routes/app-config/footer-item/list-test.js new file mode 100644 index 0000000..77613af --- /dev/null +++ b/web/tests/unit/routes/app-config/footer-item/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-config/footer-item/list', 'Unit | Route | app config/footer item/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-config/list-test.js b/web/tests/unit/routes/app-config/list-test.js new file mode 100644 index 0000000..f1a48f8 --- /dev/null +++ b/web/tests/unit/routes/app-config/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-config/list', 'Unit | Route | app config/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-config/manage-test.js b/web/tests/unit/routes/app-config/manage-test.js new file mode 100644 index 0000000..1b9170b --- /dev/null +++ b/web/tests/unit/routes/app-config/manage-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-config/manage', 'Unit | Route | app config/manage', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app-version-alias/list-test.js b/web/tests/unit/routes/app-version-alias/list-test.js new file mode 100644 index 0000000..f43d35b --- /dev/null +++ b/web/tests/unit/routes/app-version-alias/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app-version-alias/list', 'Unit | Route | app version alias/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/appoint-test.js b/web/tests/unit/routes/app/appoint-test.js new file mode 100644 index 0000000..f32f8ba --- /dev/null +++ b/web/tests/unit/routes/app/appoint-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/appoint', 'Unit | Route | app/appoint', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/appoint/create-test.js b/web/tests/unit/routes/app/appoint/create-test.js new file mode 100644 index 0000000..414fdb7 --- /dev/null +++ b/web/tests/unit/routes/app/appoint/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/appoint/create', 'Unit | Route | app/appoint/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/appoint/create/version-select-test.js b/web/tests/unit/routes/app/appoint/create/version-select-test.js new file mode 100644 index 0000000..6e6a6a4 --- /dev/null +++ b/web/tests/unit/routes/app/appoint/create/version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/appoint/create/version-select', 'Unit | Route | app/appoint/create/version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/appoint/edit-test.js b/web/tests/unit/routes/app/appoint/edit-test.js new file mode 100644 index 0000000..814c90c --- /dev/null +++ b/web/tests/unit/routes/app/appoint/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/appoint/edit', 'Unit | Route | app/appoint/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/appoint/edit/version-select-test.js b/web/tests/unit/routes/app/appoint/edit/version-select-test.js new file mode 100644 index 0000000..69d13c2 --- /dev/null +++ b/web/tests/unit/routes/app/appoint/edit/version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/appoint/edit/version-select', 'Unit | Route | app/appoint/edit/version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/appoint/list-test.js b/web/tests/unit/routes/app/appoint/list-test.js new file mode 100644 index 0000000..c86784f --- /dev/null +++ b/web/tests/unit/routes/app/appoint/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/appoint/list', 'Unit | Route | app/appoint/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/create-test.js b/web/tests/unit/routes/app/create-test.js new file mode 100644 index 0000000..b5d2ec2 --- /dev/null +++ b/web/tests/unit/routes/app/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/create', 'Unit | Route | app/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/create/api-group-select-test.js b/web/tests/unit/routes/app/create/api-group-select-test.js new file mode 100644 index 0000000..339a32a --- /dev/null +++ b/web/tests/unit/routes/app/create/api-group-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/create/api-group-select', 'Unit | Route | app/create/api group select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/create/app-config-select-test.js b/web/tests/unit/routes/app/create/app-config-select-test.js new file mode 100644 index 0000000..1f4cb8c --- /dev/null +++ b/web/tests/unit/routes/app/create/app-config-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/create/app-config-select', 'Unit | Route | app/create/app config select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/create/splash-select-test.js b/web/tests/unit/routes/app/create/splash-select-test.js new file mode 100644 index 0000000..ee96071 --- /dev/null +++ b/web/tests/unit/routes/app/create/splash-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/create/splash-select', 'Unit | Route | app/create/splash select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/create/theme-select-test.js b/web/tests/unit/routes/app/create/theme-select-test.js new file mode 100644 index 0000000..80b6aba --- /dev/null +++ b/web/tests/unit/routes/app/create/theme-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/create/theme-select', 'Unit | Route | app/create/theme select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/edit-test.js b/web/tests/unit/routes/app/edit-test.js new file mode 100644 index 0000000..355b29c --- /dev/null +++ b/web/tests/unit/routes/app/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/edit', 'Unit | Route | app/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/edit/theme-select-test.js b/web/tests/unit/routes/app/edit/theme-select-test.js new file mode 100644 index 0000000..9d06518 --- /dev/null +++ b/web/tests/unit/routes/app/edit/theme-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/edit/theme-select', 'Unit | Route | app/edit/theme select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/list-test.js b/web/tests/unit/routes/app/list-test.js new file mode 100644 index 0000000..ac2c2ba --- /dev/null +++ b/web/tests/unit/routes/app/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/list', 'Unit | Route | app/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/release-test.js b/web/tests/unit/routes/app/release-test.js new file mode 100644 index 0000000..307ed93 --- /dev/null +++ b/web/tests/unit/routes/app/release-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/release', 'Unit | Route | app/release', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/release/edit-test.js b/web/tests/unit/routes/app/release/edit-test.js new file mode 100644 index 0000000..9d0def7 --- /dev/null +++ b/web/tests/unit/routes/app/release/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/release/edit', 'Unit | Route | app/release/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/release/edit/version-select-test.js b/web/tests/unit/routes/app/release/edit/version-select-test.js new file mode 100644 index 0000000..c2e277e --- /dev/null +++ b/web/tests/unit/routes/app/release/edit/version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/release/edit/version-select', 'Unit | Route | app/release/edit/version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/release/show-test.js b/web/tests/unit/routes/app/release/show-test.js new file mode 100644 index 0000000..a9014df --- /dev/null +++ b/web/tests/unit/routes/app/release/show-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/release/show', 'Unit | Route | app/release/show', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version-group/create-test.js b/web/tests/unit/routes/app/version-group/create-test.js new file mode 100644 index 0000000..e5759e4 --- /dev/null +++ b/web/tests/unit/routes/app/version-group/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version-group/create', 'Unit | Route | app/version group/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version-group/create/version-select-test.js b/web/tests/unit/routes/app/version-group/create/version-select-test.js new file mode 100644 index 0000000..13018d8 --- /dev/null +++ b/web/tests/unit/routes/app/version-group/create/version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version-group/create/version-select', 'Unit | Route | app/version group/create/version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version-group/edit-test.js b/web/tests/unit/routes/app/version-group/edit-test.js new file mode 100644 index 0000000..7e6faf8 --- /dev/null +++ b/web/tests/unit/routes/app/version-group/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version-group/edit', 'Unit | Route | app/version group/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version-group/edit/version-select-test.js b/web/tests/unit/routes/app/version-group/edit/version-select-test.js new file mode 100644 index 0000000..655b452 --- /dev/null +++ b/web/tests/unit/routes/app/version-group/edit/version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version-group/edit/version-select', 'Unit | Route | app/version group/edit/version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version-group/list-test.js b/web/tests/unit/routes/app/version-group/list-test.js new file mode 100644 index 0000000..9d59171 --- /dev/null +++ b/web/tests/unit/routes/app/version-group/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version-group/list', 'Unit | Route | app/version group/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/android-pad/create-test.js b/web/tests/unit/routes/app/version/android-pad/create-test.js new file mode 100644 index 0000000..ccfa0b3 --- /dev/null +++ b/web/tests/unit/routes/app/version/android-pad/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/android-pad/create', 'Unit | Route | app/version/android pad/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/create-test.js b/web/tests/unit/routes/app/version/create-test.js new file mode 100644 index 0000000..15fbb2b --- /dev/null +++ b/web/tests/unit/routes/app/version/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/create', 'Unit | Route | app/version/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/edit-test.js b/web/tests/unit/routes/app/version/edit-test.js new file mode 100644 index 0000000..25202b2 --- /dev/null +++ b/web/tests/unit/routes/app/version/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/edit', 'Unit | Route | app/version/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/edit/api-group-select-test.js b/web/tests/unit/routes/app/version/edit/api-group-select-test.js new file mode 100644 index 0000000..72ff399 --- /dev/null +++ b/web/tests/unit/routes/app/version/edit/api-group-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/edit/api-group-select', 'Unit | Route | app/version/edit/api group select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/edit/app-config-select-test.js b/web/tests/unit/routes/app/version/edit/app-config-select-test.js new file mode 100644 index 0000000..67349a9 --- /dev/null +++ b/web/tests/unit/routes/app/version/edit/app-config-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/edit/app-config-select', 'Unit | Route | app/version/edit/app config select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/edit/splash-select-test.js b/web/tests/unit/routes/app/version/edit/splash-select-test.js new file mode 100644 index 0000000..0c941f8 --- /dev/null +++ b/web/tests/unit/routes/app/version/edit/splash-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/edit/splash-select', 'Unit | Route | app/version/edit/splash select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/edit/theme-select-test.js b/web/tests/unit/routes/app/version/edit/theme-select-test.js new file mode 100644 index 0000000..168d87e --- /dev/null +++ b/web/tests/unit/routes/app/version/edit/theme-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/edit/theme-select', 'Unit | Route | app/version/edit/theme select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/edit/version-select-test.js b/web/tests/unit/routes/app/version/edit/version-select-test.js new file mode 100644 index 0000000..7b539b3 --- /dev/null +++ b/web/tests/unit/routes/app/version/edit/version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/edit/version-select', 'Unit | Route | app/version/edit/version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/ipad/create-test.js b/web/tests/unit/routes/app/version/ipad/create-test.js new file mode 100644 index 0000000..efb70e3 --- /dev/null +++ b/web/tests/unit/routes/app/version/ipad/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/ipad/create', 'Unit | Route | app/version/ipad/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/iphone/create-test.js b/web/tests/unit/routes/app/version/iphone/create-test.js new file mode 100644 index 0000000..8c8cb97 --- /dev/null +++ b/web/tests/unit/routes/app/version/iphone/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/iphone/create', 'Unit | Route | app/version/iphone/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/iphone/list-test.js b/web/tests/unit/routes/app/version/iphone/list-test.js new file mode 100644 index 0000000..263198f --- /dev/null +++ b/web/tests/unit/routes/app/version/iphone/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/iphone/list', 'Unit | Route | app/version/iphone/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/app/version/list-test.js b/web/tests/unit/routes/app/version/list-test.js new file mode 100644 index 0000000..917b714 --- /dev/null +++ b/web/tests/unit/routes/app/version/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:app/version/list', 'Unit | Route | app/version/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/application-test.js b/web/tests/unit/routes/application-test.js new file mode 100644 index 0000000..7caba15 --- /dev/null +++ b/web/tests/unit/routes/application-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:application', 'Unit | Route | application', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/ad-slide/create-test.js b/web/tests/unit/routes/cloud/ad-slide/create-test.js new file mode 100644 index 0000000..0be1164 --- /dev/null +++ b/web/tests/unit/routes/cloud/ad-slide/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/ad-slide/create', 'Unit | Route | cloud/ad slide/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/ad-slide/create/app-select-for-version-select-test.js b/web/tests/unit/routes/cloud/ad-slide/create/app-select-for-version-select-test.js new file mode 100644 index 0000000..9827239 --- /dev/null +++ b/web/tests/unit/routes/cloud/ad-slide/create/app-select-for-version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/ad-slide/create/app-select-for-version-select', 'Unit | Route | cloud/ad slide/create/app select for version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/ad-slide/create/app-select-test.js b/web/tests/unit/routes/cloud/ad-slide/create/app-select-test.js new file mode 100644 index 0000000..c7a2876 --- /dev/null +++ b/web/tests/unit/routes/cloud/ad-slide/create/app-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/ad-slide/create/app-select', 'Unit | Route | cloud/ad slide/create/app select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/ad-slide/create/corp-select-test.js b/web/tests/unit/routes/cloud/ad-slide/create/corp-select-test.js new file mode 100644 index 0000000..137f2a4 --- /dev/null +++ b/web/tests/unit/routes/cloud/ad-slide/create/corp-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/ad-slide/create/corp-select', 'Unit | Route | cloud/ad slide/create/corp select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/ad-slide/create/version-select-test.js b/web/tests/unit/routes/cloud/ad-slide/create/version-select-test.js new file mode 100644 index 0000000..cd04f27 --- /dev/null +++ b/web/tests/unit/routes/cloud/ad-slide/create/version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/ad-slide/create/version-select', 'Unit | Route | cloud/ad slide/create/version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/ad-slide/edit-test.js b/web/tests/unit/routes/cloud/ad-slide/edit-test.js new file mode 100644 index 0000000..f751803 --- /dev/null +++ b/web/tests/unit/routes/cloud/ad-slide/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/ad-slide/edit', 'Unit | Route | cloud/ad slide/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/ad-slide/list-test.js b/web/tests/unit/routes/cloud/ad-slide/list-test.js new file mode 100644 index 0000000..cbad40f --- /dev/null +++ b/web/tests/unit/routes/cloud/ad-slide/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/ad-slide/list', 'Unit | Route | cloud/ad slide/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/ad-slide/manage-test.js b/web/tests/unit/routes/cloud/ad-slide/manage-test.js new file mode 100644 index 0000000..2e12d41 --- /dev/null +++ b/web/tests/unit/routes/cloud/ad-slide/manage-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/ad-slide/manage', 'Unit | Route | cloud/ad slide/manage', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/biz-group/create-test.js b/web/tests/unit/routes/cloud/corp/biz-group/create-test.js new file mode 100644 index 0000000..7f5cb6a --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/biz-group/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/biz-group/create', 'Unit | Route | cloud/corp/biz group/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/biz-group/edit-test.js b/web/tests/unit/routes/cloud/corp/biz-group/edit-test.js new file mode 100644 index 0000000..eb95359 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/biz-group/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/biz-group/edit', 'Unit | Route | cloud/corp/biz group/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/biz-manage-test.js b/web/tests/unit/routes/cloud/corp/biz-manage-test.js new file mode 100644 index 0000000..75d825b --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/biz-manage-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/biz-manage', 'Unit | Route | cloud/corp/biz manage', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/biz/create-test.js b/web/tests/unit/routes/cloud/corp/biz/create-test.js new file mode 100644 index 0000000..3d099db --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/biz/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/biz/create', 'Unit | Route | cloud/corp/biz/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/biz/edit-test.js b/web/tests/unit/routes/cloud/corp/biz/edit-test.js new file mode 100644 index 0000000..2a85041 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/biz/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/biz/edit', 'Unit | Route | cloud/corp/biz/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/list-test.js b/web/tests/unit/routes/cloud/corp/list-test.js new file mode 100644 index 0000000..201a7b2 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/list', 'Unit | Route | cloud/corp/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/manage-test.js b/web/tests/unit/routes/cloud/corp/manage-test.js new file mode 100644 index 0000000..882d758 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/manage-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/manage', 'Unit | Route | cloud/corp/manage', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/manage/app-config-select-test.js b/web/tests/unit/routes/cloud/corp/manage/app-config-select-test.js new file mode 100644 index 0000000..ba80592 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/manage/app-config-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/manage/app-config-select', 'Unit | Route | cloud/corp/manage/app config select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/manage/app-select-for-version-group-select-test.js b/web/tests/unit/routes/cloud/corp/manage/app-select-for-version-group-select-test.js new file mode 100644 index 0000000..77ddccb --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/manage/app-select-for-version-group-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/manage/app-select-for-version-group-select', 'Unit | Route | cloud/corp/manage/app select for version group select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/manage/app-select-for-version-select-test.js b/web/tests/unit/routes/cloud/corp/manage/app-select-for-version-select-test.js new file mode 100644 index 0000000..68eb6a2 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/manage/app-select-for-version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/manage/app-select-for-version-select', 'Unit | Route | cloud/corp/manage/app select for version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/manage/app-select-test.js b/web/tests/unit/routes/cloud/corp/manage/app-select-test.js new file mode 100644 index 0000000..a44b039 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/manage/app-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/manage/app-select', 'Unit | Route | cloud/corp/manage/app select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/manage/splash-select-test.js b/web/tests/unit/routes/cloud/corp/manage/splash-select-test.js new file mode 100644 index 0000000..ca4a924 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/manage/splash-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/manage/splash-select', 'Unit | Route | cloud/corp/manage/splash select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/manage/theme-select-test.js b/web/tests/unit/routes/cloud/corp/manage/theme-select-test.js new file mode 100644 index 0000000..b0d8752 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/manage/theme-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/manage/theme-select', 'Unit | Route | cloud/corp/manage/theme select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/manage/version-group-select-test.js b/web/tests/unit/routes/cloud/corp/manage/version-group-select-test.js new file mode 100644 index 0000000..d81b704 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/manage/version-group-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/manage/version-group-select', 'Unit | Route | cloud/corp/manage/version group select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/manage/version-select-test.js b/web/tests/unit/routes/cloud/corp/manage/version-select-test.js new file mode 100644 index 0000000..c797891 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/manage/version-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/manage/version-select', 'Unit | Route | cloud/corp/manage/version select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/corp/member/list-test.js b/web/tests/unit/routes/cloud/corp/member/list-test.js new file mode 100644 index 0000000..2f0ab21 --- /dev/null +++ b/web/tests/unit/routes/cloud/corp/member/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/corp/member/list', 'Unit | Route | cloud/corp/member/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/create-test.js b/web/tests/unit/routes/cloud/create-test.js new file mode 100644 index 0000000..c4add99 --- /dev/null +++ b/web/tests/unit/routes/cloud/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/create', 'Unit | Route | cloud/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/edit-test.js b/web/tests/unit/routes/cloud/edit-test.js new file mode 100644 index 0000000..98d66cc --- /dev/null +++ b/web/tests/unit/routes/cloud/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/edit', 'Unit | Route | cloud/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/cloud/list-test.js b/web/tests/unit/routes/cloud/list-test.js new file mode 100644 index 0000000..cd3f4b7 --- /dev/null +++ b/web/tests/unit/routes/cloud/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:cloud/list', 'Unit | Route | cloud/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/contact-test.js b/web/tests/unit/routes/corp/contact-test.js new file mode 100644 index 0000000..3d85fc0 --- /dev/null +++ b/web/tests/unit/routes/corp/contact-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/contact', 'Unit | Route | corp/contact', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/contact/create-test.js b/web/tests/unit/routes/corp/contact/create-test.js new file mode 100644 index 0000000..8ffa5ae --- /dev/null +++ b/web/tests/unit/routes/corp/contact/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/contact/create', 'Unit | Route | corp/contact/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/contact/edit-test.js b/web/tests/unit/routes/corp/contact/edit-test.js new file mode 100644 index 0000000..fe33b54 --- /dev/null +++ b/web/tests/unit/routes/corp/contact/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/contact/edit', 'Unit | Route | corp/contact/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/contact/list-test.js b/web/tests/unit/routes/corp/contact/list-test.js new file mode 100644 index 0000000..40a4dfd --- /dev/null +++ b/web/tests/unit/routes/corp/contact/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/contact/list', 'Unit | Route | corp/contact/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/dept-test.js b/web/tests/unit/routes/corp/dept-test.js new file mode 100644 index 0000000..15678be --- /dev/null +++ b/web/tests/unit/routes/corp/dept-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/dept', 'Unit | Route | corp/dept', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/dept/create-test.js b/web/tests/unit/routes/corp/dept/create-test.js new file mode 100644 index 0000000..0c0a556 --- /dev/null +++ b/web/tests/unit/routes/corp/dept/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/dept/create', 'Unit | Route | corp/dept/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/dept/edit-test.js b/web/tests/unit/routes/corp/dept/edit-test.js new file mode 100644 index 0000000..34080ca --- /dev/null +++ b/web/tests/unit/routes/corp/dept/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/dept/edit', 'Unit | Route | corp/dept/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/dept/list-test.js b/web/tests/unit/routes/corp/dept/list-test.js new file mode 100644 index 0000000..5b77673 --- /dev/null +++ b/web/tests/unit/routes/corp/dept/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/dept/list', 'Unit | Route | corp/dept/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/dept/tree-test.js b/web/tests/unit/routes/corp/dept/tree-test.js new file mode 100644 index 0000000..2458c28 --- /dev/null +++ b/web/tests/unit/routes/corp/dept/tree-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/dept/tree', 'Unit | Route | corp/dept/tree', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/tiny-app-group/create-test.js b/web/tests/unit/routes/corp/tiny-app-group/create-test.js new file mode 100644 index 0000000..78c2c95 --- /dev/null +++ b/web/tests/unit/routes/corp/tiny-app-group/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/tiny-app-group/create', 'Unit | Route | corp/tiny app group/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/tiny-app-group/edit-test.js b/web/tests/unit/routes/corp/tiny-app-group/edit-test.js new file mode 100644 index 0000000..d572e7f --- /dev/null +++ b/web/tests/unit/routes/corp/tiny-app-group/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/tiny-app-group/edit', 'Unit | Route | corp/tiny app group/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/corp/tiny-app-group/list-test.js b/web/tests/unit/routes/corp/tiny-app-group/list-test.js new file mode 100644 index 0000000..5e53223 --- /dev/null +++ b/web/tests/unit/routes/corp/tiny-app-group/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:corp/tiny-app-group/list', 'Unit | Route | corp/tiny app group/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/index-test.js b/web/tests/unit/routes/index-test.js new file mode 100644 index 0000000..18c8f13 --- /dev/null +++ b/web/tests/unit/routes/index-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:index', 'Unit | Route | index', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/login-test.js b/web/tests/unit/routes/login-test.js new file mode 100644 index 0000000..77b7bd0 --- /dev/null +++ b/web/tests/unit/routes/login-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:login', 'Unit | Route | login', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + var route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/op-detail-test.js b/web/tests/unit/routes/op-detail-test.js new file mode 100644 index 0000000..22d46da --- /dev/null +++ b/web/tests/unit/routes/op-detail-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:op-detail', 'Unit | Route | op detail', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/role/create-test.js b/web/tests/unit/routes/role/create-test.js new file mode 100644 index 0000000..b189536 --- /dev/null +++ b/web/tests/unit/routes/role/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:role/create', 'Unit | Route | role/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/role/edit-test.js b/web/tests/unit/routes/role/edit-test.js new file mode 100644 index 0000000..507d75c --- /dev/null +++ b/web/tests/unit/routes/role/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:role/edit', 'Unit | Route | role/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/role/list-test.js b/web/tests/unit/routes/role/list-test.js new file mode 100644 index 0000000..d1e1de7 --- /dev/null +++ b/web/tests/unit/routes/role/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:role/list', 'Unit | Route | role/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/splash-test.js b/web/tests/unit/routes/splash-test.js new file mode 100644 index 0000000..9b305ff --- /dev/null +++ b/web/tests/unit/routes/splash-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:splash', 'Unit | Route | splash', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/splash/create-test.js b/web/tests/unit/routes/splash/create-test.js new file mode 100644 index 0000000..30585bf --- /dev/null +++ b/web/tests/unit/routes/splash/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:splash/create', 'Unit | Route | splash/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/splash/edit-test.js b/web/tests/unit/routes/splash/edit-test.js new file mode 100644 index 0000000..16481df --- /dev/null +++ b/web/tests/unit/routes/splash/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:splash/edit', 'Unit | Route | splash/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/splash/list-test.js b/web/tests/unit/routes/splash/list-test.js new file mode 100644 index 0000000..e7401a3 --- /dev/null +++ b/web/tests/unit/routes/splash/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:splash/list', 'Unit | Route | splash/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/theme-test.js b/web/tests/unit/routes/theme-test.js new file mode 100644 index 0000000..4c182ff --- /dev/null +++ b/web/tests/unit/routes/theme-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:theme', 'Unit | Route | theme', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/theme/create-test.js b/web/tests/unit/routes/theme/create-test.js new file mode 100644 index 0000000..ccbe0ef --- /dev/null +++ b/web/tests/unit/routes/theme/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:theme/create', 'Unit | Route | theme/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/theme/edit-test.js b/web/tests/unit/routes/theme/edit-test.js new file mode 100644 index 0000000..1145e76 --- /dev/null +++ b/web/tests/unit/routes/theme/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:theme/edit', 'Unit | Route | theme/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/theme/list-test.js b/web/tests/unit/routes/theme/list-test.js new file mode 100644 index 0000000..7173282 --- /dev/null +++ b/web/tests/unit/routes/theme/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:theme/list', 'Unit | Route | theme/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/user/create-test.js b/web/tests/unit/routes/user/create-test.js new file mode 100644 index 0000000..dd800b1 --- /dev/null +++ b/web/tests/unit/routes/user/create-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:user/create', 'Unit | Route | user/create', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/user/create/role-select-test.js b/web/tests/unit/routes/user/create/role-select-test.js new file mode 100644 index 0000000..e6f922b --- /dev/null +++ b/web/tests/unit/routes/user/create/role-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:user/create/role-select', 'Unit | Route | user/create/role select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/user/edit-test.js b/web/tests/unit/routes/user/edit-test.js new file mode 100644 index 0000000..754cb31 --- /dev/null +++ b/web/tests/unit/routes/user/edit-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:user/edit', 'Unit | Route | user/edit', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/user/edit/role-select-test.js b/web/tests/unit/routes/user/edit/role-select-test.js new file mode 100644 index 0000000..213a612 --- /dev/null +++ b/web/tests/unit/routes/user/edit/role-select-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:user/edit/role-select', 'Unit | Route | user/edit/role select', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/user/list-test.js b/web/tests/unit/routes/user/list-test.js new file mode 100644 index 0000000..e5ac4b3 --- /dev/null +++ b/web/tests/unit/routes/user/list-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:user/list', 'Unit | Route | user/list', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/user/profile-test.js b/web/tests/unit/routes/user/profile-test.js new file mode 100644 index 0000000..a029675 --- /dev/null +++ b/web/tests/unit/routes/user/profile-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:user/profile', 'Unit | Route | user/profile', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/user/profile/upload-avatar-test.js b/web/tests/unit/routes/user/profile/upload-avatar-test.js new file mode 100644 index 0000000..7423cab --- /dev/null +++ b/web/tests/unit/routes/user/profile/upload-avatar-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:user/profile/upload-avatar', 'Unit | Route | user/profile/upload avatar', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/routes/user/show-test.js b/web/tests/unit/routes/user/show-test.js new file mode 100644 index 0000000..47a23c0 --- /dev/null +++ b/web/tests/unit/routes/user/show-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:user/show', 'Unit | Route | user/show', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/web/tests/unit/serializers/application-test.js b/web/tests/unit/serializers/application-test.js new file mode 100644 index 0000000..1aaa9ba --- /dev/null +++ b/web/tests/unit/serializers/application-test.js @@ -0,0 +1,15 @@ +import { moduleForModel, test } from 'ember-qunit'; + +moduleForModel('application', 'Unit | Serializer | application', { + // Specify the other units that are required for this test. + needs: ['serializer:application'] +}); + +// Replace this with your real tests. +test('it serializes records', function(assert) { + var record = this.subject(); + + var serializedRecord = record.serialize(); + + assert.ok(serializedRecord); +}); diff --git a/web/tests/unit/services/ajax-test.js b/web/tests/unit/services/ajax-test.js new file mode 100644 index 0000000..5be3948 --- /dev/null +++ b/web/tests/unit/services/ajax-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:ajax', 'Unit | Service | ajax', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/api-group/api/service-test.js b/web/tests/unit/services/api-group/api/service-test.js new file mode 100644 index 0000000..9d953d7 --- /dev/null +++ b/web/tests/unit/services/api-group/api/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:api-group/api/service', 'Unit | Service | api group/api/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/api-group/service-test.js b/web/tests/unit/services/api-group/service-test.js new file mode 100644 index 0000000..ed2d3ed --- /dev/null +++ b/web/tests/unit/services/api-group/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:api-group/service', 'Unit | Service | api group/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/app-alias/service-test.js b/web/tests/unit/services/app-alias/service-test.js new file mode 100644 index 0000000..6d8cf2c --- /dev/null +++ b/web/tests/unit/services/app-alias/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:app-alias/service', 'Unit | Service | app alias/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/app-config/footer-item/service-test.js b/web/tests/unit/services/app-config/footer-item/service-test.js new file mode 100644 index 0000000..1b97a83 --- /dev/null +++ b/web/tests/unit/services/app-config/footer-item/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:app-config/footer-item/service', 'Unit | Service | app config/footer item/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/app-config/service-test.js b/web/tests/unit/services/app-config/service-test.js new file mode 100644 index 0000000..c34ab13 --- /dev/null +++ b/web/tests/unit/services/app-config/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:app-config/service', 'Unit | Service | app config/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/app-version-alias/service-test.js b/web/tests/unit/services/app-version-alias/service-test.js new file mode 100644 index 0000000..8ebb494 --- /dev/null +++ b/web/tests/unit/services/app-version-alias/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:app-version-alias/service', 'Unit | Service | app version alias/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/app/appoint/service-test.js b/web/tests/unit/services/app/appoint/service-test.js new file mode 100644 index 0000000..638d19a --- /dev/null +++ b/web/tests/unit/services/app/appoint/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:app/appoint/service', 'Unit | Service | app/appoint/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/app/release/service-test.js b/web/tests/unit/services/app/release/service-test.js new file mode 100644 index 0000000..4fb4d39 --- /dev/null +++ b/web/tests/unit/services/app/release/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:app/release/service', 'Unit | Service | app/release/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/app/service-test.js b/web/tests/unit/services/app/service-test.js new file mode 100644 index 0000000..07f13aa --- /dev/null +++ b/web/tests/unit/services/app/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:app/service', 'Unit | Service | app/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/app/version-group/service-test.js b/web/tests/unit/services/app/version-group/service-test.js new file mode 100644 index 0000000..cba2eef --- /dev/null +++ b/web/tests/unit/services/app/version-group/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:app/version-group/service', 'Unit | Service | app/version group/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/app/version/service-test.js b/web/tests/unit/services/app/version/service-test.js new file mode 100644 index 0000000..71904e0 --- /dev/null +++ b/web/tests/unit/services/app/version/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:app/version/service', 'Unit | Service | app/version/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/cloud/ad-slide/service-test.js b/web/tests/unit/services/cloud/ad-slide/service-test.js new file mode 100644 index 0000000..e7d8e8b --- /dev/null +++ b/web/tests/unit/services/cloud/ad-slide/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:cloud/ad-slide/service', 'Unit | Service | cloud/ad slide/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/cloud/corp/biz-group/service-test.js b/web/tests/unit/services/cloud/corp/biz-group/service-test.js new file mode 100644 index 0000000..3663136 --- /dev/null +++ b/web/tests/unit/services/cloud/corp/biz-group/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:cloud/corp/biz-group/service', 'Unit | Service | cloud/corp/biz group/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/cloud/corp/biz/service-test.js b/web/tests/unit/services/cloud/corp/biz/service-test.js new file mode 100644 index 0000000..a38e108 --- /dev/null +++ b/web/tests/unit/services/cloud/corp/biz/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:cloud/corp/biz/service', 'Unit | Service | cloud/corp/biz/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/cloud/corp/service-test.js b/web/tests/unit/services/cloud/corp/service-test.js new file mode 100644 index 0000000..73064b7 --- /dev/null +++ b/web/tests/unit/services/cloud/corp/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:cloud/corp/service', 'Unit | Service | cloud/corp/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/cloud/service-test.js b/web/tests/unit/services/cloud/service-test.js new file mode 100644 index 0000000..8a263e7 --- /dev/null +++ b/web/tests/unit/services/cloud/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:cloud/service', 'Unit | Service | cloud/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/corp/contact/service-test.js b/web/tests/unit/services/corp/contact/service-test.js new file mode 100644 index 0000000..aeff020 --- /dev/null +++ b/web/tests/unit/services/corp/contact/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:corp/contact/service', 'Unit | Service | corp/contact/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/corp/dept/service-test.js b/web/tests/unit/services/corp/dept/service-test.js new file mode 100644 index 0000000..94a8d60 --- /dev/null +++ b/web/tests/unit/services/corp/dept/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:corp/dept/service', 'Unit | Service | corp/dept/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/corp/tiny-app-group/service-test.js b/web/tests/unit/services/corp/tiny-app-group/service-test.js new file mode 100644 index 0000000..093c8bb --- /dev/null +++ b/web/tests/unit/services/corp/tiny-app-group/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:corp/tiny-app-group/service', 'Unit | Service | corp/tiny app group/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/dialog-test.js b/web/tests/unit/services/dialog-test.js new file mode 100644 index 0000000..2ee4f87 --- /dev/null +++ b/web/tests/unit/services/dialog-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:dialog', 'Unit | Service | dialog', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/message-test.js b/web/tests/unit/services/message-test.js new file mode 100644 index 0000000..3040331 --- /dev/null +++ b/web/tests/unit/services/message-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:message', 'Unit | Service | message', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/role/service-test.js b/web/tests/unit/services/role/service-test.js new file mode 100644 index 0000000..afaba02 --- /dev/null +++ b/web/tests/unit/services/role/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:role/service', 'Unit | Service | role/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/service-test.js b/web/tests/unit/services/service-test.js new file mode 100644 index 0000000..8976d25 --- /dev/null +++ b/web/tests/unit/services/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:service', 'Unit | Service | service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/splash/service-test.js b/web/tests/unit/services/splash/service-test.js new file mode 100644 index 0000000..a9fea66 --- /dev/null +++ b/web/tests/unit/services/splash/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:splash/service', 'Unit | Service | splash/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/store-test.js b/web/tests/unit/services/store-test.js new file mode 100644 index 0000000..7003201 --- /dev/null +++ b/web/tests/unit/services/store-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:store', 'Unit | Service | store', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + var service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/theme/service-test.js b/web/tests/unit/services/theme/service-test.js new file mode 100644 index 0000000..743a122 --- /dev/null +++ b/web/tests/unit/services/theme/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:theme/service', 'Unit | Service | theme/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/tool-service-test.js b/web/tests/unit/services/tool-service-test.js new file mode 100644 index 0000000..24d5122 --- /dev/null +++ b/web/tests/unit/services/tool-service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:tool-service', 'Unit | Service | tool service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/tests/unit/services/user/service-test.js b/web/tests/unit/services/user/service-test.js new file mode 100644 index 0000000..8685ce1 --- /dev/null +++ b/web/tests/unit/services/user/service-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:user/service', 'Unit | Service | user/service', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +}); diff --git a/web/vendor/ace/avatars/avatar.png b/web/vendor/ace/avatars/avatar.png new file mode 100755 index 0000000..6e3b21b Binary files /dev/null and b/web/vendor/ace/avatars/avatar.png differ diff --git a/web/vendor/ace/avatars/avatar1.png b/web/vendor/ace/avatars/avatar1.png new file mode 100755 index 0000000..e36c82c Binary files /dev/null and b/web/vendor/ace/avatars/avatar1.png differ diff --git a/web/vendor/ace/avatars/avatar2.png b/web/vendor/ace/avatars/avatar2.png new file mode 100755 index 0000000..a87583e Binary files /dev/null and b/web/vendor/ace/avatars/avatar2.png differ diff --git a/web/vendor/ace/avatars/avatar3.png b/web/vendor/ace/avatars/avatar3.png new file mode 100755 index 0000000..70f8128 Binary files /dev/null and b/web/vendor/ace/avatars/avatar3.png differ diff --git a/web/vendor/ace/avatars/avatar4.png b/web/vendor/ace/avatars/avatar4.png new file mode 100755 index 0000000..6afe238 Binary files /dev/null and b/web/vendor/ace/avatars/avatar4.png differ diff --git a/web/vendor/ace/avatars/avatar5.png b/web/vendor/ace/avatars/avatar5.png new file mode 100755 index 0000000..bfd9fa1 Binary files /dev/null and b/web/vendor/ace/avatars/avatar5.png differ diff --git a/web/vendor/ace/avatars/profile-pic.jpg b/web/vendor/ace/avatars/profile-pic.jpg new file mode 100755 index 0000000..3235625 Binary files /dev/null and b/web/vendor/ace/avatars/profile-pic.jpg differ diff --git a/web/vendor/ace/avatars/user.jpg b/web/vendor/ace/avatars/user.jpg new file mode 100755 index 0000000..af4991e Binary files /dev/null and b/web/vendor/ace/avatars/user.jpg differ diff --git a/web/vendor/ace/css/ace-fonts.css b/web/vendor/ace/css/ace-fonts.css new file mode 100755 index 0000000..c08c134 --- /dev/null +++ b/web/vendor/ace/css/ace-fonts.css @@ -0,0 +1,13 @@ +/* included only when we don't want to use fonts from google server */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(../fonts/OpenSans-300.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(../fonts/OpenSans-400.woff) format('woff'); +} \ No newline at end of file diff --git a/web/vendor/ace/css/ace-ie.css b/web/vendor/ace/css/ace-ie.css new file mode 100755 index 0000000..e691a7e --- /dev/null +++ b/web/vendor/ace/css/ace-ie.css @@ -0,0 +1,389 @@ +/* a few ie8/9 specific changes */ +.navbar .navbar-inner , .navbar .btn-navbar { + filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important; +} +.dropdown-menu li > a, +.dropdown-submenu > a { + filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important; +} +.btn { + filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important; +} +.progress , .progress .bar { + filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important; +} + + + + +#cboxLoadingGraphic > .ace-icon, #cboxLoadingGraphic > .fa , #cboxLoadingGraphic > .glyphicon { + display:inline-block; + background:#FFF url('images/loading.gif') no-repeat center; +} +#cboxLoadingGraphic > .ace-icon:before, #cboxLoadingGraphic > .fa:before, #cboxLoadingGraphic > .glyphicon:before { + display:none; +} + +.widget-box-overlay > .loading-icon { + display:inline-block; + width:24px; + height:24px; + background:transparent url('images/loading.gif') no-repeat center; +} +.widget-box-overlay > .loading-icon:before { + display:none; +} + + +@media (max-width: 991px) { + .sidebar.responsive { + display: none; + } + .sidebar.responsive.display { + display: block; + } +} + +.profile-user-info { width: 98%; } +.wysiwyg-toolbar .dropdown-menu { min-width: 260px; } + +.modal.modal-contained { + position: absolute !important; +} + + +/* IE9 and below have an issue with left & right borders and RTL */ +.rtl .sidebar .nav-list li.active > a:before, .rtl .sidebar .nav-list li.active > a:after { + direction: ltr; + text-align: left; +} +.rtl .sidebar .nav-list li > .arrow { + direction: ltr; + text-align: left; +} + + + + +/* following is for ie8 only */ +@media \0screen { + +html { + /* to fix it when inside iframe */ + position: absolute; + width: 100%; +} + +body { + background-color: #E9E9E9; +} + +.sidebar-fixed:before { + left: 0; +} +/* it doesn't show up in ie8, so let's make it visible at least when inside .container */ +.sidebar .nav-list > li:before { + z-index: 4444; + left: -3px; +} + + + +.nav-list > li > .submenu li.open > a > .menu-icon { + display: inline-block; +} + +.ace-nav > li.white-opaque { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#CCFFFFFF', endColorstr='#CCFFFFFF',GradientType=0 ); +} +.ace-nav > li.dark-opaque { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33000000', endColorstr='#33000000',GradientType=0 ); +} + +.ace-nav > li.transparent > a:hover, +.ace-nav > li.transparent > a:focus, +.ace-nav > li.open.transparent > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#19000000', endColorstr='#19000000',GradientType=0 ); +} + +.ace-nav > li.light-10 > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#19FFFFFF', endColorstr='#19FFFFFF',GradientType=0 ); +} +.ace-nav > li.light-10 > a:hover, .ace-nav > li.light-10 > a:focus, .ace-nav > li.open.light-10 > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#CCFFFFFF', endColorstr='#CCFFFFFF',GradientType=0 ) !important; +} + +.ace-nav > li.dark-10 > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#19000000', endColorstr='#19000000',GradientType=0 ); +} +.ace-nav > li.dark-10 > a:hover, .ace-nav > li.dark-10 > a:focus, .ace-nav > li.open.dark-10 > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33000000', endColorstr='#33000000',GradientType=0 ); +} + + + +.navbar .navbar-nav > li > a:hover, +.navbar .navbar-nav > li > a:focus, +.navbar .navbar-nav > li.open > a { + background-color: transparent !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#19000000', endColorstr='#19000000',GradientType=0 ) !important; +} + + + +.infobox-dark > .badge { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33FFFFFF', endColorstr='#33FFFFFF',GradientType=0 ) !important; +} +.widget-box-overlay { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#55000000', endColorstr='#55000000',GradientType=0 ) !important; +} +.widget-toolbar-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#D8FFFFFF', endColorstr='#D8FFFFFF',GradientType=0 ) !important; +} + +input[type=checkbox].ace , input[type=radio].ace, +label input[type=checkbox].ace , label input[type=radio].ace, +input[type=checkbox].ace.ace-switch , input[type=radio].ace.ace-switch, +label input[type=checkbox].ace.ace-switch , label input[type=radio].ace.ace-switch + { + position: static !important; + width: auto !important; + height: auto !important; + z-index: auto !important; +} + +input[type=checkbox].ace + .lbl, input[type=radio].ace + .lbl, +input[type=checkbox].ace ~ .lbl, input[type=radio].ace ~ .lbl { + min-height: auto !important; + min-width: auto !important; + width: auto !important; + height: auto !important; + position: static !important; +} +input[type=checkbox].ace.ace-switch { + width: auto !important; +} +input[type=checkbox].ace.ace-switch + .lbl, +input[type=checkbox].ace.ace-switch ~ .lbl { + margin: 0 !important; + min-height: auto !important; +} +.checkbox label input.ace[type="checkbox"] + .lbl, +.radio label input.ace[type="radio"] + .lbl, +.checkbox label input.ace[type="checkbox"] ~ .lbl, +.radio label input.ace[type="radio"] ~ .lbl { + margin-left: auto; +} + + +[class*="input-"] { + max-width: none !important; +} + + + +.wizard-steps li:first-child:before { + max-width:100%; + left:0; +} + +.login-layout .widget-box { + display:none; + visibility:visible; + position:static; +} + +.login-layout .widget-box.visible { + display:block; +} +.pricing-box-small:hover { + left:-1px; + top:-3px; +} + + +.ace-thumbnails > li > a > img{ + width:auto !important; +} +.ace-thumbnails > li > :first-child > .text{ + display:none; +} +.ace-thumbnails > li:hover > :first-child > .text{ + display:block; +} +.ace-thumbnails > li > .tools{ + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8C000000', endColorstr='#8C000000', GradientType=0) !important; +} +.ace-thumbnails > li > :first-child > .text{ + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8C000000', endColorstr='#8C000000', GradientType=0) !important; +} + + + +.btn.btn-app.btn-light { + border: 1px solid #D9D9D9; +} +.btn.btn-app.btn-yellow { + border: 1px solid #FEE188; +} + + +.widget-box-overlay { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#55000000', endColorstr='#55000000',GradientType=0 ) !important; +} +.ace-file-overlay { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7F000000', endColorstr='#7F000000',GradientType=0 ) !important; +} +.ace-file-overlay > .ace-icon, .ace-file-overlay > .fa, .ace-file-overlay > .glyphicon { + display: inline-block; + width: 32px; + height: 32px; + background: transparent url('images/loading.gif') no-repeat center; +} +.ace-file-overlay > .ace-icon:before, .ace-file-overlay > .fa:before, .ace-file-overlay > .glyphicon:before { + display: none; +} + + +.grid3 { + width:31%; +} +.grid4 { + width:23%; +} + +.itemdiv.dialogdiv > .body:before{ + display:none; +} + +.fc-event-hori, .fc-event-vert { + border-width: 0 !important; +} + + +[class*="tab-color-"] .nav-tabs > li > a > .ace-icon:first-child, +[class*="tab-color-"] .nav-tabs > li > a > .fa:first-child + { + color: #666 !important; +} + + +.dropdown-preview > .dropdown-menu { + *width: 180px; +} + +/*jquery ui*/ +.ui-datepicker , .ui-autocomplete , .ui-menu{ + border:1px solid #CCC; +} +.ui-widget-overlay { + filter:alpha(opacity=100) !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#44000000', endColorstr='#44000000',GradientType=0 ) !important; +} + + +.message-content { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#CCFFFFFF', endColorstr='#CCFFFFFF',GradientType=0 ) !important; +} + + + +/* semi transparent gritter backgrounds */ +.gritter-item-wrapper { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA323232', endColorstr='#EA323232',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-item-wrapper.gritter-info { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA315185', endColorstr='#EA315185',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-item-wrapper.gritter-error { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA992812', endColorstr='#EA992812',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-item-wrapper.gritter-success { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EA59834B', endColorstr='#EA59834B',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-item-wrapper.gritter-warning { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EABE701F', endColorstr='#EABE701F',GradientType=0 ) !important; /* IE6-9 */ +} + +.gritter-item-wrapper.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2F5F5F5', endColorstr='#F2F5F5F5',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-info.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2E8F2FF', endColorstr='#F2E8F2FF',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-error.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2FFEBEB', endColorstr='#F2FFEBEB',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-success.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2EFFAE3', endColorstr='#F2EFFAE3',GradientType=0 ) !important; /* IE6-9 */ +} +.gritter-warning.gritter-light { + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F2FCF8E3', endColorstr='#F2FCF8E3',GradientType=0 ) !important; /* IE6-9 */ +} + + + + +.widget-header .wysiwyg-toolbar .btn-group > .btn , .widget-body .md-header .btn { + background:transparent none !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40FFFFFF', endColorstr='#40FFFFFF',GradientType=0 ) !important; +} +.widget-header .wysiwyg-toolbar .btn-group > .btn.active , .widget-body .md-header .btn-inverse { + background:transparent none !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40000000', endColorstr='#40000000',GradientType=0 ) !important; +} +.widget-body .md-header .btn , .widget-body .md-header .btn-inverse { + display:none; +} + + +.scroller-bar , .scroller-active .scroller-bar { + display: none; +} +.scroller-active:hover .scroller-bar, +.scroller-active .scroller-bar.active, +.scroller-active .scroller-bar:active, +.nav-wrap:hover + .scroller-active .scroller-bar { + display: block; +} + + + +.ace-settings-box { + display: none; +} +.ace-settings-box.open { + display: block; +} + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} + + + +.aside.aside-hidden.aside-vc .modal-dialog { + width: 0; +} +.aside.aside-hidden.aside-hz .modal-dialog { + height: 0; +} + + .btn-group > .btn-app:first-child { + margin-right: 24px; + } + .btn-group > .btn-app.dropdown-toggle:first-child { + margin-right: auto; + } + + + .sidebar .submenu.sub-scroll { + overflow-y: auto; + } +} \ No newline at end of file diff --git a/web/vendor/ace/css/ace-part2.css b/web/vendor/ace/css/ace-part2.css new file mode 100755 index 0000000..4da02fa --- /dev/null +++ b/web/vendor/ace/css/ace-part2.css @@ -0,0 +1,5715 @@ +.timeline-style2 .timeline-info { + width: 100px; +} +.timeline-style2 .timeline-indicator { + font-size: 0; + height: 12px; + line-height: 12px; + width: 12px; + border-width: 1px !important; + background-color: #FFFFFF !important; + position: absolute; + left: 85px; + top: 3px; + opacity: 1; + border-radius: 100%; + display: inline-block; + padding: 0; +} +.timeline-style2 .timeline-date { + display: inline-block; + width: 72px; + text-align: right; + margin-right: 25px; + color: #777; +} +.timeline-style2 .timeline-item .widget-box { + margin-left: 112px; +} +.timeline-style2 .timeline-label { + width: 75px; + text-align: center; + margin-left: 0; + margin-bottom: 10px; + text-align: right; + color: #666; + font-size: 14px; +} +.timeline-time { + text-align: center; + position: static; +} +.dataTables_length select { + width: 70px; + height: 25px; + padding: 2px 3px; +} +.dataTables_length label { + font-weight: normal; +} +.dataTables_filter { + text-align: right; +} +.dataTables_filter input[type=text], +.dataTables_filter input[type=search] { + width: 125px; + height: 18px; + line-height: 18px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + padding: 4px 6px; +} +.dataTables_filter label { + font-weight: normal; +} +.dataTables_info { + font-size: 14px; +} +.dataTables_paginate { + text-align: right; +} +.dataTables_paginate .pagination { + margin: 0 12px; +} +.dataTables_wrapper label { + display: inline-block; + font-size: 13px; +} +.dataTables_wrapper input[type=text], +.dataTables_wrapper input[type=search], +.dataTables_wrapper select { + margin-bottom: 0 !important; + margin: 0 4px; +} +.dataTables_wrapper .row { + margin: 0 !important; +} +.dataTables_wrapper .row:first-child { + padding-top: 12px; + padding-bottom: 12px; + background-color: #EFF3F8; +} +.dataTables_wrapper .row:first-child + .dataTable { + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; +} +.dataTables_wrapper .row:last-child { + border-bottom: 1px solid #e0e0e0; + padding-top: 12px; + padding-bottom: 12px; + background-color: #EFF3F8; +} +.dataTables_wrapper .dataTables_scroll + .row { + border-top: 1px solid #e0e0e0; +} +.dataTable { + margin-bottom: 0; +} +.dataTable > thead > tr > th[class*=sort] { + cursor: pointer; +} +.dataTable > thead > tr > th[class*=sort]:after { + float: right; + display: inline; + content: "\f0dc"; + font-family: FontAwesome; + font-size: 13px; + font-weight: normal; + color: #555; +} +.dataTable > thead > tr > th[class*=sort]:hover { + color: #547ea8; +} +.dataTable > thead > tr > th[class*=sorting_] { + color: #307ecc; +} +.dataTable > thead > tr > th.sorting_desc, +.dataTable > thead > tr > th.sorting_asc { + background-image: -webkit-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: -o-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: linear-gradient(to bottom, #eff3f8 0%, #e3e7ed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeff3f8', endColorstr='#ffe3e7ed', GradientType=0); +} +.dataTable > thead > tr > th.sorting_desc:after { + content: "\f0dd"; + top: -6px; + color: #307ecc; +} +.dataTable > thead > tr > th.sorting_asc:after { + content: "\f0de"; + top: 4px; + color: #307ecc; +} +.dataTable > thead > tr > th.sorting_disabled { + cursor: inherit; +} +.dataTable > thead > tr > th.sorting_disabled:after { + display: none; +} +.dataTables_scrollHead + .dataTables_scrollBody > .dataTable > thead > tr > th:after { + display: none; +} +.dataTables_scrollHeadInner { + width: auto !important; +} +.dataTables_scrollHeadInner > .dataTable > thead > tr > th { + border-bottom-width: 0 !important; +} +.dataTables_borderWrap .dataTables_scrollBody, +.dataTables_borderWrap .dataTables_scrollHead { + border: 1px solid #dddddd !important; + border-width: 0 1px !important; +} +.dataTables_borderWrap .dataTables_scrollBody .table-bordered, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered { + border-left-width: 0; + border-right-width: 0; +} +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > thead > tr > th:first-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > thead > tr > th:first-child, +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > tbody > tr > td:first-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > tbody > tr > td:first-child { + border-left-width: 0; +} +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > thead > tr > th:last-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > thead > tr > th:last-child, +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > tbody > tr > td:last-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > tbody > tr > td:last-child { + border-right-width: 0; +} +table.dataTable { + clear: both; + max-width: none !important; +} +table.dataTable th:active { + outline: none; +} +div.dataTables_scrollHead table { + margin-bottom: 0 !important; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.dataTables_scrollHead table thead tr:last-child th:first-child, +div.dataTables_scrollHead table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody tbody tr:first-child th, +div.dataTables_scrollBody tbody tr:first-child td { + border-top: none; +} +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} +.DTTT_Print .main-content { + margin-left: 0 !important; + margin-right: 0 !important; +} +.DTTT_Print .navbar-fixed-top + .main-container { + padding-top: 0; +} +.tableTools-container { + margin-bottom: 8px; +} +.tableTools-alert.gritter-item-wrapper { + padding: 12px 11px 8px; + z-index: 1999; +} +ul.ColVis_collection { + z-index: 2002; +} +ul.ColVis_collection > li > a { + padding: 0; +} +ul.ColVis_collection > li > a:focus { + outline: none; +} +ul.ColVis_collection > li.ColVis_Special { + border-top: 1px solid #DDD; +} +ul.ColVis_collection > li.ColVis_Special > a { + padding: 6px 11px 7px; + text-align: center; +} +ul.ColVis_collection label { + margin: auto; + padding: 6px 11px 7px; + display: block; + cursor: pointer; +} +div.ColVis_catcher { + position: absolute; + z-index: 1101; +} +div.ColVis_collectionBackground { + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-color: black; + z-index: 1100; +} +.fc-toolbar h2 { + font-size: 22px; + color: #65A0CE; +} +.fc-unthemed th, +.fc-unthemed td, +.fc-unthemed hr, +.fc-unthemed thead, +.fc-unthemed tbody, +.fc-unthemed .fc-row, +.fc-unthemed .fc-popover { + border-color: #BCD4E5; +} +.fc-unthemed .fc-today { + background: #FFC; +} +.fc-event { + border-width: 0; + color: #ffffff; + padding: 1px 1px 2px 2px; + border-radius: 0; +} +.fc-event:not([class*="label-"]) { + background-color: #abbac3; +} +.fc-event.label-yellow { + color: #996633; +} +.fc-event.label-light { + color: #888888; +} +.label-yellow .fc-event { + color: #996633; +} +.label-light .fc-event { + color: #888; +} +[class*="label-"] > .fc-event, +[class*="label-"] > .fc-event > .fc-event-skin.fc-event-head { + background-color: inherit; +} +.fc-event.ui-draggable-dragging { + cursor: move; +} +.fc-event.fc-event-vert, +.fc-event-vert > .fc-event { + padding: 0 0 1px; +} +.fc-day-number { + color: #2E6589; + opacity: 1; + filter: alpha(opacity=100); +} +.fc-widget-header, +.fc .fc-axis { + background: #ECF2F7; + color: #8090A0; +} +.fc-event-hori, +.fc-event-vert { + border-radius: 0 !important; + border-color: transparent; +} +.fc-event-vert .fc-event-content { + padding-left: 1px; + padding-right: 1px; +} +.fc-event-vert .fc-event-time { + padding: 0; +} +.fc-state-default { + border: none; +} +.fc-state-default, +.fc-state-default .fc-button-inner { + border: none; + background-color: #abbac3; + color: #FFF; + background-image: none; + box-shadow: none; + text-shadow: none; + border-radius: 0 !important; + margin-left: 2px; +} +.fc-state-default .fc-button-effect { + display: none; +} +.fc-state-disabled, +.fc-state-disabled .fc-button-inner { + opacity: 0.75; + filter: alpha(opacity=75); + color: #DDD; +} +.fc-state-active, +.fc-state-active .fc-button-inner { + border-color: #4F99C6; + background-color: #6FB3E0; +} +.fc-state-hover, +.fc-state-hover .fc-button-inner { + background-color: #8B9AA3; +} +.fc .fc-button-group > * { + margin: 0 1px 0 0; +} +.external-event { + margin: 6px 0; + padding: 0; + cursor: default; + display: block; + font-size: 13px; + line-height: 28px; + color: #ffffff; +} +.external-event:not([class*="label-"]) { + background-color: #abbac3; +} +.external-event:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.external-event.ui-draggable-dragging { + cursor: move; +} +.external-event.label-yellow { + color: #996633; +} +.external-event.label-light { + color: #888888; +} +.external-event > .ace-icon:first-child { + display: inline-block; + height: 32px; + width: 32px; + text-align: center; + line-height: 30px; + margin-right: 5px; + font-size: 15px; + border-right: 1px solid #FFF; +} +/** +.widget-main { + .fc { + position:relative; + top:-40px; + + > .fc-header { + position:relative; + z-index:10; + } + + .fc-header-space { + padding-left:2px; + } + } + + .fc-header-title > h2 { + font-size: floor(@base-font-size * 1.4); + line-height: 36px; + } + + .fc-content { + top:-14px; + z-index:11; + } + + .fc-button-content { + height:37px; + line-height:36px; + } + +} +*/ +@media only screen and (max-width: 480px) { + .fc-header td { + display: block; + width: auto; + text-align: left; + } +} +.chosen-container + .help-inline { + vertical-align: middle; +} +/** +.chosen-select { + display: inline !important; //for validation plugin to work it must be displayed + visibility: hidden; + opacity: 0; + position: absolute; + z-index: -1; + width: 0; + height: 0; + border-width: 0; +} +*/ +.chosen-container, +[class*="chosen-container"] { + vertical-align: middle; +} +.chosen-container > .chosen-single, +[class*="chosen-container"] > .chosen-single { + line-height: 28px; + height: 32px; + box-shadow: none; + background: #FAFAFA; +} +.chosen-choices { + box-shadow: none !important; +} +.chosen-container-single .chosen-single abbr { + background: none; +} +.chosen-container-single .chosen-single abbr:after { + content: "\f00d"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 13px; + position: absolute; + right: 0; + top: -7px; +} +.chosen-container-single .chosen-single abbr:hover:after { + color: #464646; +} +.chosen-container-single.chosen-disabled .chosen-single abbr:hover:after { + color: #464646; +} +.chosen-single div b { + background: none !important; +} +.chosen-single div b:before { + content: "\f0d7"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 12px; + position: relative; + top: -1px; + left: 1px; +} +.chosen-container-active.chosen-with-drop .chosen-single div b:before { + content: "\f0d8"; +} +.chosen-container-single .chosen-search { + position: relative; +} +.chosen-container-single .chosen-search input[type="text"] { + background: none; + border-radius: 0; + line-height: 28px; + height: 28px; +} +.chosen-container-single .chosen-search:after { + content: "\f002"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 14px; + position: absolute; + top: 8px; + right: 12px; +} +.chosen-container-multi .chosen-choices li.search-field input[type="text"] { + height: 25px; +} +.chosen-container-multi .chosen-choices li.search-choice { + line-height: 16px; + padding-bottom: 4px; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + background: none; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before { + content: "\f00d"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 13px; + position: absolute; + right: 2px; + top: -1px; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { + text-decoration: none; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before { + color: #464646; +} +.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close:before { + color: #464646; +} +.chosen-container .chosen-results-scroll-down span, +.chosen-container .chosen-results-scroll-up span { + background: none; +} +.chosen-container .chosen-results-scroll-down span:before, +.chosen-container .chosen-results-scroll-up span:before { + content: "\f0d7"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 12px; + position: relative; + top: -1px; + left: 1px; +} +.chosen-container .chosen-results-scroll-up span:before { + content: "\f0d8"; +} +.chosen-container-active .chosen-single-with-drop div b:before { + content: "\f0d8"; +} +.chosen-rtl .chosen-search input[type="text"] { + background: none; +} +.chosen-rtl .chosen-search:after { + content: ""; + display: none; +} +.chosen-rtl .chosen-search:before { + content: "\f002"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 14px; + position: absolute; + top: 9px; + left: 12px; +} +/** chosen - etc */ +.chosen-container-single .chosen-single { + border-radius: 0; +} +.chosen-container .chosen-results li.highlighted { + background: #316AC5; + color: #FFF; +} +.chosen-container-single .chosen-drop { + border-radius: 0; + border-bottom: 3px solid #4492C9; + border-color: #4492C9; +} +.chosen-single.chosen-single-with-drop, +.chosen-container-active .chosen-single { + border-color: #4492C9; +} +.form-group.has-error .chosen-single { + border-color: #f2a696 !important; +} +.form-group.has-info .chosen-single { + border-color: #72aec2 !important; +} +.form-group.has-warning .chosen-single { + border-color: #e3c94c !important; +} +.form-group.has-success .chosen-single { + border-color: #9cc573 !important; +} +.chosen-container-active.chosen-with-drop .chosen-single { + border-color: #4492C9; +} +.chosen-container .chosen-drop { + display: none; +} +.chosen-container.chosen-with-drop .chosen-drop { + left: auto; + right: auto; + display: block; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) { + .chosen-rtl .chosen-search input[type="text"], + .chosen-container-single .chosen-single abbr, + .chosen-container-single .chosen-single div b, + .chosen-container-single .chosen-search input[type="text"], + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close, + .chosen-container .chosen-results-scroll-down span, + .chosen-container .chosen-results-scroll-up span { + background-image: none !important; + background-repeat: no-repeat !important; + background-size: auto !important; + } +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice { + background-image: none; + background-color: #91b8d0; + color: #FFFFFF; + display: inline-block; + font-size: 13px; + font-weight: normal; + margin-bottom: 3px; + margin-right: 3px; + padding: 6px 22px 7px 9px; + position: relative; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); + transition: all 0.2s ease 0s; + vertical-align: baseline; + white-space: nowrap; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 18px; + height: auto; + line-height: 25px; + text-align: center; +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before { + color: #FFF; + position: static; + font-size: 11px; +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before { + color: #FFF; +} +.tag-input-style + .chosen-container-multi.chosen-rtl .chosen-choices li.search-choice { + padding: 6px 9px 7px 22px; + margin-left: 0; + margin-right: 3px !important; +} +.tag-input-style + .chosen-container-multi.chosen-rtl .chosen-choices li.search-choice .search-choice-close { + right: auto; + left: 0; +} +.select2-container .select2-choice { + border-radius: 0; + height: 32px; + line-height: 28px; +} +.select2-container.select2-drop-above .select2-choice { + border-radius: 0; +} +.select2-container[class*="input-"] { + max-width: none; +} +.select2-container.input-mini { + min-width: 100px; +} +.select2-container .select2-choice abbr, +.select2-search-choice-close { + background: none; +} +.select2-container .select2-choice abbr:before, +.select2-search-choice-close:before { + font-family: FontAwesome; + font-size: 12px; + display: inline; + content: "\f00d"; + color: #888; + position: relative; + top: -1px; +} +.select2-container .select2-choice abbr:hover:before, +.select2-search-choice-close:hover:before { + color: #555; +} +.select2-container .select2-choice abbr:before { + top: -7px; +} +.select2-search-choice-close:hover { + text-decoration: none !important; +} +.select2-drop { + border-radius: 0; + border: 1px solid #4492C9; + border-width: 0 1px 3px; +} +.select2-drop.select2-drop-above { + border-radius: 0; +} +.select2-container .select2-choice { + background: #FAFAFA none; +} +.select2-container-active .select2-choice, +.select2-container-active .select2-choices, +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices, +.select2-container-multi.select2-container-active .select2-choices { + border-color: #4492C9; +} +.select2-results .select2-highlighted { + background: #316AC5; +} +.select2-container .select2-choice .select2-arrow { + border-radius: 0; + background: transparent none; + border: none; +} +.select2-container .select2-choice .select2-arrow b { + background: none; +} +.select2-container .select2-choice .select2-arrow b:before { + font-family: FontAwesome; + font-size: 12px; + display: inline; + content: "\f0d7"; + color: #888; + position: relative; + left: 5px; +} +.select2-dropdown-open .select2-choice .select2-arrow b:before { + content: "\f0d8"; +} +.select2-search .select2-input { + background: #fff none; + margin-top: 4px; +} +.select2-search:after { + font-family: FontAwesome; + font-size: 14px; + display: inline; + content: "\f002"; + color: #777; + position: relative; + top: 0; + left: -20px; + z-index: 0; +} +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + background-image: none; + background-color: #F6F6F6; +} +.select2-container-multi .select2-choices .select2-search-field input { + border: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + background: none !important; + font-size: 14px; +} +.select2-container-multi .select2-choices .select2-search-choice { + line-height: 16px; + padding-bottom: 4px; +} +.select2-container-active .select2-choice, +.select2-container-active .select2-choices, +.select2-container-multi.select2-container-active .select2-choices, +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + -webkit-box-shadow: none; + box-shadow: none; +} +.select2-search input.select2-active { + background-color: #FFF; + position: relative; + z-index: 1; +} +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice div b { + background-image: none !important; + background-size: auto !important; + } + .select2-search input { + background-position: auto !important; + } +} +.select2-container-active.select2-dropdown-open .select2-choice { + background-image: -webkit-linear-gradient(top, #eeeeee 0%, #ffffff 100%); + background-image: -o-linear-gradient(top, #eeeeee 0%, #ffffff 100%); + background-image: linear-gradient(to bottom, #eeeeee 0%, #ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffffffff', GradientType=0); +} +.select2-container-active.select2-drop-above .select2-choice { + background-image: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); +} +.form-group.has-error .select2-choice, +.form-group.has-error .select2-choices { + border-color: #f2a696 !important; +} +.form-group.has-info .select2-choice, +.form-group.has-info .select2-choices { + border-color: #72aec2 !important; +} +.form-group.has-warning .select2-choice, +.form-group.has-warning .select2-choices { + border-color: #e3c94c !important; +} +.form-group.has-success .select2-choice, +.form-group.has-success .select2-choices { + border-color: #9cc573 !important; +} +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice .select2-arrow b { + background-image: none !important; + background-repeat: no-repeat !important; + background-size: auto !important; + } + .select2-search input { + background-position: auto !important; + } +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice { + background-image: none; + background-color: #91b8d0; + color: #FFFFFF; + display: inline-block; + font-size: 13px; + font-weight: normal; + margin-bottom: 3px; + margin-right: 0; + padding: 6px 22px 7px 9px; + position: relative; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); + transition: all 0.2s ease 0s; + vertical-align: baseline; + white-space: nowrap; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close { + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: auto; + width: 18px; + height: auto; + line-height: 25px; + text-align: center; +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close:before { + color: #FFF; + position: static; + font-size: 11px; +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close:hover:before { + color: #FFF; +} +#colorbox:focus, +#colorbox:active { + outline: none; +} +#cboxTopLeft, +#cboxTopCenter, +#cboxTopRight, +#cboxMiddleLeft, +#cboxMiddleRight, +#cboxBottomLeft, +#cboxBottomCenter, +#cboxBottomRight { + background: none !important; + opacity: 0; +} +#cboxContent { + border: 12px solid #000; + background-color: #FFF; + padding: 7px; +} +#cboxOverlay { + background: rgba(0, 0, 0, 0.95); + background: #000; +} +#cboxCurrent { + left: 64px; + margin-bottom: 4px; + font-size: 14px; +} +#cboxTitle { + margin-bottom: 4px; + font-size: 14px; + color: #777; +} +#cboxNext, +#cboxPrevious, +#cboxClose { + background: none; + text-indent: 0; + width: 26px; + height: 26px; + line-height: 22px; + padding: 0 4px; + text-align: center; + border: 2px solid #999; + border-radius: 16px; + color: #666; + font-size: 12px; + margin-left: 5px; + margin-bottom: 5px; +} +#cboxNext:hover, +#cboxPrevious:hover { + color: #333; + border-color: #666; +} +#cboxContent { + overflow: visible; +} +#cboxClose { + background-color: #000; + border: 2px solid #FFF; + border-radius: 32px; + color: #FFF; + font-size: 21px; + height: 28px; + width: 28px; + padding-bottom: 2px; + margin-left: 0; + right: -14px; + top: -14px; +} +#cboxLoadingOverlay { + background: none !important; +} +#cboxLoadingGraphic { + background: #FFF none !important; + text-align: center; +} +#cboxLoadingGraphic > .ace-icon { + display: inline-block; + background-color: #FFF; + border-radius: 8px; + width: 32px; + height: 32px; + position: relative; + top: 48%; + text-align: center; + vertical-align: middle; + font-size: 24px; + color: #FE7E3E; +} +.ace-spinner { + display: inline-block; +} +.ace-spinner .spinbox-buttons.btn-group-vertical { + min-width: 18px; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn { + font-size: 10px; + padding: 0; + width: 22px; + height: 16px; + line-height: 8px; + margin-left: 0; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn:first-child { + margin-top: 0; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn > .ace-icon { + margin: 0; + padding: 0; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn + .btn { + margin-top: 2px; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn-xs { + height: 14px; + line-height: 7px; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn-lg { + height: 22px; + line-height: 10px; + width: 22px; +} +.ace-spinner .spinbox-buttons > button.btn.spinbox-up:active { + top: -1px; +} +.ace-spinner:not(.touch-spinner) .spinbox-buttons > .btn > .ace-icon { + margin-top: -1px; +} +.ace-spinner.touch-spinner .spinbox-buttons { + margin: 0; + font-size: 0; +} +.ace-spinner.touch-spinner .spinbox-buttons .btn-sm { + width: 32px; +} +.ace-spinner.touch-spinner .spinbox-buttons .btn-xs { + width: 24px; +} +.ace-spinner.touch-spinner .spinbox-buttons .btn-lg { + width: 40px; +} +.ace-spinner.touch-spinner .spinbox-buttons > .btn { + margin: 0 1px !important; +} +.ace-spinner.touch-spinner .spinbox-buttons > .btn-xs { + padding-top: 3px; + padding-bottom: 3px; +} +.ace-spinner.touch-spinner .spinbox-buttons > .btn > .ace-icon { + vertical-align: middle; + display: inline-block; +} +.steps { + list-style: none; + display: table; + width: 100%; + padding: 0; + margin: 0; + position: relative; +} +.steps li { + display: table-cell; + text-align: center; + width: 1%; +} +.steps li .step { + border: 5px solid #ced1d6; + color: #546474; + font-size: 15px; + border-radius: 100%; + background-color: #FFF; + position: relative; + z-index: 2; + display: inline-block; + width: 40px; + height: 40px; + line-height: 30px; + text-align: center; +} +.steps li:before { + display: block; + content: ""; + width: 100%; + height: 1px; + font-size: 0; + overflow: hidden; + border-top: 4px solid #CED1D6; + position: relative; + top: 21px; + z-index: 1; +} +.steps li.last-child:before { + max-width: 50%; + width: 50%; +} +.steps li:last-child:before { + max-width: 50%; + width: 50%; +} +.steps li:first-child:before { + max-width: 51%; + left: 50%; +} +.steps li.active:before, +.steps li.complete:before, +.steps li.active .step, +.steps li.complete .step { + border-color: #5293c4; +} +.steps li.complete .step { + cursor: default; + color: #FFF; + -webkit-transition: transform ease 0.1s; + -o-transition: transform ease 0.1s; + transition: transform ease 0.1s; +} +.steps li.complete .step:before { + display: block; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + line-height: 30px; + text-align: center; + border-radius: 100%; + content: "\f00c"; + background-color: #FFF; + z-index: 3; + font-family: FontAwesome; + font-size: 17px; + color: #87ba21; +} +.steps li.complete:hover .step { + -moz-transform: scale(1.1); + -webkit-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); + border-color: #80afd4; +} +.steps li.complete:hover:before { + border-color: #80afd4; +} +.steps li .title { + display: block; + margin-top: 4px; + max-width: 100%; + color: #949ea7; + font-size: 14px; + z-index: 104; + text-align: center; + table-layout: fixed; + word-wrap: break-word; +} +.steps li.complete .title, +.steps li.active .title { + color: #2b3d53; +} +.step-content { + position: relative; +} +.step-content .step-pane { + display: none; + min-height: 200px; + padding: 4px 8px 12px; +} +.step-content .step-pane.active { + display: block; +} +.wizard-actions { + text-align: right; +} +@media only screen and (max-width: 767px) { + .steps li .step { + width: 30px; + height: 30px; + line-height: 24px; + border-width: 3px; + } + .steps li:before, + .steps li:after { + border-width: 3px; + } + .steps li.complete .step:before { + line-height: 24px; + font-size: 13px; + } + .steps li:before { + top: 16px; + } + .step-content .step-pane { + padding: 4px 4px 6px; + min-height: 150px; + } +} +.tree { + margin: auto; + padding: 0 0 0 9px; + overflow-x: hidden; + overflow-y: auto; + position: relative; +} +.tree:before { + display: inline-block; + content: ""; + position: absolute; + top: -20px; + bottom: 16px; + left: 0; + z-index: 1; + border: 1px dotted #67b2dd; + border-width: 0 0 0 1px; +} +.tree .tree-branch-name, +.tree .tree-item-name { + cursor: pointer; +} +.tree .tree-branch { + width: auto; + min-height: 20px; + cursor: pointer; +} +.tree .tree-branch .tree-branch-header { + position: relative; + height: 20px; + line-height: 20px; +} +.tree .tree-branch .tree-branch-header:hover { + background-color: #F0F7FC; +} +.tree .tree-branch .tree-branch-header .tree-branch-name, +.tree .tree-item .tree-item-name { + display: inline; + z-index: 2; +} +.tree .tree-branch .tree-branch-header > .tree-branch-name > .ace-icon:first-child, +.tree .tree-item > .tree-item-name > .ace-icon:first-child { + display: inline-block; + position: relative; + z-index: 2; + top: -1px; +} +.tree .tree-branch > .tree-branch-header > .tree-branch-name > .tree-label { + margin-left: 2px; +} +.tree .tree-branch > .tree-branch-header > .tree-branch-name > .ace-icon:first-child { + margin: -2px 0 0 -2px; +} +.tree .tree-branch:last-child:after { + display: inline-block; + content: ""; + position: absolute; + z-index: 1; + top: 15px; + bottom: 0; + left: -15px; + border-left: 1px solid #FFF; +} +.tree .tree-branch .tree-branch-children { + margin: 0 0 0 23px; + padding: 0; + position: relative; +} +.tree .tree-branch .tree-branch-children:before { + display: inline-block; + content: ""; + position: absolute; + z-index: 1; + top: -14px; + bottom: 16px; + left: -14px; + border: 1px dotted #67b2dd; + border-width: 0 0 0 1px; +} +.tree .tree-item { + position: relative; + height: 20px; + line-height: 20px; + cursor: pointer; +} +.tree .tree-item:hover { + background-color: #F0F7FC; +} +.tree .tree-item > .tree-item-name > .ace-icon:first-child { + margin-right: 3px; +} +.tree .tree-item > .tree-item-name > .tree-label > .ace-icon:first-child { + margin-left: 3px; + margin-right: 3px; +} +.tree .tree-item > .ace-icon:first-child { + margin-top: -1px; +} +.tree .tree-branch, +.tree .tree-item { + position: relative; + list-style: none; +} +.tree .tree-branch:before, +.tree .tree-item:before { + display: inline-block; + content: ""; + position: absolute; + top: 14px; + left: -13px; + width: 18px; + height: 0; + border-top: 1px dotted #67b2dd; + z-index: 1; +} +.tree .tree-selected { + background-color: rgba(98, 168, 209, 0.1); + color: #6398B0; +} +.tree .tree-selected:hover { + background-color: rgba(98, 168, 209, 0.1); +} +.tree .tree-item, +.tree .tree-branch { + border: 1px solid #FFF; +} +.tree .tree-branch .tree-branch-header { + border-radius: 0; +} +.tree .tree-item, +.tree .tree-branch .tree-branch-header { + margin: 0; + padding: 5px; + color: #4D6878; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.tree .tree-item > .tree-item-name > .ace-icon:first-child { + color: #F9E8CE; + width: 13px; + height: 13px; + line-height: 13px; + font-size: 11px; + text-align: center; + border-radius: 3px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + background-color: #FAFAFA; + border: 1px solid #CCC; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +.tree .tree-selected > .tree-item-name > .ace-icon:first-child { + background-color: #F9A021; + border-color: #F9A021; + color: #FFF; +} +.tree .tree-plus.ace-icon:first-child, +.tree .tree-minus.ace-icon:first-child { + display: inline-block; + font-style: normal; + border: 1px solid #DDD; + vertical-align: middle; + height: 11px; + width: 11px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + text-align: center; + border: 1px solid #8BAEBF; + line-height: 10px; + background-color: #FFF; + position: relative; + z-index: 2; +} +.tree .tree-plus.ace-icon:first-child:before, +.tree .tree-minus.ace-icon:first-child:before { + content: ""; + display: block; + width: 7px; + height: 0; + border-top: 1px solid #4D6878; + position: absolute; + top: 5px; + left: 2px; +} +.tree .tree-plus.ace-icon:first-child:after { + content: ""; + display: block; + height: 7px; + width: 0; + border-left: 1px solid #4D6878; + position: absolute; + top: 2px; + left: 5px; +} +.tree .tree-unselectable .tree-item > .tree-item-name > .tree-label > .ace-icon:first-child { + color: #5084A0; + width: 13px; + height: 13px; + line-height: 13px; + font-size: 10px; + text-align: center; + border-radius: 0; + background-color: transparent; + border: none; + box-shadow: none; +} +.tree .ace-icon[class*="-down"] { + transform: rotate(-45deg); +} +.tree .ace-icon[class*="-download"] { + transform: none; +} +.tree .fa-spin { + height: auto; +} +.tree .tree-loading { + margin-left: 36px; +} +.tree img { + display: inline; + veritcal-align: middle; +} +.gritter-item-wrapper { + background-image: none !important; + box-shadow: 0 2px 10px rgba(50, 50, 50, 0.5); + background: rgba(50, 50, 50, 0.92); +} +.gritter-item-wrapper.gritter-info { + background: rgba(49, 81, 133, 0.92); +} +.gritter-item-wrapper.gritter-error { + background: rgba(153, 40, 18, 0.92); +} +.gritter-item-wrapper.gritter-success { + background: rgba(89, 131, 75, 0.92); +} +.gritter-item-wrapper.gritter-warning { + background: rgba(190, 112, 31, 0.92); +} +.gritter-item-wrapper.gritter-light { + background: rgba(245, 245, 245, 0.95); + border: 1px solid #BBB; +} +.gritter-item-wrapper.gritter-light.gritter-info { + background: rgba(232, 242, 255, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-info .gritter-item { + color: #4A577D; +} +.gritter-item-wrapper.gritter-light.gritter-error { + background: rgba(255, 235, 235, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-error .gritter-item { + color: #894A38; +} +.gritter-item-wrapper.gritter-light.gritter-success { + background: rgba(239, 250, 227, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-success .gritter-item { + color: #416131; +} +.gritter-item-wrapper.gritter-light.gritter-warning { + background: rgba(252, 248, 227, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-warning .gritter-item { + color: #946446; +} +.gritter-item p { + line-height: 1.8; +} +.gritter-top, +.gritter-bottom, +.gritter-item { + background-image: none; +} +.gritter-close { + left: auto; + right: 3px; + background-image: none; + width: 18px; + height: 18px; + line-height: 17px; + text-align: center; + border: 2px solid transparent; + border-radius: 16px; + color: #E17B67; +} +.gritter-close:before { + font-family: FontAwesome; + font-size: 16px; + content: "\f00d"; +} +.gritter-info .gritter-close { + color: #FFA500; +} +.gritter-error .gritter-close, +.gritter-success .gritter-close, +.gritter-warning .gritter-close { + color: #FFEA07; +} +.gritter-close:hover { + color: #FFF !important; +} +.gritter-title { + text-shadow: none; +} +.gritter-light .gritter-item, +.gritter-light .gritter-bottom, +.gritter-light .gritter-top, +.gritter-light .gritter-close { + background-image: none; + color: #444; +} +.gritter-light .gritter-title { + text-shadow: none; +} +.gritter-light .gritter-close:hover { + color: #8A3104 !important; +} +.gritter-center { + position: fixed; + left: 33%; + right: 33%; + top: 33%; +} +@media only screen and (max-width: 767px) { + .gritter-center { + left: 16%; + right: 16%; + top: 30%; + } +} +@media only screen and (max-width: 480px) { + .gritter-center { + left: 30px; + right: 30px; + } +} +@media only screen and (max-width: 320px) { + .gritter-center { + left: 10px; + right: 10px; + } +} +.wysiwyg-editor { + max-height: 250px; + height: 250px; + background-color: #F7F8FA; + border-collapse: separate; + border: 1px solid #BBC0CA; + padding: 4px; + box-sizing: content-box; + overflow-y: scroll; + overflow-x: hidden; + outline: none; +} +.wysiwyg-editor:focus { + background-color: #FFF; +} +.wysiwyg-toolbar { + line-height: 33px; + margin: 0 !important; + position: relative; +} +.wysiwyg-toolbar .dropdown-menu { + text-align: left; +} +.wysiwyg-toolbar .btn-group { + float: none !important; + font-size: 0; +} +.wysiwyg-toolbar .btn-group > .btn { + float: none; + padding-left: 0; + padding-right: 0; + text-align: center; + margin-left: 1px; + /** + &.active:after { + border-color: transparent; + border-style: solid; + border-top-color: inherit; + border-width: 6px 14px; + bottom: -13px; + left: 0; + right: 0; + } + */ +} +.wysiwyg-toolbar .btn-group > .btn > .ace-icon:first-child { + font-size: 14px; + width: 25px; + max-width: 25px; + display: inline-block; + border-width: 1px !important; +} +.wysiwyg-toolbar .btn-group > .btn.dropdown-toggle > .ace-icon:last-child { + margin-right: 4px; +} +.wysiwyg-style1 .btn-group > .btn, +.wysiwyg-style2 .btn-group > .btn, +.wysiwyg-style1 .btn-group > .inline > .btn, +.wysiwyg-style2 .btn-group > .inline > .btn { + margin: 0 !important; + background: #FFF !important; + border-width: 0 !important; + color: #ADB3BE !important; + text-shadow: none !important; +} +.wysiwyg-style1 .btn-group > .btn.active, +.wysiwyg-style2 .btn-group > .btn.active, +.wysiwyg-style1 .btn-group > .inline > .btn.active, +.wysiwyg-style2 .btn-group > .inline > .btn.active { + color: #5B80CE !important; +} +.wysiwyg-style1 .btn-group > .btn.active:after, +.wysiwyg-style2 .btn-group > .btn.active:after, +.wysiwyg-style1 .btn-group > .inline > .btn.active:after, +.wysiwyg-style2 .btn-group > .inline > .btn.active:after { + display: none; +} +.wysiwyg-style1 .btn-group, +.wysiwyg-style2 .btn-group { + position: relative; +} +.wysiwyg-style1 .btn-group:after, +.wysiwyg-style2 .btn-group:after { + display: block; + content: ""; + position: absolute; + left: -2px; + top: 6px; + bottom: 6px; + width: 0; + max-width: 0; + border-left: 1px solid #E1E6EA; +} +.wysiwyg-style1 .btn-group:first-child:after, +.wysiwyg-style2 .btn-group:first-child:after { + display: none; +} +.wysiwyg-style2 { + background-color: #E5E5E5; +} +.wysiwyg-style2 + .wysiwyg-editor { + border-color: #DDD; + background-color: #FFF; + border-top: none; +} +.wysiwyg-style2 .btn-group > .btn, +.wysiwyg-style2 .btn-group > .inline > .btn { + margin: 0 1px 0 0 !important; + background: #FFF !important; + border: none !important; + color: #8D939E !important; + text-shadow: none !important; +} +.wysiwyg-style2 .btn-group > .btn.active, +.wysiwyg-style2 .btn-group > .inline > .btn.active { + color: #FFF !important; + background: #6AAEDF !important; +} +.wysiwyg-style2 .btn-group:after { + display: none; +} +.wysiwyg-toolbar .btn-colorpicker { + width: 24px; + height: 24px; + position: relative; + background: #87B87F; + /* Old browsers */ + background: -moz-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(10%, #cf3e73), color-stop(20%, #ffffff), color-stop(30%, #2283c5), color-stop(40%, #ffffff), color-stop(50%, #87b87f), color-stop(60%, #ffffff), color-stop(70%, #ffb752), color-stop(80%, #ffffff), color-stop(90%, #d15b47), color-stop(100%, #ffffff)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* Opera11.10+ */ + background: -ms-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#CF3E73', endColorstr='#FFB752', GradientType=0); + /* IE6-9 */ + background: linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* W3C */ +} +.wysiwyg-toolbar .dropdown-colorpicker > .dropdown-menu { + top: auto; +} +.wysiwyg-toolbar input[type=file] { + position: fixed; + z-index: -10; + opacity: 0; + max-width: 0; + max-height: 0; + display: block; +} +.wysiwyg-toolbar .wysiwyg-choose-file { + display: inline-block; + width: auto; + margin: 4px auto 0; + padding-left: 5px; + padding-right: 5px; +} +.wysiwyg-toolbar .dropdown-menu input[type=text] { + margin-left: 8px; + margin-bottom: 0; +} +.wysiwyg-toolbar .dropdown-menu input[type=text].form-control { + min-width: 150px; +} +.wysiwyg-toolbar .dropdown-menu .btn { + margin-right: 8px; + margin-left: 8px; +} +.wysiwyg-style1 .btn-colorpicker { + width: 20px; + height: 20px; + margin-left: 4px; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + /* for adding image resize functionality in chrome and safari */ + .wysiwyg-editor img { + display: inline !important; + } + .wysiwyg-editor .ui-wrapper { + border: 1px dotted #D00; + overflow: visible !important; + /* because it's image only, so it's ok */ + display: inline-block !important; + vertical-align: middle; + } + .wysiwyg-editor .ui-wrapper:after { + content: ""; + display: block; + position: absolute; + right: -3px; + bottom: -3px; + width: 7px; + height: 7px; + border: 1px solid #D00; + background-color: #FFF; + z-index: 1; + } +} +/* inside widget */ +.widget-header .wysiwyg-toolbar { + background-color: transparent; +} +.widget-header .wysiwyg-toolbar .btn-group > .btn, +.widget-header .wysiwyg-toolbar .btn-group > .inline > .btn { + border-color: transparent; + background: rgba(255, 255, 255, 0.25) !important; + color: #FFF !important; + min-width: 32px; + border-width: 1px !important; + border-radius: 4px !important; + padding: 2px 1px 4px; +} +.widget-header .wysiwyg-toolbar .btn-group > .btn.active, +.widget-header .wysiwyg-toolbar .btn-group > .inline > .btn.active { + background: rgba(0, 0, 0, 0.25) !important; +} +.widget-body .wysiwyg-editor { + border-width: 0; +} +.wysiwyg-speech-input { + width: 20px !important; + color: transparent !important; + background: transparent none !important; + border-width: 0 !important; + -moz-transform: scale(2.0, 2.0); + -webkit-transform: scale(2.0, 2.0); + -o-transform: scale(2.0, 2.0); + -ms-transform: scale(2.0, 2.0); + transform: scale(2.0, 2.0); + -webkit-box-shadow: none !important; + box-shadow: none !important; + position: absolute; + right: 0; + top: -10px; + cursor: pointer; +} +.wysiwyg-speech-input:focus { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +.widget-body .md-header { + margin-top: -30px; + margin-left: 9px; +} +.widget-body .md-header .btn { + border-color: transparent; + background: rgba(255, 255, 255, 0.25) !important; + color: #FFF !important; + text-align: center; + min-width: 32px; + border-width: 1px !important; + border-radius: 4px !important; + padding: 2px 4px 4px; +} +.widget-body .md-header .btn > .ace-icon { + font-size: 14px; + width: 25px; + max-width: 25px; + display: inline-block; +} +.widget-body .md-header .btn-inverse { + background: rgba(0, 0, 0, 0.25) !important; + padding-right: 5px; + margin-left: 4px; +} +.md-fullscreen-controls { + display: none; +} +.widget-body .md-preview { + padding: 8px; + min-height: 200px; +} +.widget-body .md-input { + border: none !important; + box-shadow: none !important; + display: block; + margin-bottom: 0; + background-color: rgba(48, 126, 204, 0.07); + padding: 8px; + width: 100%; +} +.widget-body .md-input:focus { + background-color: #FFF; + box-shadow: none !important; +} +.editable-container .popover-title { + color: #438EB9; +} +.editable-click { + border-bottom: 1px dashed #BBB; + cursor: pointer; + font-weight: normal; +} +img.editable-click { + border: 1px dotted #BBB; +} +.editable-click:hover { + border-color: #0088CC; + color: #0088CC; +} +img.editable-click:hover { + opacity: 0.75; + filter: alpha(opacity=75); +} +.editable-buttons, +.editable-input { + display: inline-block; +} +.editable-buttons { + margin-left: 1px; +} +.editable-buttons .btn { + padding: 0; + width: 28px; + line-height: 24px; + border-width: 3px; + font-size: 12px; + margin: 0 1px 0 0; +} +.editable-buttons .btn > .ace-icon { + margin: 0; +} +.editable-clear-x { + cursor: pointer; + color: #888; + background: none; +} +.editable-clear-x:hover { + color: #D15B47; +} +.editable-clear-x:before { + display: inline-block; + content: "\f057"; + font-family: FontAwesome; + font-size: 15px; + position: absolute; + margin-top: -9px; + width: 16px; + height: 30px; + line-height: 30px; + text-align: center; +} +.editable-input .ace-spinner { + margin-right: 8px; +} +.editable-input .ace-spinner .spinner-input { + width: 100%; +} +.editable-inline .editable-slider { + margin-top: 10px; + margin-right: 4px; +} +.editable-popup .editable-slider { + display: block; + margin-bottom: 16px; + margin-top: 4px; +} +.editable-slider input[type=text] { + display: none; +} +.editable-slider input[type=range] { + outline: none !important; +} +.editable-input .ace-file-input { + display: block; +} +.editable-image .ace-file-multiple .ace-file-container.selected { + border-color: transparent; +} +.editable-image + .editable-buttons, +.editable-wysiwyg + .editable-buttons { + display: block; + text-align: center; + margin-top: 8px; +} +.editable-wysiwyg { + width: 95%; +} +.editable-wysiwyg .wysiwyg-editor { + height: auto; + overflow-y: hidden; +} +.editableform .input-append.dropdown-menu { + display: none; +} +.editableform .open .input-append.dropdown-menu { + display: block; +} +.editable-container .editableform { + margin-bottom: 10px; +} +.editable-inline .editableform { + margin-bottom: 0; +} +.editableform .control-group { + display: block; +} +.editableform-loading { + background: none; +} +.editableform-loading .ace-icon, +.editableform-loading .progress { + position: relative; + top: 35%; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.datepicker td, +.daterangepicker td, +.datepicker th, +.daterangepicker th { + border-radius: 0 !important; + font-size: 13px; +} +.datepicker td.active, +.daterangepicker td.active, +.datepicker td.active:hover, +.daterangepicker td.active:hover { + background: #2283c5 !important; +} +.datepicker td.active.disabled, +.daterangepicker td.active.disabled, +.datepicker td.active.disabled:hover, +.daterangepicker td.active.disabled:hover { + background: #8b9aa3 !important; +} +.datepicker td, +.datepicker th { + min-width: 32px; +} +.datepicker-dropdown.datepicker-orient-bottom:after, +.datepicker-dropdown.datepicker-orient-bottom:before { + top: auto; +} +.daterangepicker .calendar-date { + border-radius: 0; +} +.datepicker-months .month, +.datepicker-years .year { + border-radius: 0 !important; +} +.datepicker-months .month.active, +.datepicker-years .year.active, +.datepicker-months .month.active:hover, +.datepicker-years .year.active:hover, +.datepicker-months .month.active:focus, +.datepicker-years .year.active:focus, +.datepicker-months .month.active:active, +.datepicker-years .year.active:active { + background-image: none !important; + background-color: #2283c5 !important; +} +.bootstrap-timepicker-widget table td input { + width: 32px; +} +.well .datepicker table tr td.day:hover { + background-color: #7d8893; + color: #FFF; +} +.bootstrap-timepicker-widget table td a:hover { + border-radius: 0; +} +.daterangepicker.opensleft:before, +.daterangepicker.opensright:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); +} +.daterangepicker.opensleft:after, +.daterangepicker.opensright:after { + -moz-border-bottom-colors: #fff; +} +.datepicker-dropdown:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); +} +.datepicker-dropdown:after { + -moz-border-bottom-colors: #fff; +} +.datepicker-dropdown.datepicker-orient-bottom:before { + -moz-border-top-colors: #999; +} +.datepicker-dropdown.datepicker-orient-bottom:after { + -moz-border-top-colors: #FFF; +} +.bootstrap-timepicker-widget.dropdown-menu:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); +} +.bootstrap-timepicker-widget.dropdown-menu:after { + -moz-border-bottom-colors: #FFF; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:before { + -moz-border-top-colors: #999; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:after { + -moz-border-top-colors: #FFF; +} +.bootstrap-datetimepicker-widget [class=btn] { + border-width: 0 !important; + background-color: transparent !important; + color: #7399b8 !important; + text-shadow: none !important; +} +.bootstrap-datetimepicker-widget [class=btn]:hover { + color: #1B6AAA !important; +} +.bootstrap-datetimepicker-widget .btn.btn-primary { + border-width: 3px !important; +} +.bootstrap-datetimepicker-widget .picker-switch { + margin-bottom: 2px; +} +.bootstrap-datetimepicker-widget .picker-switch .btn { + width: 90% !important; + background-color: #EEE !important; + color: #478fca !important; + font-size: 16px; +} +.bootstrap-datetimepicker-widget .picker-switch .btn:hover { + background-color: #e3edf5 !important; +} +.bootstrap-datetimepicker-widget td span { + border-radius: 0; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + color: #555 !important; +} +.ui-slider { + background-color: #D5D5D5; +} +.ui-slider-horizontal { + height: 9px; +} +.ui-slider-vertical { + width: 9px; +} +.ui-slider .ui-slider-handle { + border-radius: 0; + width: 1.45em; + height: 1.45em; + background-color: #F8F8F8; + border: 1px solid; +} +.ui-slider .ui-slider-handle:before, +.ui-slider .ui-slider-handle:after { + display: block; + content: ""; + position: absolute; + top: 4px; + left: 5px; + width: 4px; + height: 8px; + border: 1px solid; + border-width: 0 1px; + border-color: inherit; +} +.ui-slider .ui-slider-handle:after { + left: 8px; + border-width: 0 1px 0 0; +} +.ui-slider .ui-slider-handle:hover { + background-color: #FFF; +} +.ui-slider .ui-slider-handle:hover, +.ui-slider .ui-slider-handle:focus, +.ui-slider .ui-slider-handle:active { + outline: none; + -webkit-box-shadow: 1px 1px 1px 0px rgba(0,0,0,.3); + box-shadow: 1px 1px 1px 0px rgba(0,0,0,.3); +} +.ui-slider-horizontal .ui-slider-handle { + margin-left: -0.725em; + top: -0.4em; +} +.ui-slider-vertical .ui-slider-handle { + left: -0.35em; + margin-bottom: -0.65em; +} +.ui-slider-small.ui-slider-horizontal { + height: 5px; +} +.ui-slider-small.ui-slider-vertical { + width: 5px; +} +.ui-slider-small .ui-slider-handle { + border-radius: 100%; + width: 17px; + height: 17px; + margin-bottom: -0.45em; + left: -0.35em; +} +.ui-slider-small .ui-slider-handle:before, +.ui-slider-small .ui-slider-handle:after { + height: 7px; + left: 5px; + width: 3px; +} +.ui-slider-small .ui-slider-handle:after { + left: 7px; +} +.ui-slider-simple .ui-slider-handle:after, +.ui-slider-simple .ui-slider-handle:before { + display: none; +} +/* colors */ +.ui-slider-range { + background-color: #4aa4ce; +} +.ui-slider-handle { + outline: none !important; + border-color: #4aa4ce !important; +} +.ui-state-disabled.ui-slider { + background-color: #E5E5E5; +} +.ui-state-disabled .ui-slider-range { + background-color: #8daebe; +} +.ui-state-disabled .ui-slider-handle { + -webkit-box-shadow: none !important; + box-shadow: none !important; + border-color: #8daebe !important; +} +.ui-slider-green .ui-slider-range { + background-color: #8bbc67; +} +.ui-slider-green .ui-slider-handle { + border-color: #8bbc67 !important; +} +.ui-slider-green.ui-state-disabled .ui-slider-range { + background-color: #aab0a6; +} +.ui-slider-green.ui-state-disabled .ui-slider-handle { + border-color: #aab0a6 !important; +} +.ui-slider-red .ui-slider-range { + background-color: #d36e6e; +} +.ui-slider-red .ui-slider-handle { + border-color: #d36e6e !important; +} +.ui-slider-red.ui-state-disabled .ui-slider-range { + background-color: #c8acac; +} +.ui-slider-red.ui-state-disabled .ui-slider-handle { + border-color: #c8acac !important; +} +.ui-slider-purple .ui-slider-range { + background-color: #ac68ba; +} +.ui-slider-purple .ui-slider-handle { + border-color: #ac68ba !important; +} +.ui-slider-purple.ui-state-disabled .ui-slider-range { + background-color: #ada7ae; +} +.ui-slider-purple.ui-state-disabled .ui-slider-handle { + border-color: #ada7ae !important; +} +.ui-slider-orange .ui-slider-range { + background-color: #efad62; +} +.ui-slider-orange .ui-slider-handle { + border-color: #efad62 !important; +} +.ui-slider-orange.ui-state-disabled .ui-slider-range { + background-color: #e0c4a4; +} +.ui-slider-orange.ui-state-disabled .ui-slider-handle { + border-color: #e0c4a4 !important; +} +.ui-slider-dark .ui-slider-range { + background-color: #606060; +} +.ui-slider-dark .ui-slider-handle { + border-color: #606060 !important; +} +.ui-slider-dark.ui-state-disabled .ui-slider-range { + background-color: #7a7a7a; +} +.ui-slider-dark.ui-state-disabled .ui-slider-handle { + border-color: #7a7a7a !important; +} +.ui-slider-pink .ui-slider-range { + background-color: #d6487e; +} +.ui-slider-pink .ui-slider-handle { + border-color: #d6487e !important; +} +.ui-slider-pink.ui-state-disabled .ui-slider-range { + background-color: #c38ea2; +} +.ui-slider-pink.ui-state-disabled .ui-slider-handle { + border-color: #c38ea2 !important; +} +.ui-datepicker { + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + height: 26px; + min-width: 32px; + max-width: 32px; + text-align: center; + cursor: pointer; + color: transparent; + line-height: 26px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.ui-datepicker .ui-datepicker-prev .ui-icon, +.ui-datepicker .ui-datepicker-next .ui-icon { + color: transparent; + visibility: hidden; +} +.ui-datepicker .ui-datepicker-prev:hover, +.ui-datepicker .ui-datepicker-next:hover { + background-color: #EEE; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-prev:before, +.ui-datepicker .ui-datepicker-next:before { + display: inline; + font-family: FontAwesome; + font-size: 14px; + content: "\f060"; + color: #393939; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 2px; +} +.ui-datepicker .ui-datepicker-next:before { + content: "\f061"; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 2px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 2px; +} +.ui-datepicker td { + padding: 0; +} +.ui-datepicker td > a, +.ui-datepicker td > span { + display: inline-block; + height: 22px; + min-width: 24px; + max-width: 24px; + text-align: center; + color: #393939; + font-size: 13px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.ui-datepicker td > a:hover { + background-color: #EEE; +} +.ui-datepicker td > a.ui-state-highlight { + background-color: #D5E5EF; +} +.ui-datepicker td > a.ui-state-active { + background-color: #2283c5; + color: #FFF; +} +.ui-datepicker td > a.ui-priority-secondary { + color: #888; +} +.ui-datepicker td > span { + color: #999; +} +.ui-datepicker td .ui-datepicker-title select { + height: 24px; + line-height: 24px; + padding: 2px 3px; +} +.ui-datepicker td .ui-datepicker-buttonpane { + background-color: #DDD; + height: 1px; +} +/* dialog */ +.ui-widget-overlay { + background: rgba(0, 0, 0, 0.25); + opacity: 1 !important; + filter: alpha(opacity=100) !important; + z-index: 1039 !important; +} +.ui-dialog, +.ui-jqdialog { + z-index: 1040 !important; + background-color: #FFF; + padding: 0; + border: 1px solid #DDD; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.ui-dialog .ui-dialog-titlebar, +.ui-jqdialog .ui-dialog-titlebar, +.ui-dialog .ui-jqdialog-titlebar, +.ui-jqdialog .ui-jqdialog-titlebar { + background-color: #F1F1F1; + font-size: 16px; + color: #669fc7; + padding: 0; +} +.ui-dialog .ui-dialog-title, +.ui-jqdialog .ui-dialog-title, +.ui-dialog .ui-jqdialog-title, +.ui-jqdialog .ui-jqdialog-title { + float: none !important; + width: auto; +} +.ui-dialog .widget-header, +.ui-jqdialog .widget-header { + margin: 0; + border-width: 0 0 1px 0; +} +.ui-dialog .ui-dialog-buttonpane, +.ui-jqdialog .ui-dialog-buttonpane, +.ui-dialog .ui-jqdialog-buttonpane, +.ui-jqdialog .ui-jqdialog-buttonpane { + background-color: #eff3f8; + border-top: 1px solid #e4e9ee; +} +.ui-dialog .ui-dialog-buttonpane button, +.ui-jqdialog .ui-dialog-buttonpane button, +.ui-dialog .ui-jqdialog-buttonpane button, +.ui-jqdialog .ui-jqdialog-buttonpane button { + font-size: 14px; +} +.ui-dialog .ui-dialog-titlebar-close, +.ui-jqdialog .ui-dialog-titlebar-close, +.ui-dialog .ui-jqdialog-titlebar-close, +.ui-jqdialog .ui-jqdialog-titlebar-close { + border: none; + background: transparent; + opacity: 0.4; + color: #d15b47; + padding: 0; + top: 50%; + right: 8px !important; + text-align: center; +} +.ui-dialog .ui-dialog-titlebar-close:before, +.ui-jqdialog .ui-dialog-titlebar-close:before, +.ui-dialog .ui-jqdialog-titlebar-close:before, +.ui-jqdialog .ui-jqdialog-titlebar-close:before { + content: "\f00d"; + display: inline; + font-family: FontAwesome; + font-size: 16px; +} +.ui-dialog .ui-dialog-titlebar-close:hover, +.ui-jqdialog .ui-dialog-titlebar-close:hover, +.ui-dialog .ui-jqdialog-titlebar-close:hover, +.ui-jqdialog .ui-jqdialog-titlebar-close:hover { + opacity: 1; + text-decoration: none; + padding: 0; +} +.ui-dialog .ui-dialog-titlebar-close .ui-button-text, +.ui-jqdialog .ui-dialog-titlebar-close .ui-button-text, +.ui-dialog .ui-jqdialog-titlebar-close .ui-button-text, +.ui-jqdialog .ui-jqdialog-titlebar-close .ui-button-text { + text-indent: 0; + visibility: hidden; +} +.ui-dialog .widget-header .ui-dialog-titlebar-close, +.ui-jqdialog .widget-header .ui-dialog-titlebar-close, +.ui-dialog .widget-header .ui-jqdialog-titlebar-close, +.ui-jqdialog .widget-header .ui-jqdialog-titlebar-close { + right: 10px !important; +} +/* accordion */ +.ui-accordion .ui-accordion-header { + color: #478fca; + font-weight: normal; + background-color: #F9F9F9; + border: 1px solid #cdd8e3; + padding: 8px 8px 9px 24px; +} +.ui-accordion .ui-accordion-header:hover { + color: #6ea6cc; + background-color: #f1f8fd; +} +.ui-accordion .ui-accordion-header.ui-state-active { + color: #4c8fbd; + background-color: #eef4f9; + position: relative; + font-weight: bold; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + text-indent: 0; + margin-top: 0; + position: absolute; + left: 10px; + top: 7px; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon:before { + display: inline; + font-family: FontAwesome; + font-size: 15px; + content: "\f0da"; +} +.ui-accordion .ui-accordion-header.ui-state-active .ui-accordion-header-icon:before { + content: "\f0d7"; + font-weight: normal; +} +.ui-accordion .ui-accordion-content { + border: 1px solid #cdd8e3; + border-top-width: 0; + padding: 11px 16px; +} +/* tabs */ +.ui-tabs .ui-tabs-nav { + padding: 0; + border-bottom: 1px solid #C5D0DC; +} +.ui-tabs .ui-tabs-nav li.ui-state-default > a { + background-color: #F9F9F9; + border: 1px solid #C5D0DC; + border-bottom-width: 0; + color: #999; + line-height: 16px; + margin-right: -1px; + z-index: 11; + padding: 8px 12px; + position: relative; + top: 2px; +} +.ui-tabs .ui-tabs-nav li > a:focus { + outline: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active > a { + background-color: #FFF; + border: 1px solid; + border-color: #4C8FBD #C5D0DC transparent; + border-top-width: 2px; + -webkit-box-shadow: 0 -2px 3px 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 -2px 3px 0 rgba(0, 0, 0, 0.15); + color: #576373; + position: relative; + top: 1px; +} +.ui-tabs .ui-tabs-panel { + border: 1px solid #C5D0DC; + border-top-width: 0; + margin: 0; + left: auto; + right: auto; + top: auto; + bottom: auto; +} +/* menu */ +.ui-menu { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + width: 150px; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + padding: 3px; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: auto; +} +.ui-menu .ui-menu-item { + padding: 5px 10px 6px; + color: #444; + cursor: pointer; + display: block; + -webkit-box-sizing: inherit; + -moz-box-sizing: inherit; + box-sizing: inherit; +} +.ui-menu .ui-menu-item .ui-menu-icon { + float: right; + position: relative; + left: auto; + right: 4px; + bottom: auto; + text-indent: 0; +} +.ui-menu .ui-menu-item .ui-menu-icon:before { + content: "\f105"; + font-family: FontAwesome; + font-size: 14px; + display: inline; +} +.ui-menu .ui-menu-item:hover, +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active, +.ui-menu .ui-menu-item:hover > .ui-menu-icon, +.ui-menu .ui-state-focus > .ui-menu-icon, +.ui-menu .ui-state-active > .ui-menu-icon { + text-decoration: none; + background-color: #4f99c6; + color: #FFF; + margin: auto; + font-weight: normal; +} +.ui-menu .ui-menu-item:hover .ui-menu-icon, +.ui-menu .ui-state-focus .ui-menu-icon, +.ui-menu .ui-state-active .ui-menu-icon, +.ui-menu .ui-menu-item:hover > .ui-menu-icon .ui-menu-icon, +.ui-menu .ui-state-focus > .ui-menu-icon .ui-menu-icon, +.ui-menu .ui-state-active > .ui-menu-icon .ui-menu-icon { + color: #FFF; +} +.ui-menu .ui-state-disabled, +.ui-menu .ui-state-disabled .ui-menu-icon { + color: #999; + cursor: default; +} +.ui-menu .ui-state-disabled:hover, +.ui-menu .ui-state-disabled.ui-state-focus, +.ui-menu .ui-state-disabled.ui-state-active, +.ui-menu .ui-state-disabled:hover .ui-menu-icon, +.ui-menu .ui-state-disabled.ui-state-focus .ui-menu-icon, +.ui-menu .ui-state-disabled.ui-state-active .ui-menu-icon { + background-color: #FFF; + color: #999; +} +/* auto complete */ +.ui-autocomplete { + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.ui-autocomplete-category { + padding: 6px; + position: relative; + background-color: #eef4f9; + color: #478fca; + font-weight: bolder; + border: 1px solid #DAE6ED; + border-width: 1px 0; +} +.ui-spinner-button { + border-width: 0 !important; + font-size: 10px; + height: 16px; + line-height: 16px; + width: 18px; + color: #FFFFFF !important; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; + display: inline-block; + position: absolute; + text-align: center; + padding: 0; +} +.ui-spinner-button > .ace-icon { + width: 18px; + display: inline-block; +} +.ui-spinner-up { + top: 0; + right: 5px; +} +.ui-spinner-down { + bottom: 3px; + right: 5px; +} +.ui-spinner-input { + margin-top: 0; + padding: 5px; + max-width: 100px; + font-size: 14px; +} +.ui-tooltip { + background-color: #444; + color: #FFF; +} +.ui-progressbar { + background-color: #f5f5f5; + height: 22px; +} +.ui-progressbar .ui-progressbar-value { + margin: 0; +} +.ui-progressbar .ui-progressbar-value[class="progress-bar"] { + background-color: #2a91d8; +} +.ui-selectmenu-button { + border: 1px solid #aaa; +} +.ui-selectmenu-button[aria-expanded=true] { + border-color: #4492C9; +} +.ui-selectmenu-button span.ui-icon { + text-indent: 0; + margin-top: -10px; +} +.ui-selectmenu-button .ui-icon:before { + content: "\f0d7"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 14px; +} +.ui-jqgrid .ui-jqgrid-view, +.ui-jqgrid .ui-paging-info, +.ui-jqgrid .ui-pg-table, +.ui-jqgrid .ui-pg-selbox { + font-size: 13px; +} +.ui-jqgrid .ui-jqgrid-title { + float: left; + margin: 8px; +} +.ui-jqgrid .ui-jqgrid-title-rtl { + float: right; + margin: 8px; +} +.ui-jqgrid-view > .ui-jqgrid-titlebar { + height: 40px; + line-height: 24px; + color: #FFF; + background: #307ecc; + padding: 0; + font-size: 15px; +} +.ui-jqgrid tr.jqgrow.ui-row-rtl td:last-child { + border-right: none; + border-left: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-jqgrid-hdiv { + background-color: #eff3f8; + border: 1px solid #D3D3D3; + border-width: 1px 0 0 1px; + line-height: 15px; + font-weight: bold; + color: #777; + text-shadow: none; +} +.ui-jqgrid .ui-jqgrid-htable thead { + background-color: #eff3f8; +} +.ui-jqgrid .ui-jqgrid-htable th span.ui-jqgrid-resize { + height: 45px !important; +} +.ui-jqgrid .ui-jqgrid-htable th div { + padding-top: 12px; + padding-bottom: 12px; +} +.ui-jqgrid-hdiv .ui-jqgrid-htable { + border-top: none; +} +.ui-jqgrid-hdiv .ui-jqgrid-htable { + border-top: 1px solid #E1E1E1; +} +.ui-jqgrid-titlebar { + position: relative; + top: 1px; + z-index: 1; +} +.ui-jqgrid tr.jqgrow, +.ui-jqgrid tr.ui-row-ltr, +.ui-jqgrid tr.ui-row-rtl { + border: none; +} +.ui-jqgrid tr.ui-row-ltr td, +.ui-jqgrid tr.ui-row-rtl td { + border-bottom: 1px solid #E1E1E1; + padding: 6px 4px; + border-color: #E1E1E1; +} +.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td { + border-right-color: #C7D3A9; +} +.ui-jqgrid tr.ui-state-highlight.ui-row-rtl td { + border-left-color: #C7D3A9; +} +.ui-jqgrid-btable .ui-widget-content.ui-priority-secondary { + background-image: none; + background-color: #F9F9F9; + opacity: 1; +} +.ui-jqgrid-btable .ui-widget-content.ui-state-hover { + background-image: none; + background-color: #EFF4F7; + opacity: 1; +} +.ui-jqgrid-btable .ui-widget-content.ui-state-highlight { + background-color: #E4EFC9; +} +.ui-jqgrid .ui-jqgrid-pager { + line-height: 15px; + height: 55px; + padding-top: 3px !important; + padding-bottom: 5px !important; + background-color: #eff3f8 !important; + border-bottom: 1px solid #E1E1E1 !important; + border-top: 1px solid #E1E1E1 !important; +} +.ui-jqgrid .ui-pg-input { + font-size: inherit; + width: 24px; + height: 20px; + line-height: 16px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + text-align: center; + padding-top: 1px; + padding-bottom: 1px; +} +.ui-jqgrid .ui-pg-selbox { + display: block; + height: 24px; + width: 60px; + margin: 0; + padding: 1px; + line-height: normal; +} +.ui-jqgrid .ui-jqgrid-htable th div { + overflow: visible; +} +.ui-jqgrid .ui-pager-control { + height: 50px; + position: relative; + padding-left: 9px; + padding-right: 9px; +} +.ui-jqgrid .ui-jqgrid-toppager { + height: auto !important; + background-color: #eff3f8; + border-bottom: 1px solid #E1E1E1 !important; +} +.ui-jqgrid .jqgrow .editable { + max-width: 90%; + max-width: calc(92%) !important; +} +.ui-pg-table .navtable .ui-corner-all { + border-radius: 0; +} +.ui-jqgrid .ui-pg-button:hover { + padding: 1px; +} +.ui-jqgrid .ui-pg-button .ui-separator { + margin-left: 4px; + margin-right: 4px; + border-color: #C9D4DB; +} +.ui-jqgrid .ui-jqgrid-btable { + border-left: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-jqgrid-bdiv { + border-top: 1px solid #E1E1E1; +} +.ui-jqgrid .loading { + position: absolute; + top: 45%; + left: 45%; + width: auto; + height: auto; + z-index: 101; + padding: 6px; + margin: 5px; + text-align: center; + font-weight: bold; + font-size: 12px; + background-color: #FFF; + border: 2px solid #8EB8D1; + color: #E2B018; +} +.ui-jqgrid .ui-search-toolbar { + border-top: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-jqgrid-labels { + border-bottom: none; + background: #F2F2F2; + background-image: -webkit-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: -o-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: linear-gradient(to bottom, #f8f8f8 0%, #ececec 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#ffececec', GradientType=0); + padding: 0 !important; + border-left: 1px solid #E1E1E1 !important; +} +.ui-jqgrid .ui-jqgrid-labels th { + border-right: 1px solid #E1E1E1 !important; + text-align: left !important; +} +/* checkbox container */ +.ui-jqgrid-labels th[id*="_cb"]:first-child > div { + padding-top: 0; + text-align: center !important; +} +.ui-jqgrid-sortable { + padding-left: 4px; + font-size: 13px; + color: #777; + font-weight: bold; +} +.ui-jqgrid-sortable:hover { + color: #547ea8; +} +th[aria-selected=true] { + background-image: -webkit-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: -o-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: linear-gradient(to bottom, #eff3f8 0%, #e3e7ed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeff3f8', endColorstr='#ffe3e7ed', GradientType=0); +} +th[aria-selected=true] .ui-jqgrid-sortable { + color: #307ecc; +} +.ui-jqgrid .ui-icon { + text-indent: 0; + color: #307ecc; + float: none; + right: 2px; +} +.rtl .ui-jqgrid .ui-icon { + right: auto; + left: 2px; +} +.ui-jqgrid .ui-icon.ui-state-disabled { + color: #BBB; +} +.ui-jqgrid .ui-icon.ui-state-disabled:hover { + padding: 0; +} +.ui-grid-ico-sort:before { + display: inline; + content: "\f0d7"; + font-family: FontAwesome; + font-size: 12px; +} +.ui-icon-asc:before { + content: "\f0d8"; +} +.ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon { + display: inline-block; + padding: 0; + width: 24px; + height: 24px; + line-height: 22px; + text-align: center; + position: static; + float: none; + margin: 0 2px !important; + color: #808080; + border: 1px solid #CCC; + background-color: #FFF; + border-radius: 100%; +} +.ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon:hover { + color: #699AB5; + border-color: #699AB5; +} +.ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon:before { + width: 20px; + text-align: center; + display: inline-block; +} +.ui-pg-table > tbody > tr > .ui-pg-button.ui-state-disabled .ui-icon { + color: #B0B0B0; + background-color: #F7F7F7; + border-color: #DDD; + -moz-transform: scale(0.9); + -webkit-transform: scale(0.9); + -o-transform: scale(0.9); + -ms-transform: scale(0.9); + transform: scale(0.9); +} +.ui-jqgrid-btable input, +.ui-jqgrid-btable textarea, +.ui-jqgrid-btable select { + padding: 2px; + width: auto; + max-width: 100%; + margin-bottom: 0; +} +.ui-jqgrid-btable select { + padding: 1px; + height: 25px; + line-height: 25px; +} +.ui-pg-div .ui-icon { + display: inline-block; + width: 18px; + float: none; + position: static; + text-align: center; + opacity: 0.85; + -webkit-transition: all 0.12s; + -o-transition: all 0.12s; + transition: all 0.12s; + margin: 0 1px; + vertical-align: middle; + cursor: pointer; + font-size: 17px; +} +.ui-pg-div .ui-icon:hover { + -moz-transform: scale(1.2); + -webkit-transform: scale(1.2); + -o-transform: scale(1.2); + -ms-transform: scale(1.2); + transform: scale(1.2); + opacity: 1; + position: static; + margin: 0 1px; +} +.ui-pg-div .ui-icon:before { + font-family: FontAwesome; + display: inline; +} +.ui-jqgrid .ui-icon-pencil { + color: #478FCA; +} +.ui-jqgrid .ui-icon-pencil:before { + content: "\f040"; +} +.ui-jqgrid .ui-icon-trash { + color: #DD5A43; +} +.ui-jqgrid .ui-icon-trash:before { + content: "\f014"; +} +.ui-jqgrid .ui-icon-disk { + color: #69AA46; +} +.ui-jqgrid .ui-icon-disk:before { + content: "\f00c"; +} +.ui-jqgrid .ui-icon-cancel { + color: #DD5A43; +} +.ui-jqgrid .ui-icon-cancel:before { + content: "\f00d"; +} +.ui-jqdialog-content, +.ui-jqdialog .ui-jqdialog-content { + font-size: 13px; + padding: 4px 0 0; +} +.ui-jqdialog-content .formdata, +.ui-jqdialog .ui-jqdialog-content .formdata { + font-size: 13px; + padding: 6px 12px; +} +.ui-jqdialog-content .form-view-data, +.ui-jqdialog .ui-jqdialog-content .form-view-data { + vertical-align: middle; + font-size: 13px; +} +.ui-jqdialog-content[id*="alertcnt_"], +.ui-jqdialog .ui-jqdialog-content[id*="alertcnt_"] { + padding: 8px 11px; +} +.ui-jqdialog-content .CaptionTD { + font-size: 12px; + text-align: right; + color: #666; +} +.ui-jqdialog-content .FormData { + border-bottom: 1px dotted #E8E8E8; +} +.ui-jqdialog-content .FormData:last-child { + border-bottom: none; +} +.ui-jqdialog-content .FormData > td { + padding-top: 6px; + padding-bottom: 6px; +} +.ui-jqdialog-content input.FormElement { + width: auto; +} +.ui-jqdialog-content select.FormElement { + padding: 1px; + height: 25px; + line-height: 25px; + width: auto; +} +.ui-jqdialog-content td.EditButton { + padding: 8px; +} +.EditTable { + background-color: #eff3f8; + border-top: 1px solid #D6E1EA !important; + padding: 8px; +} +.EditTable tr:first-child { + display: none; +} +.EditTable .navButton .fm-button { + float: none !important; + width: auto !important; + margin: 1px 1px 2px !important; + background-color: transparent; + border-radius: 100%; +} +.EditTable .navButton .fm-button:hover { + background-color: transparent; +} +.EditTable .navButton .fm-button:focus { + outline: none; +} +.EditTable .navButton .fm-button .ace-icon { + display: inline-block; + color: #999; + border: 1px solid #AAA; + width: 26px; + height: 26px; + line-height: 26px; + text-align: center; + border-radius: 100%; + background-color: #FFF; +} +.EditTable .navButton .fm-button:hover .ace-icon { + color: #699AB5; + border-color: #699AB5; +} +.EditTable .navButton .fm-button.ui-state-disabled .ace-icon, +.EditTable .navButton .fm-button.ui-state-disabled:hover .ace-icon { + color: #BBB; + border-color: #CCC; + -moz-transform: scale(0.88); + -webkit-transform: scale(0.88); + -o-transform: scale(0.88); + -ms-transform: scale(0.88); + transform: scale(0.88); +} +.FormGrid .EditTable { + background-color: #FFF; + border-top: none !important; + padding: 0; +} +.FormGrid .EditTable tr:first-child { + display: none; +} +.ui-jqgrid .ui-jqgrid-view input, +.ui-jqgrid .ui-jqgrid-view select, +.ui-jqgrid .ui-jqgrid-view textarea, +.ui-jqgrid .ui-jqgrid-view button { + font-size: 13px; +} +.ui-jqdialog-content .searchFilter select { + padding: 1px; + height: 26px; + line-height: 26px; + width: auto; + max-width: 95%; + margin-bottom: 0; +} +.ui-jqdialog-content .searchFilter .input-elm { + margin-bottom: 0; + height: 18px; + line-height: 18px; + width: 95% !important; + padding-left: 1px; + padding-right: 1px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.ui-jqdialog-content .searchFilter table { + margin-left: 4px; +} +.ui-jqdialog-content .searchFilter tr td { + padding: 5px 0; +} +.ui-jqdialog-content .searchFilter .add-group, +.ui-jqdialog-content .searchFilter .add-rule, +.ui-jqdialog-content .searchFilter .delete-group { + margin-left: 4px !important; + font-size: 15px !important; +} +.ui-jqdialog-content .searchFilter .delete-rule { + border: none; + background-color: #FFF; + color: #D15B47; + font-size: 20px; + width: 22px; + line-height: 10px; + padding: 0; + text-shadow: none !important; + display: inline-block; + -webkit-transition: all 0.1s; + -o-transition: all 0.1s; + transition: all 0.1s; + opacity: 0.85; +} +.ui-jqdialog-content .searchFilter .delete-rule:hover { + -moz-transform: scale(1.1); + -webkit-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); + color: #B74635; + opacity: 1; +} +.ui-jqdialog-content .searchFilter .queryresult { + margin-bottom: 11px; +} +.ui-jqdialog-content .searchFilter .queryresult td.query { + padding: 6px 11px; + border: 1px solid #E1E1E1; + background-color: #EEEEEE; +} +.ui-jqdialog-content .searchFilter .queryresult td.query:empty { + display: none; +} +.ui-state-error { + background-color: #f2dede; + border: 1px solid #ebccd1; + color: #a94442; + margin: 4px 4px 8px; + padding: 6px 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + font-size: 13px; +} +.ui-jqdialog .ui-widget-header { + background-image: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); + border-image: none; + border-bottom: 1px solid solid; + color: #669FC7; + min-height: 38px; + position: relative; +} +.ui-jqdialog .ui-widget-header .ui-jqdialog-title { + line-height: 38px; + margin: 0; + padding: 0; + padding-left: 12px; + text-align: left; +} +.widget-header .ui-jqdialog-title { + padding-left: 0 !important; + padding-right: 0 !important; +} +.ui-jqdialog .ui-widget-header .widget-header { + border-bottom: none; +} +.ui-jqdialog .ui-jqdialog-titlebar { + border-bottom: 1px solid #DDD !important; +} +.fm-button { + margin: 0 4px; +} +.fm-button:not(.btn) { + background-color: #abbac3; + border-radius: 0 ; + box-shadow: none; + color: #FFFFFF ; + cursor: pointer; + display: inline-block; + font-size: 13px; + line-height: 28px; + padding: 0 12px 1px; + margin: 0 8px; + position: relative; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + -webkit-transition: all 0.15s; + -o-transition: all 0.15s; + transition: all 0.15s; + vertical-align: middle; +} +.fm-button.ui-state-default:hover { + background-color: #8b9aa3; +} +.ui-jqgrid .ui-jqgrid-htable .ui-search-toolbar th { + height: 30px; + padding-top: 2px; + white-space: normal; +} +.ui-jqgrid .ui-jqgrid-htable .ui-search-toolbar th div { + padding-top: 0; + padding-bottom: 0; + height: 30px; + line-height: 26px; +} +.ui-jqgrid .ui-jqgrid-titlebar-close { + top: 10%; + height: auto; + padding: 0; + margin: 2px 8px 0 0; + text-align: center; + border-radius: 4px; +} +.ui-jqgrid .ui-jqgrid-titlebar-close:hover { + background-color: rgba(255, 255, 255, 0.2); +} +.ui-jqgrid .ui-jqgrid-titlebar-close .ui-icon:before { + display: inline-block; + font-family: FontAwesome; + content: "\f077"; + color: #FFF; +} +.ui-jqgrid .ui-jqgrid-titlebar-close .ui-icon-circle-triangle-s:before { + content: "\f078"; +} +.ui-jqgrid .tree-wrap-ltr { + margin: 0 4px; + float: none; + display: inline; +} +.ui-jqgrid .tree-wrap-rtl { + margin: 2px 4px 0; +} +.ui-jqgrid .ui-subgrid { + border-bottom: 1px solid #E1E1E1; + background-color: #F6FAFF; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid-btable { + background-color: #FFF; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv { + background-color: transparent; + margin-top: 4px; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable .ui-jqgrid-labels { + border-bottom: 1px solid #E1E1E1; + background: #F1F1F1; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th[aria-selected="true"] { + background: #E5E9EF; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th .ui-jqgrid-sortable { + font-size: 12px; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th div { + padding-top: 8px; + padding-bottom: 8px; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th span.ui-jqgrid-resize { + height: 36px !important; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-bdiv { + height: auto !important; + max-height: 150px; + margin-bottom: 4px; + border-top-width: 0; + border-bottom: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-sgcollapsed > a:hover { + text-decoration: none; +} +@media only screen and (max-width: 767px) { + .ui-jqgrid .ui-jqgrid-pager { + height: 90px; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control { + height: 85px; + padding-top: 9px; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td { + vertical-align: top; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center { + width: 0 !important; + position: static; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center > .ui-pg-table { + margin: 36px auto 0; + position: absolute; + right: 0; + left: 0; + text-align: center; + } +} +@media only screen and (max-width: 767px) and (-webkit-min-device-pixel-ratio: 0) { + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center > .ui-pg-table { + width: 300px; + } +} +.dd { + position: relative; + display: block; + margin: 0; + padding: 0; + max-width: 600px; + list-style: none; + line-height: 20px; +} +.dd-list { + display: block; + position: relative; + margin: 0; + padding: 0; + list-style: none; +} +.dd-list .dd-list { + padding-left: 30px; +} +.dd-collapsed .dd-list { + display: none; +} +.dd-item, +.dd-empty, +.dd-placeholder { + display: block; + position: relative; + margin: 0; + padding: 0; + min-height: 20px; + line-height: 20px; +} +.dd-handle, +.dd2-content { + display: block; + min-height: 38px; + margin: 5px 0; + padding: 8px 12px; + background: #F8FAFF; + border: 1px solid #DAE2EA; + color: #7C9EB2; + text-decoration: none; + font-weight: bold; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.dd-handle:hover, +.dd2-content:hover { + color: #438EB9; + background: #F4F6F7; + border-color: #DCE2E8; +} +.dd-handle[class*="btn-"], +.dd2-content[class*="btn-"] { + color: #FFF; + border: none; + padding: 9px 12px; +} +.dd-handle[class*="btn-"]:hover, +.dd2-content[class*="btn-"]:hover { + opacity: 0.85; + color: #FFF; +} +.dd2-handle + .dd2-content, +.dd2-handle + .dd2-content[class*="btn-"] { + padding-left: 44px; +} +.dd-handle[class*="btn-"]:hover, +.dd2-content[class*="btn-"] .dd2-handle[class*="btn-"]:hover + .dd2-content[class*="btn-"] { + color: #FFF; +} +.dd-item > button:hover ~ .dd-handle, +.dd-item > button:hover ~ .dd2-content { + color: #438EB9; + background: #F4F6F7; + border-color: #DCE2E8; +} +.dd-item > button:hover ~ .dd-handle[class*="btn-"], +.dd-item > button:hover ~ .dd2-content[class*="btn-"] { + opacity: 0.85; + color: #FFF; +} +.dd2-handle:hover ~ .dd2-content { + color: #438EB9; + background: #F4F6F7; + border-color: #DCE2E8; +} +.dd2-handle:hover ~ .dd2-content[class*="btn-"] { + opacity: 0.85; + color: #FFF; +} +.dd2-item.dd-item > button { + margin-left: 34px; +} +.dd-item > button { + display: block; + position: relative; + z-index: 1; + cursor: pointer; + float: left; + width: 25px; + height: 20px; + margin: 5px 1px 5px 5px; + padding: 0; + text-indent: 100%; + white-space: nowrap; + overflow: hidden; + border: 0; + background: transparent; + font-size: 12px; + line-height: 1; + text-align: center; + font-weight: bold; + top: 4px; + left: 1px; + color: #707070; +} +.dd-item > button:before { + font-family: FontAwesome; + content: '\f067'; + display: block; + position: absolute; + width: 100%; + text-align: center; + text-indent: 0; + font-weight: normal; + font-size: 14px; +} +.dd-item > button[data-action="collapse"]:before { + content: '\f068'; +} +.dd-item > button:hover { + color: #707070; +} +.dd-item.dd-colored > button, +.dd-item.dd-colored > button:hover { + color: #EEE; +} +.dd-placeholder, +.dd-empty { + margin: 5px 0; + padding: 0; + min-height: 30px; + background: #F0F9FF; + border: 2px dashed #BED2DB; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.dd-empty { + border-color: #AAA; + border-style: solid; + background-color: #e5e5e5; +} +.dd-dragel { + position: absolute; + pointer-events: none; + z-index: 999; + opacity: 0.8; +} +.dd-dragel > li > .dd-handle { + color: #4B92BE; + background: #F1F5FA; + border-color: #D6E1EA; + border-left: 2px solid #777; + position: relative; +} +.dd-dragel > li > .dd-handle[class*="btn-"] { + color: #FFF; +} +.dd-dragel > .dd-item > .dd-handle { + margin-top: 0; +} +.dd-list > li[class*="item-"] { + border-width: 0; + padding: 0; +} +.dd-list > li[class*="item-"] > .dd-handle { + border-left: 2px solid; + border-left-color: inherit; +} +.dd-list > li > .dd-handle .sticker { + position: absolute; + right: 0; + top: 0; +} +.dd2-handle, +.dd-dragel > li > .dd2-handle { + left: 0; + top: 0; + width: 36px; + margin: 0; + border-width: 1px 1px 0 0; + text-align: center; + padding: 0 !important; + line-height: 38px; + height: 38px; + background: #EBEDF2; + border: 1px solid #DEE4EA; + cursor: pointer; + overflow: hidden; + position: absolute; + z-index: 1; +} +.dd2-handle:hover, +.dd-dragel > li > .dd2-handle { + background: #E3E8ED; +} +.dd2-content[class*="btn-"] { + text-shadow: none !important; +} +.dd2-handle[class*="btn-"] { + text-shadow: none !important; + background: rgba(0, 0, 0, 0.1) !important; + border-right: 1px solid #EEE; +} +.dd2-handle[class*="btn-"]:hover { + background: rgba(0, 0, 0, 0.08) !important; +} +.dd-dragel .dd2-handle[class*="btn-"] { + border-color: transparent; + border-right-color: #EEE; +} +.dd2-handle.btn-yellow { + text-shadow: none !important; + background: rgba(0, 0, 0, 0.05) !important; + border-right: 1px solid #FFF; +} +.dd2-handle.btn-yellow:hover { + background: rgba(0, 0, 0, 0.08) !important; +} +.dd-dragel .dd2-handle.btn-yellow { + border-color: transparent; + border-right-color: #FFF; +} +.dd-item > .dd2-handle .drag-icon { + display: none; +} +.dd-dragel > .dd-item > .dd2-handle .drag-icon { + display: inline; +} +.dd-dragel > .dd-item > .dd2-handle .normal-icon { + display: none; +} +.dropzone { + border-radius: 0; + border: 1px solid rgba(0, 0, 0, 0.06); +} +.dropzone .dz-default.dz-message { + background-image: none; + font-size: 24px; + text-align: center; + line-height: 32px; + left: 0; + width: 100%; + margin-left: auto; +} +.dropzone .dz-default.dz-message span { + display: inline; + color: #555; +} +.dropzone .dz-default.dz-message span .upload-icon { + opacity: 0.7; + filter: alpha(opacity=70); + margin-top: 8px; + cursor: pointer; +} +.dropzone .dz-default.dz-message span .upload-icon:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark, +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark { + background-image: none; + background-color: rgba(255, 255, 255, 0.8); + border-radius: 100%; + text-align: center; + line-height: 35px; +} +.dropzone .dz-preview .dz-error-mark:before, +.dropzone-previews .dz-preview .dz-error-mark:before { + font-family: FontAwesome; + font-size: 30px; + color: #DB6262; + content: "\f00d"; +} +.dropzone .dz-preview .dz-success-mark:before, +.dropzone-previews .dz-preview .dz-success-mark:before { + font-family: FontAwesome; + font-size: 30px; + color: #6DA552; + content: "\f00c"; +} +.dropzone a.dz-remove, +.dropzone-previews a.dz-remove { + border: none; + border-radius: 0; + color: #FFF; + background: #D15B47; + cursor: pointer; +} +.dropzone a.dz-remove:hover, +.dropzone-previews a.dz-remove:hover { + color: #FFF; + background: #B74635; +} +.dropzone .progress, +.dropzone-previews .progress { + margin-bottom: 0; +} +.dropzone .dz-preview.dz-success .progress, +.dropzone-previews .dz-preview.dz-success .progress, +.dropzone .dz-preview.dz-error .progress, +.dropzone-previews .dz-preview.dz-error .progress { + display: none; +} +input.typeahead, +input.tt-query, +input.tt-hint { + min-width: 175px; + font-size: 16px; + line-height: 24px; + border: 1px solid #CCC; + border-radius: 0; + outline: none; +} +input.tt-hint, +.form-group input.tt-hint { + background-color: #FFF !important; + color: #B0B0B0 !important; +} +.tt-dropdown-menu { + text-align: left; + position: absolute; + left: 0 !important; + right: 0 !important; + min-width: 175px; + margin-top: 2px; + padding: 8px 0; + background-color: #FFF; + border: 1px solid #D0D0D0; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.tt-suggestion { + padding: 3px 12px 4px; + font-size: 16px; + line-height: 24px; +} +.tt-suggestion.tt-cursor { + color: #FFF; + background-color: #4F99C6; + cursor: pointer; +} +.tt-suggestion p { + margin: 0; +} +input.typeahead.scrollable ~ .tt-dropdown-menu { + max-height: 200px; + overflow-y: auto; +} +.btn-group > .btn.moveall:first-child, +.btn-group > .btn.remove:first-child { + margin: 0; +} +.btn-group > .btn.moveall:first-child + .btn.move, +.btn-group > .btn.remove:first-child + .btn.removeall { + margin: 0; +} +.bootstrap-duallistbox-container .info { + font-size: 12px; +} +.bootstrap-duallistbox-container .clear1, +.bootstrap-duallistbox-container .clear2 { + font-size: 12px; +} +.multiselect-container > li > a { + padding: 0; +} +.multiselect-container > li > a > label { + padding: 7px 10px 7px 20px; +} +.cancel-on-png, +.cancel-off-png, +.star-on-png, +.star-off-png, +.star-half-png { + font-size: 2em; +} +.cancel-on-png, +.cancel-off-png, +.star-on-png, +.star-off-png, +.star-half-png { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-family: "FontAwesome"; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + speak: none; + text-transform: none; + color: #777777; +} +.cancel-on-png { + color: #dd5a43; +} +.cancel-on-png:before { + content: "\f057"; +} +.cancel-off-png { + color: #e08374; +} +.cancel-off-png:before { + content: "\f05c"; +} +.star-on-png { + color: #feb902; +} +.star-on-png:before { + content: "\f005"; +} +.star-off-png { + color: #777777; +} +.star-off-png:before { + content: "\f006"; +} +.star-half-png { + color: #feb902; +} +.star-half-png:before { + content: "\f123"; +} +/* custom animated icons */ +.icon-animated-bell { + display: inline-block; + -moz-animation: ringing 2.0s 5 ease 1.0s; + -webkit-animation: ringing 2.0s 5 ease 1.0s; + -o-animation: ringing 2.0s 5 ease 1.0s; + -ms-animation: ringing 2.0s 5 ease 1.0s; + animation: ringing 2.0s 5 ease 1.0s; + -moz-transform-origin: 50% 0%; + -webkit-transform-origin: 50% 0%; + -o-transform-origin: 50% 0%; + -ms-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@-moz-keyframes ringing { + 0% { + -moz-transform: rotate(-15deg); + } + 2% { + -moz-transform: rotate(15deg); + } + 4% { + -moz-transform: rotate(-18deg); + } + 6% { + -moz-transform: rotate(18deg); + } + 8% { + -moz-transform: rotate(-22deg); + } + 10% { + -moz-transform: rotate(22deg); + } + 12% { + -moz-transform: rotate(-18deg); + } + 14% { + -moz-transform: rotate(18deg); + } + 16% { + -moz-transform: rotate(-12deg); + } + 18% { + -moz-transform: rotate(12deg); + } + 20% { + -moz-transform: rotate(0deg); + } +} +@-webkit-keyframes ringing { + 0% { + -webkit-transform: rotate(-15deg); + } + 2% { + -webkit-transform: rotate(15deg); + } + 4% { + -webkit-transform: rotate(-18deg); + } + 6% { + -webkit-transform: rotate(18deg); + } + 8% { + -webkit-transform: rotate(-22deg); + } + 10% { + -webkit-transform: rotate(22deg); + } + 12% { + -webkit-transform: rotate(-18deg); + } + 14% { + -webkit-transform: rotate(18deg); + } + 16% { + -webkit-transform: rotate(-12deg); + } + 18% { + -webkit-transform: rotate(12deg); + } + 20% { + -webkit-transform: rotate(0deg); + } +} +@-ms-keyframes ringing { + 0% { + -ms-transform: rotate(-15deg); + } + 2% { + -ms-transform: rotate(15deg); + } + 4% { + -ms-transform: rotate(-18deg); + } + 6% { + -ms-transform: rotate(18deg); + } + 8% { + -ms-transform: rotate(-22deg); + } + 10% { + -ms-transform: rotate(22deg); + } + 12% { + -ms-transform: rotate(-18deg); + } + 14% { + -ms-transform: rotate(18deg); + } + 16% { + -ms-transform: rotate(-12deg); + } + 18% { + -ms-transform: rotate(12deg); + } + 20% { + -ms-transform: rotate(0deg); + } +} +@keyframes ringing { + 0% { + transform: rotate(-15deg); + } + 2% { + transform: rotate(15deg); + } + 4% { + transform: rotate(-18deg); + } + 6% { + transform: rotate(18deg); + } + 8% { + transform: rotate(-22deg); + } + 10% { + transform: rotate(22deg); + } + 12% { + transform: rotate(-18deg); + } + 14% { + transform: rotate(18deg); + } + 16% { + transform: rotate(-12deg); + } + 18% { + transform: rotate(12deg); + } + 20% { + transform: rotate(0deg); + } +} +.icon-animated-vertical { + display: inline-block; + -moz-animation: vertical 2.0s 5 ease 2.0s; + -webkit-animation: vertical 2.0s 5 ease 2.0s; + -o-animation: vertical 2.0s 5 ease 2.0s; + -ms-animation: vertical 2.0s 5 ease 2.0s; + animation: vertical 2.0s 5 ease 2.0s; +} +@-moz-keyframes vertical { + 0% { + -moz-transform: translate(0, -3px); + } + 4% { + -moz-transform: translate(0, 3px); + } + 8% { + -moz-transform: translate(0, -3px); + } + 12% { + -moz-transform: translate(0, 3px); + } + 16% { + -moz-transform: translate(0, -3px); + } + 20% { + -moz-transform: translate(0, 3px); + } + 22% { + -moz-transform: translate(0, 0); + } +} +@-webkit-keyframes vertical { + 0% { + -webkit-transform: translate(0, -3px); + } + 4% { + -webkit-transform: translate(0, 3px); + } + 8% { + -webkit-transform: translate(0, -3px); + } + 12% { + -webkit-transform: translate(0, 3px); + } + 16% { + -webkit-transform: translate(0, -3px); + } + 20% { + -webkit-transform: translate(0, 3px); + } + 22% { + -webkit-transform: translate(0, 0); + } +} +@-ms-keyframes vertical { + 0% { + -ms-transform: translate(0, -3px); + } + 4% { + -ms-transform: translate(0, 3px); + } + 8% { + -ms-transform: translate(0, -3px); + } + 12% { + -ms-transform: translate(0, 3px); + } + 16% { + -ms-transform: translate(0, -3px); + } + 20% { + -ms-transform: translate(0, 3px); + } + 22% { + -ms-transform: translate(0, 0); + } +} +@keyframes vertical { + 0% { + transform: translate(0, -3px); + } + 4% { + transform: translate(0, 3px); + } + 8% { + transform: translate(0, -3px); + } + 12% { + transform: translate(0, 3px); + } + 16% { + transform: translate(0, -3px); + } + 20% { + transform: translate(0, 3px); + } + 22% { + transform: translate(0, 0); + } +} +.icon-animated-hand-pointer { + display: inline-block; + -moz-animation: hand-pointer 2.0s 4 ease 2.0s; + -webkit-animation: hand-pointer 2.0s 4 ease 2.0s; + -o-animation: hand-pointer 2.0s 4 ease 2.0s; + -ms-animation: hand-pointer 2.0s 4 ease 2.0s; + animation: hand-pointer 2.0s 4 ease 2.0s; +} +@-moz-keyframes hand-pointer { + 0% { + -moz-transform: translate(0, 0); + } + 6% { + -moz-transform: translate(5px, 0); + } + 12% { + -moz-transform: translate(0, 0); + } + 18% { + -moz-transform: translate(5px, 0); + } + 24% { + -moz-transform: translate(0, 0); + } + 30% { + -moz-transform: translate(5px, 0); + } + 36% { + -moz-transform: translate(0, 0); + } +} +.icon-animated-wrench { + display: inline-block; + -moz-animation: wrenching 2.5s 4 ease; + -webkit-animation: wrenching 2.5s 4 ease; + -o-animation: wrenching 2.5s 4 ease; + -ms-animation: wrenching 2.5s 4 ease; + animation: wrenching 2.5s 4 ease; + -moz-transform-origin: 90% 35%; + -webkit-transform-origin: 90% 35%; + -o-transform-origin: 90% 35%; + -ms-transform-origin: 90% 35%; + transform-origin: 90% 35%; +} +@-moz-keyframes wrenching { + 0% { + -moz-transform: rotate(-12deg); + } + 8% { + -moz-transform: rotate(12deg); + } + 10% { + -moz-transform: rotate(24deg); + } + 18% { + -moz-transform: rotate(-24deg); + } + 20% { + -moz-transform: rotate(-24deg); + } + 28% { + -moz-transform: rotate(24deg); + } + 30% { + -moz-transform: rotate(24deg); + } + 38% { + -moz-transform: rotate(-24deg); + } + 40% { + -moz-transform: rotate(-24deg); + } + 48% { + -moz-transform: rotate(24deg); + } + 50% { + -moz-transform: rotate(24deg); + } + 58% { + -moz-transform: rotate(-24deg); + } + 60% { + -moz-transform: rotate(-24deg); + } + 68% { + -moz-transform: rotate(24deg); + } + 75% { + -moz-transform: rotate(0deg); + } +} +@-webkit-keyframes wrenching { + 0% { + -webkit-transform: rotate(-12deg); + } + 8% { + -webkit-transform: rotate(12deg); + } + 10% { + -webkit-transform: rotate(24deg); + } + 18% { + -webkit-transform: rotate(-24deg); + } + 20% { + -webkit-transform: rotate(-24deg); + } + 28% { + -webkit-transform: rotate(24deg); + } + 30% { + -webkit-transform: rotate(24deg); + } + 38% { + -webkit-transform: rotate(-24deg); + } + 40% { + -webkit-transform: rotate(-24deg); + } + 48% { + -webkit-transform: rotate(24deg); + } + 50% { + -webkit-transform: rotate(24deg); + } + 58% { + -webkit-transform: rotate(-24deg); + } + 60% { + -webkit-transform: rotate(-24deg); + } + 68% { + -webkit-transform: rotate(24deg); + } + 75% { + -webkit-transform: rotate(0deg); + } +} +@-o-keyframes wrenching { + 0% { + -o-transform: rotate(-12deg); + } + 8% { + -o-transform: rotate(12deg); + } + 10% { + -o-transform: rotate(24deg); + } + 18% { + -o-transform: rotate(-24deg); + } + 20% { + -o-transform: rotate(-24deg); + } + 28% { + -o-transform: rotate(24deg); + } + 30% { + -o-transform: rotate(24deg); + } + 38% { + -o-transform: rotate(-24deg); + } + 40% { + -o-transform: rotate(-24deg); + } + 48% { + -o-transform: rotate(24deg); + } + 50% { + -o-transform: rotate(24deg); + } + 58% { + -o-transform: rotate(-24deg); + } + 60% { + -o-transform: rotate(-24deg); + } + 68% { + -o-transform: rotate(24deg); + } + 75% { + -o-transform: rotate(0deg); + } +} +@-ms-keyframes wrenching { + 0% { + -ms-transform: rotate(-12deg); + } + 8% { + -ms-transform: rotate(12deg); + } + 10% { + -ms-transform: rotate(24deg); + } + 18% { + -ms-transform: rotate(-24deg); + } + 20% { + -ms-transform: rotate(-24deg); + } + 28% { + -ms-transform: rotate(24deg); + } + 30% { + -ms-transform: rotate(24deg); + } + 38% { + -ms-transform: rotate(-24deg); + } + 40% { + -ms-transform: rotate(-24deg); + } + 48% { + -ms-transform: rotate(24deg); + } + 50% { + -ms-transform: rotate(24deg); + } + 58% { + -ms-transform: rotate(-24deg); + } + 60% { + -ms-transform: rotate(-24deg); + } + 68% { + -ms-transform: rotate(24deg); + } + 75% { + -ms-transform: rotate(0deg); + } +} +@keyframes wrenching { + 0% { + transform: rotate(-12deg); + } + 8% { + transform: rotate(12deg); + } + 10% { + transform: rotate(24deg); + } + 18% { + transform: rotate(-24deg); + } + 20% { + transform: rotate(-24deg); + } + 28% { + transform: rotate(24deg); + } + 30% { + transform: rotate(24deg); + } + 38% { + transform: rotate(-24deg); + } + 40% { + transform: rotate(-24deg); + } + 48% { + transform: rotate(24deg); + } + 50% { + transform: rotate(24deg); + } + 58% { + transform: rotate(-24deg); + } + 60% { + transform: rotate(-24deg); + } + 68% { + transform: rotate(24deg); + } + 75% { + transform: rotate(0deg); + } +} +@-moz-keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@-webkit-keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@-ms-keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@-moz-keyframes pulsating { + 0% { + -moz-transform: scale(1); + } + 5% { + -moz-transform: scale(0.75); + } + 10% { + -moz-transform: scale(1); + } + 15% { + -moz-transform: scale(1.25); + } + 20% { + -moz-transform: scale(1); + } + 25% { + -moz-transform: scale(0.75); + } + 30% { + -moz-transform: scale(1); + } + 35% { + -moz-transform: scale(1.25); + } + 40% { + -moz-transform: scale(1); + } +} +@-webkit-keyframes pulsating { + 0% { + -webkit-transform: scale(1); + } + 5% { + -webkit-transform: scale(0.75); + } + 10% { + -webkit-transform: scale(1); + } + 15% { + -webkit-transform: scale(1.25); + } + 20% { + -webkit-transform: scale(1); + } + 25% { + -webkit-transform: scale(0.75); + } + 30% { + -webkit-transform: scale(1); + } + 35% { + -webkit-transform: scale(1.25); + } + 40% { + -webkit-transform: scale(1); + } +} +@-ms-keyframes pulsating { + 0% { + -ms-transform: scale(1); + } + 5% { + -ms-transform: scale(0.75); + } + 10% { + -ms-transform: scale(1); + } + 15% { + -ms-transform: scale(1.25); + } + 20% { + -ms-transform: scale(1); + } + 25% { + -ms-transform: scale(0.75); + } + 30% { + -ms-transform: scale(1); + } + 35% { + -ms-transform: scale(1.25); + } + 40% { + -ms-transform: scale(1); + } +} +@keyframes pulsating { + 0% { + transform: scale(1); + } + 5% { + transform: scale(0.75); + } + 10% { + transform: scale(1); + } + 15% { + transform: scale(1.25); + } + 20% { + transform: scale(1); + } + 25% { + transform: scale(0.75); + } + 30% { + transform: scale(1); + } + 35% { + transform: scale(1.25); + } + 40% { + transform: scale(1); + } +} +.btn-scroll-up { + border-width: 0; + position: fixed; + right: 2px; + z-index: 99; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + opacity: 0; + filter: alpha(opacity=0); + bottom: -24px; + visibility: hidden; +} +.btn-scroll-up.display { + opacity: 0.7; + filter: alpha(opacity=70); + bottom: 2px; + visibility: visible; +} +.btn-scroll-up:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.btn-scroll-up:focus { + outline: none; +} +@media (min-width: 768px) { + .main-container.container > .btn-scroll-up { + right: auto; + margin-left: 714px; + } +} +@media (min-width: 992px) { + .main-container.container > .btn-scroll-up { + right: auto; + margin-left: 934px; + } +} +@media (min-width: 1200px) { + .main-container.container > .btn-scroll-up { + right: auto; + margin-left: 1134px; + } +} +.ace-settings-container { + position: absolute; + right: 0; + top: auto; + z-index: 12; +} +.btn.btn-app.ace-settings-btn { + float: left; + display: block; + text-align: center; + border-radius: 6px 0 0 6px; + opacity: 0.55; + vertical-align: top; + margin: 0; +} +.btn.btn-app.ace-settings-btn:hover, +.btn.btn-app.ace-settings-btn.open { + opacity: 1; +} +.btn.btn-app.ace-settings-btn.btn-xs { + width: 42px; +} +.ace-settings-box { + display: block; + float: left; + max-width: 0; + max-height: 0; + overflow: hidden; + padding: 0; + -moz-transform: translate(0,0); + -webkit-transform: translate(0,0); + -o-transform: translate(0,0); + -ms-transform: translate(0,0); + transform: translate(0,0); + background-color: #FFF; + border: 0 solid #ffb34b; + -webkit-transition: max-width 0.25s linear 0s, max-height 0s linear 0.25s, padding 0s linear 0.25s, border-width 0s linear 0.25s; + -o-transition: max-width 0.25s linear 0s, max-height 0s linear 0.25s, padding 0s linear 0.25s, border-width 0s linear 0.25s; + transition: max-width 0.25s linear 0s, max-height 0s linear 0.25s, padding 0s linear 0.25s, border-width 0s linear 0.25s; +} +.ace-settings-box.open { + max-width: 320px; + max-height: 1000px; + padding: 0 14px; + border-width: 2px; + -webkit-transition-delay: 0s; + -moz-transition-delay: 0s; + -o-transition-delay: 0s; + transition-delay: 0s; +} +.ace-settings-box.open .ace-settings-item { + z-index: auto; + min-width: 140px; +} +.ace-settings-box .ace-settings-item { + margin: 6px 0; + color: #444; + max-height: 24px; + position: relative; + z-index: -1; + white-space: nowrap; +} +.ace-settings-box .ace-settings-item > label.lbl { + font-size: 13px; +} +@media (max-width: 480px) { + .ace-settings-container { + text-align: right; + } + .ace-settings-box { + float: none !important; + text-align: left; + } + .btn.ace-settings-btn { + float: none !important; + display: inline-block; + } +} +@media (max-width: 320px) { + .ace-settings-box > .clearfix > .pull-left, + .ace-settings-box > .clearfix > .pull-right { + float: none !important; + } +} +.grid2, +.grid3, +.grid4 { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: block; + margin: 0 1%; + padding: 0 2%; + float: left; + border-left: 1px solid #E3E3E3; +} +.grid2:first-child, +.grid3:first-child, +.grid4:first-child { + border-left: none; +} +.grid2 { + width: 48%; +} +.grid3 { + width: 31.33%; +} +.grid4 { + width: 23%; + padding: 0 1%; +} +.draggable-placeholder { + border: 2px dashed #D9D9D9 !important; + background-color: #F7F7F7 !important; +} +.easyPieChart, +.easy-pie-chart { + position: relative; + text-align: center; +} +.easyPieChart canvas, +.easy-pie-chart canvas { + position: absolute; + top: 0; + left: 0; +} +.knob-container { + direction: ltr; + text-align: left; +} +.tags { + display: inline-block; + padding: 4px 6px; + color: #777777; + vertical-align: middle; + background-color: #FFF; + border: 1px solid #d5d5d5; + width: 206px; +} +.tags:hover { + border-color: #b5b5b5; +} +.tags-hover, +.tags-hover:hover { + border-color: #f59942; + outline: 0; +} +.tags[class*="span"] { + float: none; + margin-left: 0; +} +.tags input[type="text"], +.tags input[type="text"]:focus { + border: none; + display: inline; + outline: 0; + margin: 0; + padding: 0; + line-height: 18px; + -webkit-box-shadow: none; + box-shadow: none; + width: 100%; +} +.tags .tag { + display: inline-block; + position: relative; + font-size: 13px; + font-weight: normal; + vertical-align: baseline; + white-space: nowrap; + background-color: #91b8d0; + color: #FFF; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); + padding: 4px 22px 5px 9px; + margin-bottom: 3px; + margin-right: 3px; + -webkit-transition: all 0.2s; + -o-transition: all 0.2s; + transition: all 0.2s; + /** + &:nth-child(5n+1) { + background-color:#48A2E0; + } + &:nth-child(5n+2) { + background-color:#34C896; + } + &:nth-child(5n+3) { + background-color:#B57BB3; + } + &:nth-child(5n+4) { + background-color:#CC7DA8; + } + &:nth-child(5n+5) { + background-color:#666; + } +*/ +} +.tags .tag:empty { + display: none; +} +.tags .tag-important { + background-color: #d15b47; +} +.tags .tag-warning { + background-color: #ffb752; +} +.tags .tag-success { + background-color: #87b87f; +} +.tags .tag-info { + background-color: #6fb3e0; +} +.tags .tag-inverse { + background-color: #555555; +} +.tags .tag .close { + font-size: 15px; + line-height: 20px; + opacity: 1; + filter: alpha(opacity=100); + color: #FFF; + text-shadow: none; + float: none; + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 18px; + text-align: center; +} +.tags .tag .close:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.page-content > .row .col-xs-12, +.page-content > .row .col-sm-12, +.page-content > .row .col-md-12, +.page-content > .row .col-lg-12 { + float: left; + max-width: 100%; +} +.col-xs-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; +} +@media (min-width: 768px) { + .col-sm-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; + } +} +@media (min-width: 992px) { + .col-md-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; + } +} +@media (min-width: 1200px) { + .col-lg-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; + } +} +.jqstooltip, +.legendColorBox div { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.legendLabel { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 22px; + padding-left: 2px; + font-size: 10px; +} +@media only screen and (max-width: 991px) { + body { + overflow-x: hidden; + } +} +.navbar-fixed-top + .main-container { + padding-top: 45px; +} +@media (max-width: 479px) { + .navbar-fixed-top + .main-container { + padding-top: 90px; + } + .navbar-fixed-top.navbar-collapse + .main-container { + padding-top: 45px; + } +} +@media only screen and (max-width: 360px) { + .grid2, + .grid3, + .grid4 { + float: none; + display: block; + width: 96%; + border-left-width: 0; + position: relative; + margin-bottom: 11px; + border-bottom: 1px solid #E3E3E3; + padding-bottom: 4px; + } + .grid2 > [class*="pull-"], + .grid3 > [class*="pull-"], + .grid4 > [class*="pull-"] { + float: none !important; + display: inline-block; + position: absolute; + right: 11px; + top: 0; + margin-top: 0; + } + .grid2:last-child, + .grid3:last-child, + .grid4:last-child { + border-bottom-width: 0; + } +} +@media only screen and (max-width: 480px) { + .hidden-480 { + display: none !important; + } +} +@media only screen and (max-width: 320px) { + .hidden-320 { + display: none !important; + } +} +.no-skin { + /** + .nav-list > li.disabled.active:after { + border-color: #999; + } + .nav-list li.disabled li.active > a:after, + .nav-list li.active.disabled > a:after { + -moz-border-right-colors: #999 !important; + border-right-color: #999 !important; + } + */ +} +.no-skin .navbar .navbar-toggle { + background-color: #75B3D7; +} +.no-skin .navbar .navbar-toggle:focus { + background-color: #75B3D7; + border-color: transparent; +} +.no-skin .navbar .navbar-toggle:hover { + background-color: #61a8d1; + border-color: rgba(255, 255, 255, 0.1); +} +.no-skin .navbar .navbar-toggle.display, +.no-skin .navbar .navbar-toggle[data-toggle=collapse]:not(.collapsed) { + background-color: #4d9dcc; + box-shadow: inset 1px 1px 2px 0 rgba(0, 0, 0, 0.25); + border-color: rgba(255, 255, 255, 0.35); +} +.no-skin .sidebar { + background-color: #f2f2f2; + border-style: solid; + border-color: #cccccc; + border-width: 0 1px 0 0; +} +.no-skin .nav-list .open > a, +.no-skin .nav-list .open > a:hover, +.no-skin .nav-list .open > a:focus { + background-color: #fafafa; +} +.no-skin .nav-list > li { + border-color: #e5e5e5; +} +.no-skin .nav-list > li > a { + background-color: #f8f8f8; + color: #585858; +} +.no-skin .nav-list > li > a:focus { + background-color: #f8f8f8; + color: #1963aa; +} +.no-skin .nav-list > li:hover > a { + background-color: #ffffff; + color: #266cad; +} +.no-skin .nav-list > li.open > a { + background-color: #fafafa; + color: #1963aa; +} +.no-skin .nav-list > li.active > a { + font-weight: bold; + color: #2b7dbc; +} +.no-skin .nav-list > li.active > a, +.no-skin .nav-list > li.active > a:hover, +.no-skin .nav-list > li.active > a:focus { + background-color: #ffffff; +} +.no-skin .nav-list > li .submenu { + background-color: #ffffff; + border-color: #e5e5e5; +} +.no-skin .nav-list > li .submenu > li > a { + border-top-color: #e4e4e4; + background-color: #ffffff; + color: #616161; +} +.no-skin .nav-list > li .submenu > li > a:hover { + color: #4b88b7; + background-color: #f1f5f9; +} +.no-skin .nav-list > li .submenu > li.active > a { + color: #2b7dbc; +} +.no-skin .nav-list > li .submenu > li.active > a > .menu-icon { + color: #c86139; +} +.no-skin .nav-list > li .submenu > li.active.open > a > .menu-icon { + color: inherit; +} +@media only screen and (min-width: 992px) { + .no-skin .nav-list > li .submenu > li.active.hover > a.dropdown-toggle > .menu-icon { + color: inherit; + } +} +.no-skin .nav-list > li .submenu > li.active:not(.open) > a { + background-color: #f5f7fa; +} +.no-skin .nav-list > li .submenu > li.active:not(.open) > a:hover { + background-color: #f1f5f9; +} +.no-skin .nav-list > li > .submenu .open > a, +.no-skin .nav-list > li > .submenu .open > a:hover, +.no-skin .nav-list > li > .submenu .open > a:focus { + border-color: #e4e4e4; +} +.no-skin .nav-list > li > .submenu li > .submenu > li a { + color: #757575; +} +.no-skin .nav-list > li > .submenu li > .submenu > li a:hover { + color: #4b88b7; + background-color: #f1f5f9; +} +.no-skin .nav-list > li > .submenu li.open > a { + color: #4b88b7; +} +.no-skin .nav-list > li > .submenu li > .submenu li.open > a, +.no-skin .nav-list > li > .submenu li > .submenu li.active > a { + color: #4b88b7; +} +.no-skin .nav-list > li > .submenu:before, +.no-skin .nav-list > li > .submenu > li:before { + border-color: #9dbdd6; +} +.no-skin .nav-list > li.active > .submenu:before, +.no-skin .nav-list > li.active > .submenu > li:before { + border-color: #8eb3d0; +} +.no-skin .sidebar-toggle { + background-color: #f3f3f3; + border-color: #e0e0e0; +} +.no-skin .sidebar-toggle > .ace-icon { + border-color: #bbbbbb; + color: #aaaaaa; + background-color: #ffffff; +} +.no-skin .sidebar-shortcuts { + background-color: #fafafa; +} +.no-skin .sidebar-fixed .sidebar-shortcuts { + border-color: #dddddd; +} +.no-skin .sidebar-shortcuts-mini { + background-color: #ffffff; +} +.no-skin .nav-list li > .arrow:before { + border-right-color: #B8B8B8; + -moz-border-right-colors: #B8B8B8; + border-width: 10px 10px 10px 0; + left: -11px; +} +.no-skin .nav-list li > .arrow:after { + border-right-color: #ffffff; + -moz-border-right-colors: #ffffff; + border-width: 10px 10px 10px 0; + left: -10px; +} +.no-skin .nav-list > li.pull_up > .arrow:after { + border-right-color: #ffffff !important; + -moz-border-right-colors: #ffffff !important; + border-width: 10px 10px 10px 0 !important; + left: -10px !important; +} +.no-skin .nav-list > li.pull_up > .arrow:before { + border-width: 10px 10px 10px 0 !important; + left: -11px !important; +} +.no-skin .nav-list li.active > a:after { + border-right-color: #2b7dbc; + -moz-border-right-colors: #2b7dbc; +} +.no-skin .nav-list > li.active:after { + display: block; + content: ""; + position: absolute; + right: -2px; + top: -1px; + bottom: 0; + z-index: 1; + border: 2px solid; + border-width: 0 2px 0 0; + border-color: #2b7dbc; +} +.no-skin .sidebar-scroll .nav-list > li.active:after { + right: 0; +} +@media only screen and (max-width: 991px) { + .no-skin .sidebar.responsive .nav-list > li.active.open > a:after, + .no-skin .sidebar.responsive-max .nav-list > li.active.open > a:after { + display: block; + } + .no-skin .sidebar.responsive .nav-list li li.active > a:after, + .no-skin .sidebar.responsive-max .nav-list li li.active > a:after { + display: none; + } + .no-skin .sidebar.responsive .nav-list > li.active:after, + .no-skin .sidebar.responsive-max .nav-list > li.active:after { + height: 41px; + } +} +.no-skin .sidebar.menu-min .nav-list > li > a > .menu-text { + background-color: #f5f5f5; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; +} +.no-skin .sidebar.menu-min .nav-list > li > a.dropdown-toggle > .menu-text { + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); +} +.no-skin .sidebar.menu-min .nav-list > li.active > .submenu { + border-left-color: #83b6d1; +} +.no-skin .sidebar.menu-min .nav-list > li > .submenu { + background-color: #ffffff; + border: 1px solid #cccccc; + border-top-color: #e6e6e6; + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); +} +.no-skin .sidebar.menu-min .nav-list > li > .arrow:after { + border-right-color: #f5f5f5; + -moz-border-right-colors: #f5f5f5; + border-width: 8px 8px 8px 0; + left: -8px; +} +.no-skin .sidebar.menu-min .nav-list > li > .arrow:before { + border-width: 8px 8px 8px 0; + left: -9px; +} +.no-skin .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: #5a9ec2; + -moz-border-right-colors: #5a9ec2; +} +.no-skin .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #83b6d1; +} +.no-skin .sidebar.menu-min .sidebar-shortcuts-large { + background-color: #ffffff; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; +} +.no-skin .sidebar.menu-min .sidebar-toggle > .ace-icon { + border-color: #b1b1b1; +} +@media (max-width: 991px) { + .no-skin .sidebar.responsive-min .nav-list > li > a > .menu-text { + background-color: #f5f5f5; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; + } + .no-skin .sidebar.responsive-min .nav-list > li > a.dropdown-toggle > .menu-text { + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + } + .no-skin .sidebar.responsive-min .nav-list > li.active > .submenu { + border-left-color: #83b6d1; + } + .no-skin .sidebar.responsive-min .nav-list > li > .submenu { + background-color: #ffffff; + border: 1px solid #cccccc; + border-top-color: #e6e6e6; + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + } + .no-skin .sidebar.responsive-min .nav-list > li > .arrow:after { + border-right-color: #f5f5f5; + -moz-border-right-colors: #f5f5f5; + border-width: 8px 8px 8px 0; + left: -8px; + } + .no-skin .sidebar.responsive-min .nav-list > li > .arrow:before { + border-width: 8px 8px 8px 0; + left: -9px; + } + .no-skin .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: #5a9ec2; + -moz-border-right-colors: #5a9ec2; + } + .no-skin .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + border-left-color: #83b6d1; + } + .no-skin .sidebar.responsive-min .sidebar-shortcuts-large { + background-color: #ffffff; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; + } + .no-skin .sidebar.responsive-min .sidebar-toggle > .ace-icon { + border-color: #b1b1b1; + } +} +@media only screen and (min-width: 992px) { + .no-skin .nav-list li.hover > .submenu { + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; + } + .no-skin .nav-list li.hover > .submenu > li.active > a { + background-color: #f5f5f5; + } + .no-skin .nav-list li.hover > .submenu > li:hover > a { + background-color: #eef3f7; + color: #2e7db4; + } +} +@media only screen and (min-width: 992px) and (max-width: 991px) { + .no-skin .sidebar.navbar-collapse .nav-list li li.hover.active.open > a { + background-color: #ffffff; + } + .no-skin .sidebar.navbar-collapse .nav-list li li.hover:hover > a { + background-color: #ffffff; + } + .no-skin .sidebar.navbar-collapse .nav-list li li.hover > a:hover, + .no-skin .sidebar.navbar-collapse .nav-list li li.hover.open > a:hover, + .no-skin .sidebar.navbar-collapse .nav-list li li.hover.open.active > a:hover { + background-color: #f1f5f9; + } + .no-skin .sidebar.navbar-collapse .nav-list > li .submenu > li.active.hover > a.dropdown-toggle > .menu-icon { + color: #c86139; + } + .no-skin .sidebar.navbar-collapse .nav-list > li .submenu > li.active.open.hover > a.dropdown-toggle > .menu-icon { + color: inherit; + } +} +@media only screen and (min-width: 992px) { + .no-skin .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a { + color: #585858; + } + .no-skin .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a > .arrow { + color: inherit; + } + .no-skin .sidebar.navbar-collapse .nav-list > li.open.hover:hover > a { + background-color: #ffffff; + } + .no-skin .sidebar.navbar-collapse .nav-list > li > .submenu li.open.hover:not(:hover):not(:focus):not(.active) > a { + color: #616161; + } + .no-skin .sidebar.navbar-collapse .nav-list > li > .submenu li.open.hover:not(:hover):not(:focus):not(.active) > a > .arrow { + color: inherit; + } +} +@media only screen and (min-width: 992px) and (max-width: 991px) { + .no-skin .sidebar.navbar-collapse .nav-list li.hover > .submenu { + border-top-color: #e5e5e5; + background-color: #ffffff; + } + .no-skin .nav-list li.hover > .submenu > li.active:not(.open) > a { + background-color: #f5f7fa; + } + .no-skin .nav-list li.hover > .submenu > li.active:not(.open) > a:hover { + background-color: #f1f5f9; + } +} +@media only screen and (min-width: 992px) { + .no-skin .sidebar.h-sidebar { + background-color: #f8f8f8; + } + .no-skin .sidebar.h-sidebar:before { + background-color: #e4e4e4; + -webkit-box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.05) inset; + box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.05) inset; + } + .no-skin .sidebar.h-sidebar .nav-list > li:hover, + .no-skin .sidebar.h-sidebar .nav-list > li:hover + li { + border-left-color: #cedde5; + } + .no-skin .sidebar.h-sidebar .nav-list > li:last-child:hover { + border-right-color: #cedde5; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active, + .no-skin .sidebar.h-sidebar .nav-list > li.active + li, + .no-skin .sidebar.h-sidebar .nav-list > li:hover + li.active { + border-left-color: #79b0ce; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active:last-child { + border-right-color: #79b0ce; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active:before { + background-color: #2b7dbc; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active > a:after { + border-width: 0 0 2px 0; + border-color: transparent; + border-bottom-color: #FFF; + left: 0; + right: 0; + top: auto; + bottom: -2px; + } + .no-skin .sidebar.h-sidebar .sidebar-shortcuts-large { + background-color: #FFF; + border-color: #cccccc; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + } + .no-skin .sidebar.h-sidebar .sidebar-shortcuts-large:after { + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .no-skin .sidebar.h-sidebar .nav-list > li.hover > .submenu { + border-color: #cccccc; + } + .no-skin .sidebar.h-sidebar.menu-min .nav-list > li.hover > .submenu { + border-top-color: #e6e6e6; + } + .no-skin .sidebar.h-sidebar .nav-list > li.hover > .arrow:after { + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + -moz-border-left-colors: none; + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .no-skin .sidebar.h-sidebar .nav-list > li.hover > .arrow:before { + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + -moz-border-left-colors: none; + -moz-border-bottom-colors: #B8B8B8; + border-bottom-color: #B8B8B8; + } + .no-skin .sidebar.h-sidebar.menu-min .nav-list > li.hover > .arrow:after { + -moz-border-bottom-colors: #F5F5F5; + border-bottom-color: #F5F5F5; + } + .no-skin .sidebar.h-sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #cccccc; + } +} +@media only screen and (max-width: 991px) { + .no-skin .sidebar { + border-width: 0 1px 1px 0; + border-top-color: #d6d6d6; + } + .no-skin .menu-toggler + .sidebar.responsive { + border-top-width: 1px; + } + .no-skin .sidebar.responsive-min { + border-width: 0 1px 0 0; + } + .no-skin .sidebar.navbar-collapse { + border-width: 0; + border-bottom-width: 1px !important; + border-bottom-color: #cccccc; + -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1) !important; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1) !important; + } + .no-skin .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu { + background-color: #ffffff; + } +} +.no-skin .sidebar-scroll .sidebar-shortcuts { + border-bottom-color: #dddddd; +} +.no-skin .sidebar-scroll .sidebar-toggle { + border-top-color: #dddddd; +} +.no-skin .main-container .menu-toggler { + background-color: #444444; +} +.no-skin .main-container .menu-toggler:before { + border-top-color: #87b87f; + border-bottom-color: #6fb3e0; +} +.no-skin .main-container .menu-toggler:after { + border-top-color: #ffa24d; + border-bottom-color: #d15b47; +} +.no-skin .main-container .menu-toggler > .toggler-text { + border-top-color: #444444; + -moz-border-top-colors: #444444; +} +.no-skin .nav-list > li.disabled:before { + display: none !important; +} +.no-skin .nav-list > li.disabled > a { + background-color: #ebebeb !important; + color: #656565 !important; +} +.no-skin .nav-list li .submenu > li.disabled > a, +.no-skin .nav-list li.disabled .submenu > li > a { + background-color: #f2f2f2 !important; + color: #7a7a7a !important; + cursor: not-allowed !important; +} +.no-skin .nav-list li .submenu > li.disabled > a > .menu-icon, +.no-skin .nav-list li.disabled .submenu > li > a > .menu-icon { + display: none; +} +.nav-list li.highlight li.active > a:after, +.nav-list li li.highlight.active > a:after, +.nav-list li.highlight li.active > a:before, +.nav-list li li.highlight.active > a:before { + display: none; +} +.nav-list > li.highlight.active > a:after, +.nav-list > li.highlight.active > a:before { + display: block; +} +.no-skin .nav-list > li.highlight:hover, +.no-skin .nav-list > li.highlight.active { + border-color: #c8d8e2; +} +.no-skin .nav-list > li.highlight:hover + li, +.no-skin .nav-list > li.highlight.active + li { + border-top-color: #c8d8e2; +} +.no-skin .nav-list > li.highlight:hover > a, +.no-skin .nav-list > li.highlight.active > a { + background-color: #FFF; +} +.no-skin .nav-list > li.highlight.active:after { + display: none; +} +.no-skin .nav-list > li.highlight.active:before { + display: block; + background-color: #4f90c2; +} +.no-skin .nav-list > li.highlight.active > a { + background-color: #f2f6f9 !important; +} +.no-skin .nav-list > li.highlight.active > a:before, +.no-skin .nav-list > li.highlight.active > a:after { + display: block; + content: ""; + position: absolute; + top: -1px; + right: -10px; + bottom: auto; + z-index: 1; + border-style: solid; + border-width: 20px 0 21px 10px; + border-color: transparent; +} +.no-skin .nav-list > li.highlight.active > a:before { + border-left-color: #a0bccd; + -moz-border-left-colors: #a0bccd; + right: -11px; +} +.no-skin .nav-list > li.highlight.active > a:after { + border-left-color: #f2f6f9; + -moz-border-left-colors: #f2f6f9; +} +.no-skin .nav-list li li.highlight.active > a { + background-color: #f2f6f9; +} +.no-skin .nav-list li li.highlight.active.open > a { + background-color: #FFF; +} +.no-skin .nav-list li li.highlight.active.open > a:hover { + background-color: #f1f5f9; +} +@media (min-width: 992px) { + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active > a:after { + display: block; + content: ""; + position: absolute; + left: 0; + top: auto; + right: auto; + bottom: -2px; + left: 50%; + margin-left: -7px; + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-left-colors: none; + -moz-border-top-colors: none; + border-width: 8px 7px; + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active > a:before { + content: ""; + position: absolute; + display: block; + left: 0; + top: auto; + right: auto; + bottom: -1px; + left: 50%; + margin-left: -7px; + border-width: 8px; + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-left-colors: none; + -moz-border-top-colors: none; + border-bottom-color: #74add7; + -moz-border-bottom-colors: #74add7; + } + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:after, + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active.hover-show > a:after, + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:before, + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active.hover-show > a:before { + display: none; + } +} +@media (min-width: 992px) { + .sidebar.compact .nav-list li.highlight.active > a:after, + .sidebar.compact .nav-list li.highlight.active > a:before { + display: none; + } + .sidebar.compact.menu-min .nav-list li.highlight.active > a:after, + .sidebar.compact.menu-min .nav-list li.highlight.active > a:before { + display: block; + } +} +@media (min-width: 992px) { + .sidebar.h-sidebar .nav-list li.highlight.active > a:after, + .sidebar.h-sidebar .nav-list li.highlight.active > a:before { + display: block; + border-width: 8px !important; + -moz-border-left-colors: none !important; + -moz-border-right-colors: none !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + } + .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:after, + .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:before { + display: none !important; + } +} +.sidebar-scroll .nav-list > li.active.highlight > a:after, +.sidebar-scroll .nav-list > li.active.highlight > a:before { + display: none !important; +} +.onpage-help-backdrop { + position: absolute; + z-index: 99990; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: #000; + filter: alpha(opacity=5); + background-color: rgba(0, 0, 0, 0.05); +} +.onpage-help-section { + display: block; + position: absolute; + z-index: 100000; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4DFFFFFF', endColorstr='#4DFFFFFF', GradientType=0); + background-color: rgba(255, 255, 255, 0.3); + border: 1px dashed #8BBCD3; + border-radius: 4px; + transition: background-color 0.2s, border-color 0.2s; + -webkit-transition: background-color 0.2s, border-color 0.2s; + text-align: center; + vertical-align: middle; + outline: none !important; +} +.onpage-help-section > .ie-hover-fix { + /* ie8-9 fix*/ + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: #FFF; + filter: alpha(opacity=1); +} +.onpage-help-section:focus, +.onpage-help-section:active { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33C9D8EA', endColorstr='#33C9D8EA', GradientType=0); + background-color: rgba(201, 216, 234, 0.2); + border-color: #77ACC4; +} +.onpage-help-section:hover { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#66C9D8EA', endColorstr='#66C9D8EA', GradientType=0); + background-color: rgba(201, 216, 234, 0.4); + border-color: #77ACC4; + border-style: solid; +} +.onpage-help-section > .help-icon-1 { + font-size: 18px; + display: inline-block; + position: absolute; + z-index: 1; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + opacity: 0; + filter: alpha(opacity=0); + color: #FFF; + text-shadow: 0 0 2px black; + background-color: #85B8DB; + border: 2px solid #FFF; + border-radius: 100%; + box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.4); + width: 48px; + height: 48px; + line-height: 46px; + transition: opacity 0.2s; + -webkit-transition: opacity 0.2s; +} +.onpage-help-section:focus > .help-icon-1, +.onpage-help-section:active > .help-icon-1 { + opacity: 0.5; +} +.onpage-help-section:hover > .help-icon-1 { + opacity: 1; + filter: alpha(opacity=100); +} +.onpage-help-section.help-section-small > .help-icon-1 { + font-size: 18px; + width: 28px; + height: 28px; + line-height: 26px; + border-radius: 12px; +} +.onpage-help-section.help-section-smaller > .help-icon-1 { + font-size: 14px; + width: 20px; + height: 20px; + line-height: 17px; + border-radius: 8px; +} +.onpage-help-section > .help-icon-2 { + position: absolute; + z-index: 2; + left: -4px; + top: -4px; + width: 18px; + height: 18px; + line-height: 16px; + display: block; + font-size: 16px; + color: orange; + background-color: #FFF; + border: 1px solid orange; + border-radius: 4px; + opacity: 1; + transition: all 0.2s; + -webkit-transition: all 0.2s; +} +.onpage-help-section:hover > .help-icon-2 { + color: #59A34E; + border-color: #59A34E; + transform: scale(1.25); + -webkit-transform: scale(1.25); +} +.onpage-help-modal { + z-index: 100010; +} +.onpage-help-modal + .modal-backdrop { + z-index: 100009; +} +.onpage-help-modal-buttons button { + border-radius: 100%; + border-width: 2px !important; +} +.onpage-help-modal-buttons button:focus { + outline: none !important; +} +.onpage-help-modal-buttons button.disabled { + transform: scale(0.9); + -webkit-transform: scale(0.9); +} +.onpage-help-content { + max-width: 800px; + margin: 0 auto; +} +.code-modal.onpage-help-modal .modal-dialog { + margin-top: 6px; + margin-bottom: 6px; +} +.code-modal.onpage-help-modal .modal-header { + padding-top: 6px; + padding-bottom: 6px; +} +.code-modal.onpage-help-modal .modal-body { + padding: 10px 12px; +} +.onpage-help-modal pre { + border-width: 0; + box-shadow: none; + border-radius: 0; + margin-top: 8px; +} +.onpage-help-modal .modal-title code { + font-size: 13px; +} +.onpage-help-modal .modal-body { + font-size: 14px; +} +@media print { + .navbar { + display: none !important; + /** + background: transparent none !important; + border-bottom: 1px solid #DDD; + + .navbar-brand { + color: @text-color !important; + } + + .ace-nav { + display: none !important; + } + */ + } + .sidebar { + display: none !important; + } + .main-content { + margin-left: 0 !important; + margin-right: 0 !important; + } + .main-content .nav-search { + display: none !important; + } + .main-content .breadcrumbs { + float: right; + border-width: 0 !important; + } + .main-content .breadcrumbs .breadcrumb > li + li:before { + content: "/"; + } + .main-content .breadcrumbs .breadcrumb .home-icon { + display: none; + } + .ace-settings-container { + display: none !important; + } + .footer { + width: 100%; + height: auto; + position: relative; + } + .footer .footer-inner, + .footer .footer-inner .footer-content { + width: 100%; + } + .btn-scroll-up { + display: none !important; + } + .btn, + .btn.btn-app { + background: transparent none !important; + border-width: 1px !important; + border-radius: 0 !important; + color: #555 !important; + } + .label { + border: 1px solid #666 !important; + } + .label[class*=arrowed]:before, + .label[class*=arrowed]:after { + display: none !important; + } +} diff --git a/web/vendor/ace/css/ace-rtl.css b/web/vendor/ace/css/ace-rtl.css new file mode 100755 index 0000000..f0a54cd --- /dev/null +++ b/web/vendor/ace/css/ace-rtl.css @@ -0,0 +1,5991 @@ +.rtl .text-center { + text-align: center; +} +.rtl .list-unstyled { + padding-left: 0; + padding-right: 0; +} +.rtl .list-inline { + padding-left: 0; + margin-left: auto; + padding-right: 0; + margin-right: -5px; +} +.rtl dd { + margin-left: auto; + margin-right: 0; +} + +@media (min-width: 992px) { +.rtl .dl-horizontal dt { + float: right; + clear: right; + text-align: left; +} +.rtl .dl-horizontal dd { + margin-left: auto; + margin-right: 180px; +} +} +.rtl .col-xs-1,.rtl .col-xs-2,.rtl .col-xs-3,.rtl .col-xs-4,.rtl .col-xs-5,.rtl .col-xs-6,.rtl .col-xs-7,.rtl .col-xs-8,.rtl .col-xs-9,.rtl .col-xs-10,.rtl .col-xs-11,.rtl .col-xs-12 { + float: right; +} +.rtl .col-xs-pull-12 { + right: auto; + left: 100%; +} +.rtl .col-xs-pull-11 { + right: auto; + left: 91.666%; +} +.rtl .col-xs-pull-10 { + right: auto; + left: 83.333%; +} +.rtl .col-xs-pull-9 { + right: auto; + left: 75%; +} +.rtl .col-xs-pull-8 { + right: auto; + left: 66.666%; +} +.rtl .col-xs-pull-7 { + right: auto; + left: 58.333%; +} +.rtl .col-xs-pull-6 { + right: auto; + left: 50%; +} +.rtl .col-xs-pull-5 { + right: auto; + left: 41.666%; +} +.rtl .col-xs-pull-4 { + right: auto; + left: 33.333%; +} +.rtl .col-xs-pull-3 { + right: auto; + left: 25%; +} +.rtl .col-xs-pull-2 { + right: auto; + left: 16.666%; +} +.rtl .col-xs-pull-1 { + right: auto; + left: 8.333%; +} +.rtl .col-xs-pull-0 { + right: auto; + left: auto; +} +.rtl .col-xs-push-12 { + left: auto; + right: 100%; +} +.rtl .col-xs-push-11 { + left: auto; + right: 91.666%; +} +.rtl .col-xs-push-10 { + left: auto; + right: 83.333%; +} +.rtl .col-xs-push-9 { + left: auto; + right: 75%; +} +.rtl .col-xs-push-8 { + left: auto; + right: 66.666%; +} +.rtl .col-xs-push-7 { + left: auto; + right: 58.333%; +} +.rtl .col-xs-push-6 { + left: auto; + right: 50%; +} +.rtl .col-xs-push-5 { + left: auto; + right: 41.666%; +} +.rtl .col-xs-push-4 { + left: auto; + right: 33.333%; +} +.rtl .col-xs-push-3 { + left: auto; + right: 25%; +} +.rtl .col-xs-push-2 { + left: auto; + right: 16.666%; +} +.rtl .col-xs-push-1 { + left: auto; + right: 8.333%; +} +.rtl .col-xs-push-0 { + left: auto; + right: auto; +} +.rtl .col-xs-offset-12 { + margin-left: auto; + margin-right: 100%; +} +.rtl .col-xs-offset-11 { + margin-left: auto; + margin-right: 91.666%; +} +.rtl .col-xs-offset-10 { + margin-left: auto; + margin-right: 83.333%; +} +.rtl .col-xs-offset-9 { + margin-left: auto; + margin-right: 75%; +} +.rtl .col-xs-offset-8 { + margin-left: auto; + margin-right: 66.666%; +} +.rtl .col-xs-offset-7 { + margin-left: auto; + margin-right: 58.333%; +} +.rtl .col-xs-offset-6 { + margin-left: auto; + margin-right: 50%; +} +.rtl .col-xs-offset-5 { + margin-left: auto; + margin-right: 41.666%; +} +.rtl .col-xs-offset-4 { + margin-left: auto; + margin-right: 33.333%; +} +.rtl .col-xs-offset-3 { + margin-left: auto; + margin-right: 25%; +} +.rtl .col-xs-offset-2 { + margin-left: auto; + margin-right: 16.666%; +} +.rtl .col-xs-offset-1 { + margin-left: auto; + margin-right: 8.333%; +} +.rtl .col-xs-offset-0 { + margin-left: auto; + margin-right: 0%; +} + +@media (min-width: 768px) { +.rtl .col-sm-1,.rtl .col-sm-2,.rtl .col-sm-3,.rtl .col-sm-4,.rtl .col-sm-5,.rtl .col-sm-6,.rtl .col-sm-7,.rtl .col-sm-8,.rtl .col-sm-9,.rtl .col-sm-10,.rtl .col-sm-11,.rtl .col-sm-12 { + float: right; +} +.rtl .col-sm-pull-12 { + right: auto; + left: 100%; +} +.rtl .col-sm-pull-11 { + right: auto; + left: 91.666%; +} +.rtl .col-sm-pull-10 { + right: auto; + left: 83.333%; +} +.rtl .col-sm-pull-9 { + right: auto; + left: 75%; +} +.rtl .col-sm-pull-8 { + right: auto; + left: 66.666%; +} +.rtl .col-sm-pull-7 { + right: auto; + left: 58.333%; +} +.rtl .col-sm-pull-6 { + right: auto; + left: 50%; +} +.rtl .col-sm-pull-5 { + right: auto; + left: 41.666%; +} +.rtl .col-sm-pull-4 { + right: auto; + left: 33.333%; +} +.rtl .col-sm-pull-3 { + right: auto; + left: 25%; +} +.rtl .col-sm-pull-2 { + right: auto; + left: 16.666%; +} +.rtl .col-sm-pull-1 { + right: auto; + left: 8.333%; +} +.rtl .col-sm-pull-0 { + right: auto; + left: auto; +} +.rtl .col-sm-push-12 { + left: auto; + right: 100%; +} +.rtl .col-sm-push-11 { + left: auto; + right: 91.666%; +} +.rtl .col-sm-push-10 { + left: auto; + right: 83.333%; +} +.rtl .col-sm-push-9 { + left: auto; + right: 75%; +} +.rtl .col-sm-push-8 { + left: auto; + right: 66.666%; +} +.rtl .col-sm-push-7 { + left: auto; + right: 58.333%; +} +.rtl .col-sm-push-6 { + left: auto; + right: 50%; +} +.rtl .col-sm-push-5 { + left: auto; + right: 41.666%; +} +.rtl .col-sm-push-4 { + left: auto; + right: 33.333%; +} +.rtl .col-sm-push-3 { + left: auto; + right: 25%; +} +.rtl .col-sm-push-2 { + left: auto; + right: 16.666%; +} +.rtl .col-sm-push-1 { + left: auto; + right: 8.333%; +} +.rtl .col-sm-push-0 { + left: auto; + right: auto; +} +.rtl .col-sm-offset-12 { + margin-left: auto; + margin-right: 100%; +} +.rtl .col-sm-offset-11 { + margin-left: auto; + margin-right: 91.666%; +} +.rtl .col-sm-offset-10 { + margin-left: auto; + margin-right: 83.333%; +} +.rtl .col-sm-offset-9 { + margin-left: auto; + margin-right: 75%; +} +.rtl .col-sm-offset-8 { + margin-left: auto; + margin-right: 66.666%; +} +.rtl .col-sm-offset-7 { + margin-left: auto; + margin-right: 58.333%; +} +.rtl .col-sm-offset-6 { + margin-left: auto; + margin-right: 50%; +} +.rtl .col-sm-offset-5 { + margin-left: auto; + margin-right: 41.666%; +} +.rtl .col-sm-offset-4 { + margin-left: auto; + margin-right: 33.333%; +} +.rtl .col-sm-offset-3 { + margin-left: auto; + margin-right: 25%; +} +.rtl .col-sm-offset-2 { + margin-left: auto; + margin-right: 16.666%; +} +.rtl .col-sm-offset-1 { + margin-left: auto; + margin-right: 8.333%; +} +.rtl .col-sm-offset-0 { + margin-left: auto; + margin-right: 0%; +} +} + +@media (min-width: 992px) { +.rtl .col-md-1,.rtl .col-md-2,.rtl .col-md-3,.rtl .col-md-4,.rtl .col-md-5,.rtl .col-md-6,.rtl .col-md-7,.rtl .col-md-8,.rtl .col-md-9,.rtl .col-md-10,.rtl .col-md-11,.rtl .col-md-12 { + float: right; +} +.rtl .col-md-pull-12 { + right: auto; + left: 100%; +} +.rtl .col-md-pull-11 { + right: auto; + left: 91.666%; +} +.rtl .col-md-pull-10 { + right: auto; + left: 83.333%; +} +.rtl .col-md-pull-9 { + right: auto; + left: 75%; +} +.rtl .col-md-pull-8 { + right: auto; + left: 66.666%; +} +.rtl .col-md-pull-7 { + right: auto; + left: 58.333%; +} +.rtl .col-md-pull-6 { + right: auto; + left: 50%; +} +.rtl .col-md-pull-5 { + right: auto; + left: 41.666%; +} +.rtl .col-md-pull-4 { + right: auto; + left: 33.333%; +} +.rtl .col-md-pull-3 { + right: auto; + left: 25%; +} +.rtl .col-md-pull-2 { + right: auto; + left: 16.666%; +} +.rtl .col-md-pull-1 { + right: auto; + left: 8.333%; +} +.rtl .col-md-pull-0 { + right: auto; + left: auto; +} +.rtl .col-md-push-12 { + left: auto; + right: 100%; +} +.rtl .col-md-push-11 { + left: auto; + right: 91.666%; +} +.rtl .col-md-push-10 { + left: auto; + right: 83.333%; +} +.rtl .col-md-push-9 { + left: auto; + right: 75%; +} +.rtl .col-md-push-8 { + left: auto; + right: 66.666%; +} +.rtl .col-md-push-7 { + left: auto; + right: 58.333%; +} +.rtl .col-md-push-6 { + left: auto; + right: 50%; +} +.rtl .col-md-push-5 { + left: auto; + right: 41.666%; +} +.rtl .col-md-push-4 { + left: auto; + right: 33.333%; +} +.rtl .col-md-push-3 { + left: auto; + right: 25%; +} +.rtl .col-md-push-2 { + left: auto; + right: 16.666%; +} +.rtl .col-md-push-1 { + left: auto; + right: 8.333%; +} +.rtl .col-md-push-0 { + left: auto; + right: auto; +} +.rtl .col-md-offset-12 { + margin-left: auto; + margin-right: 100%; +} +.rtl .col-md-offset-11 { + margin-left: auto; + margin-right: 91.666%; +} +.rtl .col-md-offset-10 { + margin-left: auto; + margin-right: 83.333%; +} +.rtl .col-md-offset-9 { + margin-left: auto; + margin-right: 75%; +} +.rtl .col-md-offset-8 { + margin-left: auto; + margin-right: 66.666%; +} +.rtl .col-md-offset-7 { + margin-left: auto; + margin-right: 58.333%; +} +.rtl .col-md-offset-6 { + margin-left: auto; + margin-right: 50%; +} +.rtl .col-md-offset-5 { + margin-left: auto; + margin-right: 41.666%; +} +.rtl .col-md-offset-4 { + margin-left: auto; + margin-right: 33.333%; +} +.rtl .col-md-offset-3 { + margin-left: auto; + margin-right: 25%; +} +.rtl .col-md-offset-2 { + margin-left: auto; + margin-right: 16.666%; +} +.rtl .col-md-offset-1 { + margin-left: auto; + margin-right: 8.333%; +} +.rtl .col-md-offset-0 { + margin-left: auto; + margin-right: 0%; +} +} + +@media (min-width: 1200px) { +.rtl .col-lg-1,.rtl .col-lg-2,.rtl .col-lg-3,.rtl .col-lg-4,.rtl .col-lg-5,.rtl .col-lg-6,.rtl .col-lg-7,.rtl .col-lg-8,.rtl .col-lg-9,.rtl .col-lg-10,.rtl .col-lg-11,.rtl .col-lg-12 { + float: right; +} +.rtl .col-lg-pull-12 { + right: auto; + left: 100%; +} +.rtl .col-lg-pull-11 { + right: auto; + left: 91.666%; +} +.rtl .col-lg-pull-10 { + right: auto; + left: 83.333%; +} +.rtl .col-lg-pull-9 { + right: auto; + left: 75%; +} +.rtl .col-lg-pull-8 { + right: auto; + left: 66.666%; +} +.rtl .col-lg-pull-7 { + right: auto; + left: 58.333%; +} +.rtl .col-lg-pull-6 { + right: auto; + left: 50%; +} +.rtl .col-lg-pull-5 { + right: auto; + left: 41.666%; +} +.rtl .col-lg-pull-4 { + right: auto; + left: 33.333%; +} +.rtl .col-lg-pull-3 { + right: auto; + left: 25%; +} +.rtl .col-lg-pull-2 { + right: auto; + left: 16.666%; +} +.rtl .col-lg-pull-1 { + right: auto; + left: 8.333%; +} +.rtl .col-lg-pull-0 { + right: auto; + left: auto; +} +.rtl .col-lg-push-12 { + left: auto; + right: 100%; +} +.rtl .col-lg-push-11 { + left: auto; + right: 91.666%; +} +.rtl .col-lg-push-10 { + left: auto; + right: 83.333%; +} +.rtl .col-lg-push-9 { + left: auto; + right: 75%; +} +.rtl .col-lg-push-8 { + left: auto; + right: 66.666%; +} +.rtl .col-lg-push-7 { + left: auto; + right: 58.333%; +} +.rtl .col-lg-push-6 { + left: auto; + right: 50%; +} +.rtl .col-lg-push-5 { + left: auto; + right: 41.666%; +} +.rtl .col-lg-push-4 { + left: auto; + right: 33.333%; +} +.rtl .col-lg-push-3 { + left: auto; + right: 25%; +} +.rtl .col-lg-push-2 { + left: auto; + right: 16.666%; +} +.rtl .col-lg-push-1 { + left: auto; + right: 8.333%; +} +.rtl .col-lg-push-0 { + left: auto; + right: auto; +} +.rtl .col-lg-offset-12 { + margin-left: auto; + margin-right: 100%; +} +.rtl .col-lg-offset-11 { + margin-left: auto; + margin-right: 91.666%; +} +.rtl .col-lg-offset-10 { + margin-left: auto; + margin-right: 83.333%; +} +.rtl .col-lg-offset-9 { + margin-left: auto; + margin-right: 75%; +} +.rtl .col-lg-offset-8 { + margin-left: auto; + margin-right: 66.666%; +} +.rtl .col-lg-offset-7 { + margin-left: auto; + margin-right: 58.333%; +} +.rtl .col-lg-offset-6 { + margin-left: auto; + margin-right: 50%; +} +.rtl .col-lg-offset-5 { + margin-left: auto; + margin-right: 41.666%; +} +.rtl .col-lg-offset-4 { + margin-left: auto; + margin-right: 33.333%; +} +.rtl .col-lg-offset-3 { + margin-left: auto; + margin-right: 25%; +} +.rtl .col-lg-offset-2 { + margin-left: auto; + margin-right: 16.666%; +} +.rtl .col-lg-offset-1 { + margin-left: auto; + margin-right: 8.333%; +} +.rtl .col-lg-offset-0 { + margin-left: auto; + margin-right: 0%; +} +} +.rtl caption { + text-align: right; +} +.rtl th { + text-align: right; +} +.rtl .radio label,.rtl .checkbox label { + padding-left: 0; + padding-right: 20px; +} +.rtl .radio input[type="radio"],.rtl .radio-inline input[type="radio"],.rtl .checkbox input[type="checkbox"],.rtl .checkbox-inline input[type="checkbox"] { + margin-left: auto; + margin-right: -20px; +} +.rtl .radio-inline,.rtl .checkbox-inline { + padding-left: 0; + padding-right: 20px; +} +.rtl .radio-inline + .radio-inline,.rtl .checkbox-inline + .checkbox-inline { + margin-left: auto; + margin-right: 10px; +} +.rtl .has-feedback .form-control { + padding-right: 0; + padding-left: 42.5px; +} +.rtl .form-control-feedback { + right: auto; + text-align: center; + left: 0; +} + +@media (min-width: 768px) { +.rtl .form-inline .radio label,.rtl .form-inline .checkbox label { + padding-left: 0; + padding-right: 0; +} +.rtl .form-inline .radio input[type="radio"],.rtl .form-inline .checkbox input[type="checkbox"] { + margin-left: auto; + margin-right: 0; +} +} + +@media (min-width: 768px) { +.rtl .form-horizontal .control-label { + text-align: left; +} +} +.rtl .form-horizontal .has-feedback .form-control-feedback { + right: auto; + left: 12px; +} +.rtl .btn { + text-align: center; +} +.rtl .caret { + margin-left: auto; + margin-right: 2px; +} +.rtl .btn-group > .btn,.rtl .btn-group-vertical > .btn { + float: right; +} +.rtl .btn-group .btn + .btn,.rtl .btn-group .btn + .btn-group,.rtl .btn-group .btn-group + .btn,.rtl .btn-group .btn-group + .btn-group { + margin-left: auto; + margin-right: -1px; +} +.rtl .btn-toolbar { + margin-left: auto; + margin-right: -5px; +} +.rtl .btn-toolbar .btn-group,.rtl .btn-toolbar .input-group { + float: right; +} +.rtl .btn-toolbar > .btn,.rtl .btn-toolbar > .btn-group,.rtl .btn-toolbar > .input-group { + margin-left: auto; + margin-right: 5px; +} +.rtl .btn-group > .btn:first-child { + margin-left: auto; + margin-right: 0; +} +.rtl .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.rtl .btn-group > .btn:last-child:not(:first-child),.rtl .btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.rtl .btn-group > .btn-group { + float: right; +} +.rtl .btn-group > .btn-group:first-child > .btn:last-child,.rtl .btn-group > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.rtl .btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.rtl .btn .caret { + margin-left: auto; + margin-right: 0; +} +.rtl .btn-group-vertical > .btn + .btn,.rtl .btn-group-vertical > .btn + .btn-group,.rtl .btn-group-vertical > .btn-group + .btn,.rtl .btn-group-vertical > .btn-group + .btn-group { + margin-left: auto; + margin-right: 0; +} +.rtl .btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 0; + border-top-left-radius: 4px; +} +.rtl .btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 0; + border-bottom-right-radius: 4px; +} +.rtl .input-group .form-control { + float: right; +} +.rtl .input-group-addon { + text-align: center; +} +.rtl .input-group .form-control:first-child,.rtl .input-group-addon:first-child,.rtl .input-group-btn:first-child > .btn,.rtl .input-group-btn:first-child > .btn-group > .btn,.rtl .input-group-btn:first-child > .dropdown-toggle,.rtl .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),.rtl .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.rtl .input-group-addon:first-child { + border-right: none; + border-left: 0; +} +.rtl .input-group .form-control:last-child,.rtl .input-group-addon:last-child,.rtl .input-group-btn:last-child > .btn,.rtl .input-group-btn:last-child > .btn-group > .btn,.rtl .input-group-btn:last-child > .dropdown-toggle,.rtl .input-group-btn:first-child > .btn:not(:first-child),.rtl .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.rtl .input-group-addon:last-child { + border-left: none; + border-right: 0; +} +.rtl .input-group-btn > .btn + .btn { + margin-left: auto; + margin-right: -1px; +} +.rtl .input-group-btn:first-child > .btn,.rtl .input-group-btn:first-child > .btn-group { + margin-right: auto; + margin-left: -1px; +} +.rtl .input-group-btn:last-child > .btn,.rtl .input-group-btn:last-child > .btn-group { + margin-left: auto; + margin-right: -1px; +} +.rtl .nav { + padding-left: 0; + padding-right: 0; +} +.rtl .nav-pills > li { + float: right; +} +.rtl .nav-pills > li + li { + margin-left: auto; + margin-right: 2px; +} +.rtl .nav-stacked > li + li { + margin-left: auto; + margin-right: 0; +} +.rtl .nav-justified > li > a { + text-align: center; +} + +@media (min-width: 992px) { +.rtl .navbar-header { + float: right; +} +} +.rtl .navbar-brand { + float: right; +} + +@media (min-width: 992px) { +.rtl .navbar > .container .navbar-brand,.rtl .navbar > .container-fluid .navbar-brand { + margin-left: auto; + margin-right: -12px; +} +} +.rtl .navbar-toggle { + float: left; + margin-right: auto; + margin-left: 12px; +} + +@media (min-width: 992px) { +.rtl .navbar-nav { + float: right; +} +.rtl .navbar-nav > li { + float: right; +} +} + +@media (min-width: 768px) { +.rtl .navbar-form .radio label,.rtl .navbar-form .checkbox label { + padding-left: 0; + padding-right: 0; +} +.rtl .navbar-form .radio input[type="radio"],.rtl .navbar-form .checkbox input[type="checkbox"] { + margin-left: auto; + margin-right: 0; +} +} + +@media (min-width: 992px) { +.rtl .navbar-text { + float: right; +} +} +.rtl .pagination { + padding-left: 0; + padding-right: 0; +} +.rtl .pagination > li > a,.rtl .pagination > li > span { + float: right; + margin-left: auto; + margin-right: -1px; +} +.rtl .pagination > li:first-child > a,.rtl .pagination > li:first-child > span { + margin-left: auto; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + margin-right: 0; + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.rtl .pagination > li:last-child > a,.rtl .pagination > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.rtl .pagination-lg > li:first-child > a,.rtl .pagination-lg > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.rtl .pagination-lg > li:last-child > a,.rtl .pagination-lg > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.rtl .pagination-sm > li:first-child > a,.rtl .pagination-sm > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.rtl .pagination-sm > li:last-child > a,.rtl .pagination-sm > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.rtl .pager { + padding-left: 0; + text-align: center; + padding-right: 0; +} +.rtl .pager .next > a,.rtl .pager .next > span { + float: left; +} +.rtl .pager .previous > a,.rtl .pager .previous > span { + float: right; +} +.rtl .label { + text-align: center; +} +.rtl .badge { + text-align: center; +} +.rtl .list-group-item > .badge { + float: left; +} +.rtl .list-group-item > .badge + .badge { + margin-right: auto; + margin-left: 5px; +} +.rtl .nav-pills > li > a > .badge { + margin-left: auto; + margin-right: 3px; +} +.rtl .alert-dismissable,.rtl .alert-dismissible { + padding-right: 0; + padding-left: 35px; +} +.rtl .alert-dismissable .close,.rtl .alert-dismissible .close { + right: auto; + left: -21px; +} +.rtl .progress-bar { + float: right; + text-align: center; +} +.rtl .media-list { + padding-left: 0; + padding-right: 0; +} +.rtl .list-group { + padding-left: 0; + padding-right: 0; +} +.rtl .panel { + -webkit-box-shadow: -0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: -0 1px 1px rgba(0, 0, 0, 0.05); +} +.rtl .embed-responsive .embed-responsive-item,.rtl .embed-responsive iframe,.rtl .embed-responsive embed,.rtl .embed-responsive object,.rtl .embed-responsive video { + left: auto; + right: 0; +} +.rtl .close { + float: left; +} +.rtl .modal-content { + -webkit-box-shadow: -0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: -0 3px 9px rgba(0, 0, 0, 0.5); +} +.rtl .modal-footer { + text-align: left; +} +.rtl .modal-footer .btn + .btn { + margin-left: auto; + margin-right: 5px; +} +.rtl .modal-footer .btn-group .btn + .btn { + margin-left: auto; + margin-right: -1px; +} +.rtl .modal-footer .btn-block + .btn-block { + margin-left: auto; + margin-right: 0; +} + +@media (min-width: 768px) { +.rtl .modal-content { + -webkit-box-shadow: -0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: -0 5px 15px rgba(0, 0, 0, 0.5); +} +} +.rtl .tooltip-inner { + text-align: center; +} +.rtl .tooltip.top .tooltip-arrow { + left: auto; + margin-left: auto; + right: 50%; + margin-right: -5px; +} +.rtl .tooltip.bottom .tooltip-arrow { + left: auto; + margin-left: auto; + right: 50%; + margin-right: -5px; +} +.rtl .carousel-inner > .item { + -webkit-transition: 0.6s ease-in-out right; + -o-transition: 0.6s ease-in-out right; + transition: 0.6s ease-in-out right; +} + +@media all and (transform-3d), (-webkit-transform-3d) { +.rtl .carousel-inner > .item.next { + left: auto; + right: 0; +} +.rtl .carousel-inner > .item.prev { + left: auto; + right: 0; +} +.rtl .carousel-inner > .item.active { + left: auto; + right: 0; +} +} +.rtl .carousel-inner > .active { + left: auto; + right: 0; +} +.rtl .carousel-inner > .next { + left: auto; + right: 100%; +} +.rtl .carousel-inner > .prev { + left: auto; + right: -100%; +} +.rtl .carousel-control { + left: auto; + text-align: center; + right: 0; +} +.rtl .carousel-control .icon-prev { + left: auto; + margin-left: auto; + right: 50%; + margin-right: -10px; +} +.rtl .carousel-control .icon-next { + right: auto; + margin-right: auto; + left: 50%; + margin-left: -10px; +} +.rtl .carousel-indicators { + left: auto; + margin-left: auto; + padding-left: 0; + text-align: center; + right: 50%; + margin-right: -30%; + padding-right: 0; +} +.rtl .carousel-caption { + text-align: center; +} + +@media screen and (min-width: 768px) { +.rtl .carousel-control .icon-prev { + margin-left: auto; + margin-right: -15px; +} +.rtl .carousel-control .icon-next { + margin-right: auto; + margin-left: -15px; +} +} +.rtl .main-container.container:before { + -webkit-box-shadow: -0 0 0 1px rgba(0,0,0,0.1); + box-shadow: -0 0 0 1px rgba(0,0,0,0.1); +} +.rtl .main-content { + margin-left: auto; + margin-right: 0; +} +.rtl .sidebar + .main-content { + margin-left: auto; + margin-right: 190px; +} +.rtl .ajax-loading-overlay > .ajax-loading-icon { + left: auto; + right: 8px; +} +.rtl .ajax-loading-overlay.ajax-overlay-body > .ajax-loading-icon { + left: auto; + right: 8px; +} +.rtl .ace-icon { + text-align: center; +} +.rtl ul,.rtl ol { + margin-right: 25px; + margin-left: 0; +} +.rtl ul.margin-5,.rtl ol.margin-5 { + margin-left: auto; + margin-right: 5px; +} +.rtl ul.margin-10,.rtl ol.margin-10 { + margin-left: auto; + margin-right: 10px; +} +.rtl ul.margin-15,.rtl ol.margin-15 { + margin-left: auto; + margin-right: 15px; +} +.rtl ul.margin-20,.rtl ol.margin-20 { + margin-left: auto; + margin-right: 20px; +} +.rtl li > ul,.rtl li > ol { + margin-left: auto; + margin-right: 18px; +} +.rtl .list-unstyled,.rtl .list-inline { + margin-left: auto; + margin-right: 0; +} +.rtl .list-unstyled > li > .ace-icon:first-child,.rtl .list-inline > li > .ace-icon:first-child { + text-align: center; +} +.rtl .pagination > li > a,.rtl .pager > li > a { + margin: 0 0 0 -1px; +} +.rtl .list-group { + margin-left: auto; + margin-right: auto; +} +.rtl .center,.rtl .align-center { + text-align: center !important; +} +.rtl .hr { + border-width: 1px 0 0 0; +} +.rtl [class*="vspace-32"] { + margin: 32px 0 31px 0; +} +.rtl [class*="vspace-30"] { + margin: 30px 0 29px 0; +} +.rtl [class*="vspace-28"] { + margin: 28px 0 27px 0; +} +.rtl [class*="vspace-26"] { + margin: 26px 0 25px 0; +} +.rtl [class*="vspace-24"] { + margin: 24px 0 23px 0; +} +.rtl [class*="vspace-22"] { + margin: 22px 0 21px 0; +} +.rtl [class*="vspace-20"] { + margin: 20px 0 19px 0; +} +.rtl [class*="vspace-18"] { + margin: 18px 0 17px 0; +} +.rtl [class*="vspace-16"] { + margin: 16px 0 15px 0; +} +.rtl [class*="vspace-14"] { + margin: 14px 0 13px 0; +} +.rtl [class*="vspace-12"] { + margin: 12px 0 11px 0; +} +.rtl [class*="vspace-10"] { + margin: 10px 0 9px 0; +} +.rtl [class*="vspace-8"] { + margin: 8px 0 7px 0; +} +.rtl [class*="vspace-6"] { + margin: 6px 0 5px 0; +} +.rtl [class*="vspace-4"] { + margin: 4px 0 3px 0; +} +.rtl [class*="vspace-2"] { + margin: 2px 0 1px 0; +} +.rtl .header > .ace-icon { + margin-right: auto; + margin-left: 2px; +} +.rtl .ace-nav > li { + border-left: none; + float: right; + border-right: 1px solid #E1E1E1; +} +.rtl .ace-nav > li:first-child { + border-left-width: transparent; + border-right-width: 0; +} +.rtl .ace-nav > li > a { + text-align: center; +} +.rtl .ace-nav > li > a > .ace-icon { + text-align: center; +} +.rtl .ace-nav > li > a > .badge { + left: auto; + right: 2px; +} +.rtl .ace-nav > li.margin-4 { + margin-left: auto; + margin-right: 4px; +} +.rtl .ace-nav > li.margin-3 { + margin-left: auto; + margin-right: 3px; +} +.rtl .ace-nav > li.margin-2 { + margin-left: auto; + margin-right: 2px; +} +.rtl .ace-nav > li.margin-1 { + margin-left: auto; + margin-right: 1px; +} +.rtl .ace-nav .nav-user-photo { + margin: -4px 0 0 8px; +} +.rtl .ace-nav li.dropdown-footer a .ace-icon { + text-align: center; +} + +@media only screen and (max-width: 479px) { +.rtl .navbar:not(.navbar-collapse) .ace-nav { + text-align: center; +} +.rtl .navbar:not(.navbar-collapse) .ace-nav > li { + text-align: right; +} +.rtl .navbar:not(.navbar-collapse) .ace-nav > li:first-child { + border-left: none; + border-right: 1px solid rgba(255, 255, 255, 0.4); +} +.rtl .navbar:not(.navbar-collapse) .ace-nav > li:last-child { + border-right: none; + border-left: 1px solid rgba(255, 255, 255, 0.4); +} +} +.rtl .user-menu > li > a > .ace-icon { + margin-right: auto; + margin-left: 6px; +} +.rtl .user-info { + text-align: right; +} + +@media (min-width: 480px) and (max-width: 540px), (max-width: 360px) { +.rtl .navbar:not(.navbar-collapse) .navbar-buttons .nav-user-photo { + margin-right: auto; + margin-left: 0; +} +.rtl .navbar:not(.navbar-collapse) .navbar-buttons .user-info { + margin-left: auto; + right: auto; + text-align: center; + margin-right: 1px; + left: 2px; +} +} + +@media (max-width: 360px) { +.rtl .navbar.navbar-collapse .navbar-buttons .nav-user-photo { + margin-right: auto; + margin-left: 0; +} +.rtl .navbar.navbar-collapse .navbar-buttons .user-info { + margin-left: auto; + right: auto; + text-align: center; + margin-right: 1px; + left: 2px; +} +.rtl li.open .user-info { + right: auto; + left: 2px; +} +} + +@media (min-width: 992px) { +.rtl .user-min .nav-user-photo { + margin-right: auto; + margin-left: 0; +} +.rtl .user-min .user-info { + margin-left: auto; + right: auto; + text-align: center; + margin-right: 1px; + left: 2px; +} +.rtl .user-min .user-info { + right: auto; + left: -3px; +} +} + +@media (max-height: 540px) and (min-width: 480px) and (max-width: 540px), (max-height: 540px) and (max-width: 360px) { +.rtl .navbar:not(.navbar-collapse) .navbar-buttons .user-info { + right: auto; + left: auto; +} +} + +@media (max-height: 540px) and (max-width: 360px) { +.rtl .navbar.navbar-collapse .navbar-buttons .user-info { + right: auto; + left: auto; +} +} + +@media (max-height: 540px) and (min-width: 992px) { +.rtl .user-min .user-info { + right: auto; + left: auto; +} +} + +@media only screen and (max-width: 991px) { +.rtl .navbar.navbar-collapse .navbar-buttons > .ace-nav { + text-align: center; +} +.rtl .navbar.navbar-collapse .navbar-buttons > .ace-nav > li { + text-align: right; +} +.rtl .navbar.navbar-collapse .navbar-buttons > .ace-nav > li:first-child { + border-left: none; + border-right: 1px solid rgba(255, 255, 255, 0.4); +} +.rtl .navbar.navbar-collapse .navbar-buttons > .ace-nav > li:last-child { + border-right: none; + border-left: 1px solid rgba(255, 255, 255, 0.4); +} +} +.rtl .container > .navbar-buttons,.rtl .container-fluid > .navbar-buttons { + padding-right: 0 !important; + padding-left: 0 !important; +} +.rtl .navbar .navbar-nav > li { + border-width: 0 0 0 1px; +} +.rtl .navbar .navbar-nav > li:first-child { + border-width: 0 1px 0 1px; +} +.rtl .navbar .navbar-toggle { + text-align: center; +} +.rtl .navbar .navbar-toggle .icon-bar { + margin-left: auto; + margin-right: 7px; +} +.rtl .sidebar { + float: right; +} +.rtl .nav-list > li > a { + padding-left: 0; + padding-right: 7px; +} +.rtl .nav-list > li > a > .menu-icon { + margin-right: auto; + text-align: center; + margin-left: 2px; +} +.rtl .nav-list > li:before { + left: auto; + right: 0; +} + +@media only screen and (min-width: 992px) { +.rtl .main-container.container .sidebar:not(.h-sidebar) .nav-list > li:before { + left: auto; + right: -2px; +} +} +.rtl .main-container.container .sidebar.sidebar-fixed:not(.h-sidebar) .nav-list > li:before { + left: auto; + right: 0; +} +.rtl .nav-list > li a > .arrow { + right: auto; + text-align: center; + left: 10px; +} +.rtl .nav-list > li .submenu > li { + margin-left: auto; + margin-right: 0; +} +.rtl .nav-list > li .submenu > li > a { + padding: 7px 37px 9px 0; +} +.rtl .nav-list > li .submenu > li a > .menu-icon { + text-align: center; + left: auto; + right: 10px; +} +.rtl .nav-list > li > .submenu > li:before { + left: auto; + right: 20px; +} +.rtl .nav-list > li > .submenu:before { + left: auto; + border-width: 0 1px 0 0; + right: 18px; +} +.rtl .nav-list > li > .submenu a > .arrow { + right: auto; + left: 10px; +} +.rtl .nav-list > li > .submenu li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 20px; + padding-right: 22px; +} +.rtl .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 20px; + padding-right: 38px; +} +.rtl .nav-list > li > .submenu li > .submenu > li a > .menu-icon { + margin-right: auto; + margin-left: 4px; +} +.rtl .nav-list a .badge,.rtl .nav-list a .label { + right: auto; + left: 10px; +} +.rtl .nav-list a.dropdown-toggle .badge,.rtl .nav-list a.dropdown-toggle .label { + right: auto; + left: 26px; +} + +@media only screen and (max-width: 991px) { +.rtl .responsive.sidebar-fixed { + left: auto; + margin-left: auto; + right: auto; + margin-right: auto; +} +.rtl .navbar-fixed-top + .main-container > .responsive { + left: auto; + margin-left: auto; + right: auto; + margin-right: auto; +} +.rtl .navbar-fixed-top + .main-container > .menu-toggler + .responsive { + left: auto; + margin-left: auto; + right: 190px; + margin-right: -190px; +} +.rtl .navbar-fixed-top + .main-container > .menu-toggler + .responsive.sidebar-fixed { + left: auto; + margin-left: auto; + right: auto; + margin-right: auto; +} +} + +@media only screen and (max-width: 991px) { +.rtl .sidebar.responsive.sidebar-fixed { + left: auto; + margin-left: auto; + right: auto; + margin-right: auto; +} +.rtl .main-container .menu-toggler.fixed { + left: auto; + right: auto; +} +.rtl .sidebar.sidebar-fixed.responsive-max { + left: auto; + margin-left: auto; + right: auto; + margin-right: auto; +} +} +.rtl .sidebar .sidebar-toggle { + text-align: center; +} +.rtl .sidebar .sidebar-shortcuts { + text-align: center; +} +.rtl .sidebar .sidebar-shortcuts-large > .btn { + text-align: center; +} +.rtl .nav-list li.active > a:after { + right: auto; + left: 0; +} + +@media (min-width: 992px) { +.rtl .sidebar.compact .nav-list > li > a { + text-align: center; +} +.rtl .sidebar.compact .nav-list a .badge,.rtl .sidebar.compact .nav-list a .label { + right: auto; + left: 12px; +} +.rtl .sidebar.compact + .main-content { + margin-left: auto; + margin-right: 105px; +} +} + +@media (min-width: 992px) and (max-width: 991px) { +.rtl .sidebar.compact + .main-content { + margin-left: auto; + margin-right: 0; +} +.rtl .sidebar.navbar-collapse.compact .nav-list > li > a { + text-align: right; + padding: 0 7px 0 16px; +} +.rtl .sidebar.navbar-collapse.compact .nav-list > li > a > .menu-icon { + margin: 0 0 0 2px; +} +.rtl .sidebar.navbar-collapse.compact + .main-content { + margin-left: auto; + margin-right: 0; +} +} + +@media only screen and (min-width: 992px) { +.rtl .nav-list li.hover > .submenu { + left: auto; + margin-left: auto; + right: 100%; + margin-right: -2px; +} +.rtl .nav-list li.hover > .submenu > li > a { + padding-left: 0; + padding-right: 18px; +} +.rtl .nav-list > li > .submenu li.hover > .submenu > li > a { + padding-left: 0 !important; + margin-left: auto !important; + padding-right: 12px !important; + margin-right: auto !important; +} +.rtl .nav-list > li > .submenu li.hover > .submenu > li > a > .menu-icon { + margin-right: auto; + margin-left: 2px; +} +.rtl .nav-list > li .submenu > li.hover > a { + padding-left: 0; + padding-right: 22px; +} +.rtl .nav-list > li .submenu > li.hover > a > .menu-icon { + left: auto; + right: 4px; +} +} + +@media (min-width: 992px) and (max-width: 991px) { +.rtl .sidebar.navbar-collapse .nav-list li.hover > .submenu { + left: auto; + right: auto; +} +.rtl .sidebar.navbar-collapse .nav-list li.hover > .submenu li > a { + padding-left: 0; + padding-right: 37px; +} +.rtl .sidebar.navbar-collapse .nav-list li.hover > .submenu > li > a > .menu-icon { + margin-right: auto; + margin-left: auto; +} +.rtl .sidebar.navbar-collapse .nav-list > li .submenu > li.hover > a > .menu-icon { + left: auto; + right: 10px; +} +.rtl .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu > li > a { + padding-left: 0 !important; + margin-left: auto !important; + padding-right: 22px !important; + margin-right: 20px !important; +} +.rtl .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu > li > a > .menu-icon { + margin-right: auto; + margin-left: 4px; +} +.rtl .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li.hover > .submenu > li > a { + margin-left: auto !important; + padding-left: 0 !important; + margin-right: 20px !important; + padding-right: 38px !important; +} +} +.rtl .nav-list li > .arrow { + right: auto; + left: 1px; +} +.rtl .nav-list li > .arrow:before,.rtl .nav-list li > .arrow:after { + left: auto; + right: -20px; +} +.rtl .nav-list li > .arrow:before { + left: auto; + right: -21px; +} +.rtl .sidebar.menu-min + .main-content { + margin-left: auto; + margin-right: 43px; +} +.rtl .sidebar.menu-min .nav-list a .badge,.rtl .sidebar.menu-min .nav-list a .label { + right: 4px; + left: auto; +} +.rtl .sidebar.menu-min .nav-list > li > a > .menu-icon { + margin-right: auto; + margin-left: 0; +} +.rtl .sidebar.menu-min .nav-list > li > a > .menu-text { + text-align: right; + left: auto; + padding-left: 0; + right: 42px; + padding-right: 12px; +} +.rtl .sidebar.menu-min .nav-list > li > .submenu { + left: auto; + right: 42px; +} +.rtl .sidebar.menu-min .nav-list > li > .submenu:after { + right: auto; + border-right: none; + border-right-color: transparent; + left: -1px; + border-left: 1px solid; + border-left-color: inherit; +} +.rtl .sidebar.menu-min .nav-list > li > .submenu li > a { + margin-left: auto; + padding-left: 0; + margin-right: 0; + padding-right: 22px; +} +.rtl .sidebar.menu-min .nav-list > li > .submenu li > a > .menu-icon { + left: auto; + right: 4px; +} +.rtl .sidebar.menu-min .nav-list > li > .arrow:after,.rtl .sidebar.menu-min .nav-list > li > .arrow:before { + left: auto; + right: -16px; +} +.rtl .sidebar.menu-min .nav-list > li > .arrow:before { + left: auto; + right: -17px; +} +.rtl .sidebar.menu-min .nav-list li > .arrow { + right: auto; + left: -1px; +} +.rtl .sidebar.menu-min .nav-list > li.pull_up > .arrow:after,.rtl .sidebar.menu-min .nav-list > li.pull_up > .arrow:before { + left: auto; + right: -20px; +} +.rtl .sidebar.menu-min .nav-list > li.pull_up > .arrow:before { + left: auto; + right: -21px; +} +.rtl .sidebar.menu-min .sidebar-shortcuts-large { + left: auto; + right: 42px; +} +.rtl .sidebar.menu-min .nav-list > li > .submenu li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 2px; + padding-right: 30px; +} +.rtl .sidebar.menu-min .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 2px; + padding-right: 45px; +} + +@media (min-width: 992px) { +.rtl .sidebar.menu-min .nav-list li.hover > .submenu { + margin-left: auto; + margin-right: 0; +} +.rtl .sidebar.menu-min .nav-list > li > .submenu li.hover > .submenu > li > a,.rtl .sidebar.menu-min .nav-list > li > .submenu li > .submenu > li.hover > .submenu > li > a { + margin-left: auto !important; + margin-right: 0 !important; +} +} + +@media (min-width: 992px) { +.rtl .sidebar.menu-min.compact .nav-list > li > a { + padding: 0 7px 0 16px; +} +} + +@media only screen and (min-width: 992px) { +.rtl .navbar.h-navbar { + -webkit-box-shadow: -0 2px 4px 0 rgba(0, 0, 0, 0.25); + box-shadow: -0 2px 4px 0 rgba(0, 0, 0, 0.25); +} +.rtl .sidebar.h-sidebar .nav-list > li { + float: right; + border-width: 0 1px 0 0; + margin-left: auto; + margin-right: 0; +} +.rtl .sidebar.h-sidebar .nav-list > li:last-child { + border-right-width: transparent; + border-left-width: 1px; +} +.rtl .sidebar.h-sidebar .nav-list > li:first-child { + border-left-width: transparent; + margin-left: auto; + border-right-width: 0; + margin-right: 0; +} +.rtl .sidebar.h-sidebar .sidebar-shortcuts + .nav-list > li:first-child { + border-left-width: transparent; + margin-left: auto; + border-right-width: 1px; + margin-right: -1px; +} +.rtl .sidebar.h-sidebar .nav-list > li.hover > .submenu { + left: auto; + margin-left: auto; + right: 1px; + margin-right: -2px; +} +.rtl .sidebar.h-sidebar .nav-list > li.hover > .arrow { + right: 24px; + left: auto; +} +.rtl .sidebar.h-sidebar .nav-list > li.hover > .arrow:after { + left: auto !important; + right: -10px !important; +} +.rtl .sidebar.h-sidebar .nav-list > li.hover > .arrow:before { + right: -10px !important; + left: auto !important; +} +.rtl .sidebar.h-sidebar .nav-list > li.hover-flip > .submenu { + left: 1px; + right: auto; + margin-left: -2px; + margin-right: auto; +} +.rtl .sidebar.h-sidebar .nav-list > li.hover-flip > .arrow { + left: 24px; + right: auto; +} +.rtl .sidebar.h-sidebar .nav-list li li.hover-flip > .submenu { + left: 100%; + right: auto; + margin-left: -2px; + margin-right: auto; +} +.rtl .sidebar.h-sidebar .nav-list li li.hover-flip > .arrow { + left: auto; + right: 0; +} +.rtl .sidebar.h-sidebar .sidebar-shortcuts-large:before,.rtl .sidebar.h-sidebar .sidebar-shortcuts-large:after { + left: auto; + margin-left: auto; + right: 50%; + margin-right: -8px; +} +.rtl .sidebar.h-sidebar .sidebar-shortcuts-large:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: transparent; + -moz-border-left-colors: none; +} +.rtl .sidebar.h-sidebar .sidebar-toggle { + right: auto; + left: 6px; +} +.rtl .sidebar.h-sidebar .sidebar-shortcuts { + float: right; +} +.rtl .sidebar.h-sidebar .sidebar-shortcuts-large { + left: auto; + right: 10px; +} +.rtl .sidebar.h-sidebar .nav-list a .badge,.rtl .sidebar.h-sidebar .nav-list a .label { + right: 50% !important; + left: auto !important; + margin-left: auto; + margin-right: 10px; +} +.rtl .sidebar.h-sidebar + .main-content { + margin-left: auto; + margin-right: 0; +} +} + +@media (min-width: 992px) { +.rtl .sidebar.h-sidebar.menu-min .nav-list > li > a > .menu-text { + left: auto; + right: -1px; +} +.rtl .sidebar.h-sidebar.menu-min .sidebar-shortcuts-large { + left: auto; + right: 1px; +} +} + +@media only screen and (max-width: 991px) { +.rtl .sidebar.responsive { + -webkit-box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.15); + box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.15); + -moz-transform: translateX(200px); + -webkit-transform: translateX(200px); + -o-transform: translateX(200px); + -ms-transform: translateX(200px); + transform: translateX(200px); + left: auto; + margin-left: auto; + right: 190px; + margin-right: -190px; +} +} + +@media (min-width: 992px) and (max-width: 991px) { +.rtl .sidebar.responsive.compact { + -moz-transform: translateX(115px); + -webkit-transform: translateX(115px); + -o-transform: translateX(115px); + -ms-transform: translateX(115px); + transform: translateX(115px); +} +.rtl .sidebar.responsive.compact.push_away.display + .main-content { + -moz-transform: translateX(-105px); + -webkit-transform: translateX(-105px); + -o-transform: translateX(-105px); + -ms-transform: translateX(-105px); + transform: translateX(-105px); +} +} + +@media only screen and (max-width: 991px) { +.rtl .sidebar.responsive.menu-min { + -moz-transform: translateX(53px); + -webkit-transform: translateX(53px); + -o-transform: translateX(53px); + -ms-transform: translateX(53px); + transform: translateX(53px); +} +.rtl .sidebar.responsive.push_away.display + .main-content { + -moz-transform: translateX(-190px); + -webkit-transform: translateX(-190px); + -o-transform: translateX(-190px); + -ms-transform: translateX(-190px); + transform: translateX(-190px); +} +.rtl .sidebar.responsive.push_away.display.menu-min + .main-content { + -moz-transform: translateX(-43px); + -webkit-transform: translateX(-43px); + -o-transform: translateX(-43px); + -ms-transform: translateX(-43px); + transform: translateX(-43px); +} +} + +@media only screen and (max-width: 991px) { +.rtl .main-container .menu-toggler.fixed { + left: auto; + right: auto; +} +} + +@media only screen and (max-width: 991px) { +.rtl .main-container .menu-toggler { + margin-right: auto; + padding-left: 0; + margin-left: 2px; + padding-right: 33px; +} +.rtl .main-container .menu-toggler:before { + left: auto; + right: 4px; +} +.rtl .main-container .menu-toggler:after { + left: auto; + right: 4px; +} +.rtl .main-container .menu-toggler > .toggler-text { + left: auto; + right: 0; +} +.rtl .main-container .menu-toggler > .toggler-text:after { + left: auto; + right: -8px; +} +} + +@media only screen and (max-width: 320px) { +.rtl .main-container .menu-toggler > .toggler-text:after { + left: auto; + right: -13px; +} +} + +@media (max-width: 991px) { +.rtl .sidebar.responsive-min + .main-content { + margin-left: auto; + margin-right: 43px; +} +.rtl .sidebar.responsive-min .nav-list a .badge,.rtl .sidebar.responsive-min .nav-list a .label { + right: 4px; + left: auto; +} +.rtl .sidebar.responsive-min .nav-list > li > a > .menu-icon { + margin-right: auto; + margin-left: 0; +} +.rtl .sidebar.responsive-min .nav-list > li > a > .menu-text { + text-align: right; + left: auto; + padding-left: 0; + right: 42px; + padding-right: 12px; +} +.rtl .sidebar.responsive-min .nav-list > li > .submenu { + left: auto; + right: 42px; +} +.rtl .sidebar.responsive-min .nav-list > li > .submenu:after { + right: auto; + border-right: none; + border-right-color: transparent; + left: -1px; + border-left: 1px solid; + border-left-color: inherit; +} +.rtl .sidebar.responsive-min .nav-list > li > .submenu li > a { + margin-left: auto; + padding-left: 0; + margin-right: 0; + padding-right: 22px; +} +.rtl .sidebar.responsive-min .nav-list > li > .submenu li > a > .menu-icon { + left: auto; + right: 4px; +} +.rtl .sidebar.responsive-min .nav-list > li > .arrow:after,.rtl .sidebar.responsive-min .nav-list > li > .arrow:before { + left: auto; + right: -16px; +} +.rtl .sidebar.responsive-min .nav-list > li > .arrow:before { + left: auto; + right: -17px; +} +.rtl .sidebar.responsive-min .nav-list li > .arrow { + right: auto; + left: -1px; +} +.rtl .sidebar.responsive-min .nav-list > li.pull_up > .arrow:after,.rtl .sidebar.responsive-min .nav-list > li.pull_up > .arrow:before { + left: auto; + right: -20px; +} +.rtl .sidebar.responsive-min .nav-list > li.pull_up > .arrow:before { + left: auto; + right: -21px; +} +.rtl .sidebar.responsive-min .sidebar-shortcuts-large { + left: auto; + right: 42px; +} +.rtl .sidebar.responsive-min .nav-list > li > .submenu li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 2px; + padding-right: 30px; +} +.rtl .sidebar.responsive-min .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 2px; + padding-right: 45px; +} +.rtl .sidebar.responsive-min + .main-content { + margin-left: auto !important; + margin-right: 43px !important; +} +.rtl .sidebar.responsive-min + .main-content .breadcrumb { + margin-left: auto; + margin-right: 12px; +} +.rtl .sidebar.responsive-max { + left: auto; + margin-left: auto; + -webkit-box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.15); + box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.15); + right: 190px; + margin-right: -190px; +} +.rtl .sidebar.responsive-max + .main-content { + margin-left: auto !important; + margin-right: 43px !important; +} +.rtl .sidebar.responsive-max + .main-content .breadcrumb { + margin-left: auto; + margin-right: 12px; +} +} + +@media only screen and (max-width: 991px) { +.rtl .sidebar.navbar-collapse .nav-list li > .submenu { + border-left-width: transparent; + border-right-width: 0; +} +.rtl .sidebar.navbar-collapse + .main-content .breadcrumb { + margin-left: auto; + margin-right: 12px; +} +.rtl .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu { + left: auto; + border-width: 1px 0 0 0 !important; + right: auto; +} +.rtl .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > a > .menu-icon { + left: auto; + right: 10px; +} +.rtl .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > a { + padding: 7px 37px 9px 0; +} +.rtl .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 20px; + padding-right: 22px; +} +.rtl .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 20px; + padding-right: 38px; +} +.rtl .sidebar.navbar-collapse.menu-min .nav-list > li > a { + text-align: right; + padding-left: 0; + padding-right: 7px; +} +.rtl .sidebar.navbar-collapse.menu-min .nav-list > li > a > .menu-icon { + margin-right: auto; + margin-left: 2px; +} +.rtl .sidebar.navbar-collapse.menu-min .nav-list > li > a > .menu-text { + padding-left: 0; + left: auto; + padding-right: 0; + right: auto; +} +.rtl .sidebar.navbar-collapse .nav-list a .badge,.rtl .sidebar.navbar-collapse .nav-list a .label { + right: 4px; + left: auto; +} +} + +@media (min-width: 992px) and (max-width: 991px) { +.rtl .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu > li > a,.rtl .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li.hover > .submenu > li > a { + margin-left: auto !important; + margin-right: 20px !important; +} +} +.rtl .main-content-inner { + float: right; +} + +@media only screen and (min-width: 992px) { +.rtl .main-content .h-sidebar + .page-content { + margin-left: auto; + margin-right: auto; +} +.rtl .main-content .h-sidebar.sidebar-fixed { + left: auto; + right: 190px; +} +.rtl .sidebar.compact + .main-content .h-sidebar.sidebar-fixed { + left: auto; + right: 105px; +} +.rtl .sidebar.menu-min + .main-content .h-sidebar.sidebar-fixed { + left: auto; + right: 43px; +} +} +.rtl .sidebar .nav-wrap + .ace-scroll { + right: auto; + left: 0; +} +.rtl .sidebar .nav-wrap + .scrollout { + right: auto; + left: -8px; +} +.rtl .breadcrumbs { + padding: 0 0 0 12px; +} +.rtl .breadcrumb { + margin: 6px 12px 0 22px; +} +.rtl .breadcrumb > li,.rtl .breadcrumb > li.active { + padding: 0 3px 0 3px; +} +.rtl .breadcrumb > li + li:before { + margin: 0 0 0 8px; +} + +@media only screen and (max-width: 991px) { +.rtl .menu-toggler + .sidebar.responsive + .main-content .breadcrumb { + margin-left: auto; + margin-right: 90px; +} +} + +@media only screen and (max-width: 320px) { +.rtl .breadcrumb { + margin-left: auto; + margin-right: 8px; +} +.rtl .menu-toggler + .sidebar.responsive + .main-content .breadcrumb { + margin-left: auto; + margin-right: 36px; +} +} + +@media (min-width: 992px) { +.rtl .sidebar + .main-content .breadcrumbs-fixed { + left: auto; + right: 190px; +} +} + +@media (min-width: 992px) { +.rtl .sidebar.compact + .main-content .breadcrumbs-fixed { + left: auto; + right: 105px; +} +} + +@media (min-width: 992px) { +.rtl .sidebar.menu-min + .main-content .breadcrumbs-fixed { + left: auto; + right: 43px; +} +} + +@media (min-width: 992px) and (max-width: 991px) { +.rtl .breadcrumbs-fixed,.rtl .sidebar.menu-min + .main-content .breadcrumbs-fixed { + left: auto; + right: 0; +} +.rtl .sidebar.responsive-min + .main-content .breadcrumbs-fixed,.rtl .sidebar.responsive-max + .main-content .breadcrumbs-fixed { + left: auto; + right: 43px; +} +} + +@media (min-width: 992px) { +.rtl .h-sidebar + .main-content .breadcrumbs.breadcrumbs-fixed { + left: auto; + right: auto; +} +} +.rtl .nav-search { + right: auto; + left: 22px; +} +.rtl .sidebar > .nav-search { + text-align: center; +} +.rtl .sidebar.menu-min .nav-search .form-search { + left: auto; + right: 5px; +} + +@media (max-width: 991px) { +.rtl .sidebar.responsive-min .nav-search .form-search { + left: auto; + right: 5px; +} +} + +@media only screen and (max-width: 991px) { +.rtl .nav-search { + right: auto; + left: 10px; +} +} +.rtl .btn.disabled:active,.rtl .btn[disabled]:active { + left: auto; + right: 0; +} +.rtl .btn > .ace-icon { + margin-right: auto; + margin-left: 4px; +} +.rtl .btn > .icon-only.ace-icon { + text-align: center; +} +.rtl .btn-lg > .ace-icon { + margin-right: auto; + margin-left: 6px; +} +.rtl .btn-sm > .ace-icon { + margin-right: auto; + margin-left: 3px; +} +.rtl .btn-xs > .ace-icon,.rtl .btn-mini > .ace-icon,.rtl .btn-minier > .ace-icon { + margin-right: auto; + margin-left: 2px; +} +.rtl .btn-group:first-child { + margin-left: auto; + margin-right: 0; +} +.rtl .btn-group > .btn,.rtl .btn-group > .btn + .btn { + margin: 0 0 0 1px; +} +.rtl .btn-group > .btn:first-child { + margin: 0 0 0 1px; +} +.rtl .btn-group > .btn > .caret { + margin-left: auto; + margin-right: 1px; +} +.rtl .btn-group > .btn,.rtl .btn-group + .btn { + margin: 0 0 0 1px; +} +.rtl .btn-group.btn-overlap > .btn { + margin-right: auto; + margin-left: -1px; +} +.rtl .btn-group.btn-corner > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 8px; + border-top-right-radius: 8px; +} +.rtl .btn-group.btn-corner > .btn:last-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 8px; + border-top-left-radius: 8px; +} +.rtl .btn-group.btn-corner > .btn.btn-sm:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.rtl .btn-group.btn-corner > .btn.btn-sm:last-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.rtl .btn-group.btn-corner > .btn.btn-xs:first-child,.rtl .btn-group.btn-corner > .btn.btn-mini:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.rtl .btn-group.btn-corner > .btn.btn-xs:last-child,.rtl .btn-group.btn-corner > .btn.btn-mini:last-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.rtl .btn.btn-app { + text-align: center; +} +.rtl .btn.btn-app > .badge,.rtl .btn.btn-app > .label { + right: auto; + text-align: center; + left: -2px; +} +.rtl .btn-group > .btn-app:first-child:not(:last-child):not(.dropdown-toggle) { + margin-right: auto; + margin-left: 24px; +} +.rtl .btn-group > .btn-app + .btn-app.dropdown-toggle { + margin-left: auto; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + right: auto; + margin-right: -23px; + border-bottom-right-radius: 0; + border-top-right-radius: 0; + left: 0; +} +.rtl .btn.btn-app.btn-light,.rtl .btn.btn-app.btn-yellow { + -webkit-box-shadow: -0 0 0 1px rgba(0, 0, 0, 0.08) inset !important; + box-shadow: -0 0 0 1px rgba(0, 0, 0, 0.08) inset !important; +} +.rtl .label.label-white { + border-right-width: 2px; + border-left-width: 1px; +} +.rtl .dropdown-submenu > a:after { + margin-right: auto; + margin-left: -5px; +} +.rtl .dropdown-navbar { + -webkit-box-shadow: -0 2px 4px rgba(30, 30, 100, 0.25); + box-shadow: -0 2px 4px rgba(30, 30, 100, 0.25); +} +.rtl .dropdown-navbar > li > .ace-icon,.rtl .dropdown-navbar > li > a > .ace-icon { + margin-right: auto !important; + margin-left: 5px !important; +} +.rtl .dropdown-navbar > li.dropdown-footer > a { + text-align: center; +} +.rtl .dropdown-navbar [class*="btn"].ace-icon { + margin: 0 0 0 5px; + text-align: center; +} +.rtl .dropdown-navbar .msg-photo { + float: right; +} +.rtl .dropdown-navbar .msg-body { + margin-left: auto; + margin-right: 50px; +} +.rtl .help-button { + text-align: center; + margin-left: auto; + -webkit-box-shadow: -0px 1px 0px 1px rgba(0, 0, 0, 0.2); + box-shadow: -0px 1px 0px 1px rgba(0, 0, 0, 0.2); + margin-right: 4px; +} +.rtl .limiterBox:before { + left: auto; + margin-left: auto; + right: 50%; + margin-right: -5px; +} +.rtl .form-search .radio [type=radio] + label,.rtl .form-inline .radio [type=radio] + label,.rtl .form-search .checkbox [type=checkbox] + label,.rtl .form-inline .checkbox [type=checkbox] + label { + float: right; + margin-left: auto; + margin-right: -20px; +} +.rtl .form-search .form-search .radio [type=radio] + label,.rtl .form-search .form-inline .radio [type=radio] + label,.rtl .form-search .form-search .checkbox [type=checkbox] + label,.rtl .form-search .form-inline .checkbox [type=checkbox] + label,.rtl .form-inline .form-search .radio [type=radio] + label,.rtl .form-inline .form-inline .radio [type=radio] + label,.rtl .form-inline .form-search .checkbox [type=checkbox] + label,.rtl .form-inline .form-inline .checkbox [type=checkbox] + label { + margin-left: 3px; + margin-right: 0; +} +.rtl .ace-file-input .ace-file-container:before { + right: auto; + text-align: center; + border-left-width: transparent; + left: 0; + border-right-width: 4px; +} +.rtl .ace-file-input .ace-file-container .ace-file-name { + padding-left: 0; + padding-right: 30px; +} +.rtl .ace-file-input .ace-file-container.selected { + right: auto; + left: 16px; +} +.rtl .ace-file-input .ace-file-container .ace-icon { + left: auto; + text-align: center; + right: 0; +} +.rtl .ace-file-input .remove { + right: auto; + text-align: center; + left: -8px; +} +.rtl .ace-file-input .ace-file-overlay { + left: -10px; + right: -2px; +} +.rtl .ace-file-input .ace-file-overlay > .overlay-content { + text-align: center; +} +.rtl .ace-file-multiple .ace-file-container { + text-align: center; +} +.rtl .ace-file-multiple .ace-file-container.selected .ace-file-name .ace-icon { + left: auto; + text-align: center; + right: 0; +} +.rtl .ace-file-multiple .ace-file-container .ace-file-name { + text-align: right; +} +.rtl .ace-file-multiple .ace-file-container .ace-file-name img { + margin: 4px 1px 4px 8px; +} +.rtl .ace-file-multiple .remove { + right: auto; + left: -11px; +} +.rtl .ace-file-multiple .ace-file-container .ace-file-name .ace-icon { + text-align: center; +} +.rtl .ace-file-multiple .ace-file-container.selected .ace-file-name .ace-icon { + margin-right: 2px; + margin-left: 4px; +} +.rtl .ace-file-multiple .ace-file-container .ace-file-name.large { + text-align: center; +} +.rtl .input-group > .btn + .btn { + margin-left: auto; + margin-right: 1px; +} +.rtl .form-group.has-success input:focus,.rtl .form-group.has-success select:focus,.rtl .form-group.has-success textarea:focus { + -webkit-box-shadow: -0px 0px 0px 2px rgba(130, 188, 58, 0.3); + box-shadow: -0px 0px 0px 2px rgba(130, 188, 58, 0.3); +} +.rtl .form-group.has-info input:focus,.rtl .form-group.has-info select:focus,.rtl .form-group.has-info textarea:focus { + -webkit-box-shadow: -0px 0px 0px 2px rgba(58, 120, 188, 0.3); + box-shadow: -0px 0px 0px 2px rgba(58, 120, 188, 0.3); +} +.rtl .form-group.has-error input:focus,.rtl .form-group.has-error select:focus,.rtl .form-group.has-error textarea:focus { + -webkit-box-shadow: -0px 0px 0px 2px rgba(219, 137, 120, 0.3); + box-shadow: -0px 0px 0px 2px rgba(219, 137, 120, 0.3); +} +.rtl .form-group.has-warning input:focus,.rtl .form-group.has-warning select:focus,.rtl .form-group.has-warning textarea:focus { + -webkit-box-shadow: -0px 0px 0px 2px rgba(216, 188, 65, 0.3); + box-shadow: -0px 0px 0px 2px rgba(216, 188, 65, 0.3); +} + +@media only screen and (max-width: 767px) { +.rtl .help-inline { + padding-left: 0; + padding-right: 0; +} +} +.rtl .accordion-style2.panel-group .panel-heading .accordion-toggle { + border-width: 0 2px 0 0; +} +.rtl .accordion-style2.panel-group .panel-heading .accordion-toggle.collapsed { + border-width: 0 1px 0 0; +} +.rtl th.center,.rtl td.center { + text-align: center; +} +.rtl .widget-header { + padding-left: 0; + padding-right: 12px; +} +.rtl .widget-header:after { + clear: left; +} +.rtl .widget-header-large { + padding-left: 0; + padding-right: 18px; +} +.rtl .widget-header-small { + padding-left: 0; + padding-right: 10px; +} +.rtl .widget-header > .widget-title > .ace-icon { + margin-right: auto; + margin-left: 5px; +} +.rtl .widget-toolbar { + float: left; +} +.rtl .widget-toolbar:before { + left: auto; + border-width: 0 0 0 1px; + right: -1px; +} +.rtl .widget-color-dark > .widget-header > .widget-toolbar:before { + box-shadow: 1px 0 0 rgba(255, 255, 255, 0.2), inset 1px 0 0 rgba(255, 255, 255, 0.1); +} +.rtl .widget-toolbar > a[data-action] > .ace-icon,.rtl .widget-toolbar > .widget-menu > a[data-action] > .ace-icon { + margin-right: auto; + margin-left: 0; +} +.rtl .widget-box.transparent > .widget-header { + padding-left: 0; + padding-right: 3px; +} +.rtl .widget-box.transparent > .widget-header-large { + padding-left: 0; + padding-right: 5px; +} +.rtl .widget-box.transparent > .widget-header-small { + padding-left: 0; + padding-right: 1px; +} +.rtl .widget-toolbox.center { + text-align: center; +} +.rtl .widget-toolbox.toolbox-vertical { + border-right: none; + border-left: 1px solid #D9D9D9; +} +.rtl .widget-box-overlay { + text-align: center; +} +.rtl .widget-box-overlay > .loading-icon { + text-align: center; +} +.rtl .progress[data-percent]:after { + text-align: center; +} +.rtl .infobox-container { + text-align: center; +} +.rtl .infobox { + margin: -1px -1px 0 0; + padding: 8px 9px 6px 3px; + text-align: right; +} +.rtl .infobox > .infobox-icon > .ace-icon { + padding: 1px 2px 0 1px; + text-align: center; + -webkit-box-shadow: -1px 1px 0 rgba(0,0,0,0.2); + box-shadow: -1px 1px 0 rgba(0,0,0,0.2); +} +.rtl .infobox > .infobox-icon > .ace-icon:before { + text-align: center; +} +.rtl .infobox > .infobox-data { + text-align: right; + padding-left: 0; + padding-right: 8px; +} +.rtl .infobox-dark { + margin: 1px 0 0 1px; +} +.rtl .infobox > .infobox-chart { + text-align: center; +} +.rtl .infobox > .stat { + right: auto; + padding-right: 0; + left: 20px; + padding-left: 18px; +} +.rtl .infobox > .stat:before { + right: auto; + left: 4px; +} +.rtl .infobox > .stat:after { + right: auto; + left: 1px; +} +.rtl .infobox > .badge { + right: auto; + left: 20px; +} +.rtl .infobox.infobox-dark > .badge { + right: auto; + left: 2px; +} +.rtl .infobox-small { + text-align: right; +} +.rtl .infobox-small > .infobox-data { + text-align: right; +} +.rtl .infobox-small > .infobox-chart > .sparkline { + margin-left: auto; + margin-right: 2px; +} +.rtl .infobox-small .percentage { + margin-left: auto; + margin-right: 2px; +} +.rtl .pricing-box:not(:first-child) { + padding-left: 0; + padding-right: 7px; +} +.rtl .pricing-box:not(:last-child) { + padding-right: 0; + padding-left: 7px; +} +.rtl .pricing-box .price { + text-align: center; +} +.rtl .pricing-box .widget-header { + text-align: center; + padding-left: 0; + padding-right: 0; +} + +@media only screen and (max-width: 480px) { +.rtl .pricing-box { + margin-left: auto; + margin-right: -1px; +} +.rtl .pricing-box:nth-child(odd) { + padding-left: 0 !important; + padding-right: 12px !important; +} +.rtl .pricing-box:nth-child(even) { + padding-right: 0 !important; + padding-left: 12px !important; +} +} +.rtl .pricing-table-header { + text-align: right; +} +.rtl .pricing-table-header > li { + padding: 7px 11px 7px 0; +} +.rtl .pricing-table > li { + text-align: center; +} +.rtl .pricing-box-small { + margin-left: auto; + margin-right: -2px; +} +.rtl .pricing-box-small .price { + text-align: center; +} +.rtl .pricing-box-small:hover { + box-shadow: -0 0 4px 2px rgba(0, 0, 0, 0.15); +} +.rtl .pricing-span { + float: right !important; +} +.rtl .pricing-span-header { + padding-right: 0; + padding-left: 0; +} + +@media only screen and (max-width: 480px) { +.rtl .pricing-span-header,.rtl .pricing-span-body { + padding-right: 0; + padding-left: 12px; +} +} +.rtl .login-box .toolbar > div:first-child { + float: right; + text-align: right; +} +.rtl .login-box .toolbar > div:first-child > a { + margin-left: auto; + margin-right: 11px; +} +.rtl .login-box .toolbar > div:first-child + div { + float: left; + text-align: left; +} +.rtl .login-box .toolbar > div:first-child + div > a { + margin-right: auto; + margin-left: 11px; +} +.rtl .social-or-login { + text-align: center; +} +.rtl .light-login .widget-box { + -webkit-box-shadow: -0 0 2px 1px rgba(0, 0, 0, 0.12); + box-shadow: -0 0 2px 1px rgba(0, 0, 0, 0.12); +} +.rtl .invoice-info-label { + text-align: left; +} +.rtl .invoice-box .label-large[class*="arrowed"] { + margin-left: auto !important; + margin-right: 11px !important; +} +.rtl .ace-thumbnails > li { + float: right; +} +.rtl .ace-thumbnails > li .tags { + right: auto; + direction: ltr; + left: 0; +} +.rtl .ace-thumbnails > li .tags > .label-holder { + margin: 1px 0 0 0; + direction: rtl; + text-align: right; +} +.rtl .ace-thumbnails > li > .tools { + left: auto; + text-align: center; + right: -30px; +} +.rtl .ace-thumbnails > li > :first-child > .text { + text-align: center; +} +.rtl .ace-thumbnails > li > :first-child > .text:before { + margin-right: auto; + margin-left: 0; +} + +@media only screen and (max-width: 480px) { +.rtl .ace-thumbnails { + text-align: center; +} +} +.rtl .itemdiv { + padding-right: 0; + padding-left: 3px; +} +.rtl .itemdiv > .user { + left: auto; + right: 0; +} +.rtl .itemdiv > .body { + margin-left: 12px; + margin-right: 50px; +} +.rtl .itemdiv > .body > .time { + right: auto; + left: 9px; +} +.rtl .itemdiv > .body > .text { + padding-left: 0; + padding-right: 7px; +} +.rtl .itemdiv > .body > .text:after { + left: -12px; + right: 16px; +} +.rtl .itemdiv > .body > .text > .ace-icon:first-child { + margin-right: auto; + margin-left: 4px; +} +.rtl .itemdiv.dialogdiv:before { + left: auto; + right: 19px; +} +.rtl .itemdiv.dialogdiv > .body { + border-left-width: transparent; + margin-right: auto; + border-right-width: 2px; + margin-left: 1px; +} +.rtl .itemdiv.dialogdiv > .body:before { + left: auto; + border-width: 2px 2px 0 0; + right: -7px; +} +.rtl .itemdiv.dialogdiv > .body > .time { + float: left; +} +.rtl .itemdiv.dialogdiv > .body > .text { + padding-left: 0; + padding-right: 0; +} +.rtl .itemdiv.memberdiv { + float: right; +} +.rtl .itemdiv .tools { + right: auto; + left: 5px; +} +.rtl .itemdiv.commentdiv .tools { + right: auto; + left: 9px; +} +.rtl li[class*="item-"] { + border-left-width: transparent; + border-right-width: 3px; +} +.rtl li.item-orange { + border-left-color: transparent; + border-right-color: #e8b110; +} +.rtl li.item-orange2 { + border-left-color: transparent; + border-right-color: #f79263; +} +.rtl li.item-red { + border-left-color: transparent; + border-right-color: #d53f40; +} +.rtl li.item-red2 { + border-left-color: transparent; + border-right-color: #d15b47; +} +.rtl li.item-green { + border-left-color: transparent; + border-right-color: #9abc32; +} +.rtl li.item-green2 { + border-left-color: transparent; + border-right-color: #0490a6; +} +.rtl li.item-blue { + border-left-color: transparent; + border-right-color: #4f99c6; +} +.rtl li.item-blue2 { + border-left-color: transparent; + border-right-color: #3983c2; +} +.rtl li.item-blue3 { + border-left-color: transparent; + border-right-color: #1144eb; +} +.rtl li.item-pink { + border-left-color: transparent; + border-right-color: #cb6fd7; +} +.rtl li.item-purple { + border-left-color: transparent; + border-right-color: #6f3cc4; +} +.rtl li.item-black { + border-left-color: transparent; + border-right-color: #505050; +} +.rtl li.item-grey { + border-left-color: transparent; + border-right-color: #a0a0a0; +} +.rtl li.item-brown { + border-left-color: transparent; + border-right-color: #a52a2a; +} +.rtl li.item-default { + border-left-color: transparent; + border-right-color: #abbac3; +} +.rtl .profile-info-name { + text-align: left; + padding: 6px 4px 6px 10px; +} +.rtl .profile-info-value { + padding: 6px 6px 6px 4px; +} +.rtl .profile-info-value > span + span:before { + margin-left: 3px; + margin-right: 1px; +} +.rtl .profile-user-info-striped .profile-info-value { + padding-left: 0; + padding-right: 12px; +} +.rtl .profile-picture { + box-shadow: -1px 1px 1px rgba(0, 0, 0, 0.15); +} +.rtl .profile-activity img { + margin-right: 0px; + margin-left: 10px; +} +.rtl .profile-activity .thumbicon { + text-align: center; + margin-right: 0px; + margin-left: 10px; +} +.rtl .profile-activity .tools { + right: auto; + left: 12px; +} +.rtl .profile-users .user { + text-align: center; +} +.rtl .profile-users .user img:hover { + -webkit-box-shadow: -0 0 1px 1px rgba(0,0,0,0.33); + box-shadow: -0 0 1px 1px rgba(0,0,0,0.33); +} +.rtl .profile-users .memberdiv { + text-align: center; +} +.rtl .profile-users .memberdiv .body { + margin: 8px 0 0 0; +} +.rtl .user-status { + margin-right: auto; + margin-left: 1px; +} +.rtl .tab-content.profile-edit-tab-content { + -webkit-box-shadow: -1px 1px 0 0 rgba(0, 0, 0, 0.2); + box-shadow: -1px 1px 0 0 rgba(0, 0, 0, 0.2); +} + +@media only screen and (max-width: 480px) { +.rtl .profile-user-info-striped .profile-info-name { + text-align: right; + padding: 6px 10px 6px 4px; +} +.rtl .profile-user-info-striped .profile-info-value { + margin-left: auto; + margin-right: 10px; +} +} + +@media only screen and (max-width: 479px) { +.rtl .inbox-tabs > .li-new-mail { + text-align: left; +} +} +.rtl .message-item .sender { + margin: 0 4px 0 6px; +} +.rtl .message-item .summary { + margin-left: auto; + margin-right: 30px; +} +.rtl .message-item .summary .message-flags { + right: auto; + margin-right: auto; + left: 100%; + margin-left: 4px; +} +.rtl .message-item .time { + float: left; +} +.rtl .message-item .attachment { + float: left; +} +.rtl .message-star { + margin: 2px 6px 0 4px; +} +.rtl .mail-tag:empty { + margin: 0 0 0 1px; +} + +@media only screen and (max-width: 550px) { +.rtl .message-item .summary { + margin: 8px 32px 0 0; +} +} +.rtl .message-content { + -webkit-box-shadow: -0 0 1px 1px rgba(0,0,0,0.02); + box-shadow: -0 0 1px 1px rgba(0,0,0,0.02); +} +.rtl .message-navbar { + text-align: center; +} +.rtl .message-footer input[type=text] { + text-align: center; +} +.rtl .message-footer-style2 .pagination > li > a,.rtl .message-footer-style2 .pagination > li > span { + text-align: center; +} +.rtl .message-loading-overlay { + text-align: center; +} +.rtl .message-loading-overlay > .ace-icon { + text-align: center; +} +.rtl ul.attachment-list { + margin: 6px 8px 4px 0; +} +.rtl .attached-file > .ace-icon { + margin-right: auto; + margin-left: 2px; +} +.rtl .message-navbar .nav-search { + right: 5px; + left: auto; +} +.rtl .inbox-folders .btn > .ace-icon:first-child { + text-align: right; +} +.rtl .inbox-folders .btn.active:before { + left: auto; + border-left: none; + right: -1px; + border-right: 3px solid #4F99C6; +} +.rtl .inbox-folders .btn .counter { + right: auto; + left: 8px; +} +.rtl .timeline-container:before { + left: auto; + right: 28px; +} +.rtl .timeline-item .transparent.widget-box { + border-left: none; + border-right: 3px solid #DAE1E5; +} +.rtl .timeline-item .transparent .widget-header > .widget-title { + margin-left: auto; + margin-right: 8px; +} +.rtl .timeline-item:nth-child(even) .widget-box.transparent { + border-left-color: transparent !important; + border-right-color: #DBDBDB !important; +} +.rtl .timeline-item .widget-box { + margin-left: auto; + margin-right: 60px; +} +.rtl .timeline-info { + float: right; + text-align: center; +} +.rtl .timeline-container:not(.timeline-style2) .timeline-indicator { + text-align: center; +} +.rtl .timeline-label { + margin-left: auto; + margin-right: 34px; +} +.rtl .timeline-style2 .timeline-item:before { + left: auto; + right: 90px; +} +.rtl .timeline-style2 .timeline-item .transparent.widget-box { + border-left: none !important; + border-right: none !important; +} +.rtl .timeline-style2 .timeline-indicator { + left: auto; + right: 85px; +} +.rtl .timeline-style2 .timeline-date { + text-align: left; + margin-right: auto; + margin-left: 25px; +} +.rtl .timeline-style2 .timeline-item .widget-box { + margin-left: auto; + margin-right: 112px; +} +.rtl .timeline-style2 .timeline-label { + text-align: left; + margin-left: auto; + margin-right: 0; +} +.rtl .timeline-time { + text-align: center; +} +.rtl .dataTables_filter { + text-align: left; +} +.rtl .dataTables_paginate { + text-align: left; +} +.rtl .dataTable > thead > tr > th[class*=sort]:after { + float: left; +} +.rtl ul.ColVis_collection > li.ColVis_Special > a { + text-align: center; +} +.rtl div.ColVis_collectionBackground { + left: auto; + right: 0; +} +.rtl .fc-event { + padding: 1px 2px 2px 1px; +} +.rtl .fc-state-default,.rtl .fc-state-default .fc-button-inner { + margin-left: auto; + margin-right: 2px; +} +.rtl .fc .fc-button-group > * { + margin: 0 0 0 1px; +} +.rtl .external-event > .ace-icon:first-child { + text-align: center; + margin-right: auto; + border-right: none; + margin-left: 5px; + border-left: 1px solid #FFF; +} + +@media only screen and (max-width: 480px) { +.rtl .fc-header td { + text-align: right; +} +} +.rtl .select2-container .select2-choice .select2-arrow b:before { + left: auto; + right: 5px; +} +.rtl .select2-search:after { + left: auto; + right: -20px; +} +.rtl .select2-container-multi.tag-input-style .select2-choices .select2-search-choice { + margin-right: auto; + padding: 6px 9px 7px 22px; + margin-left: 0; +} +.rtl .select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close { + right: auto; + left: 0; + text-align: center; +} +.rtl #cboxCurrent { + left: auto; + right: 64px; +} +.rtl #cboxNext,.rtl #cboxPrevious,.rtl #cboxClose { + text-align: center; + margin-left: auto; + margin-right: 5px; +} +.rtl #cboxClose { + margin-left: auto; + right: auto; + margin-right: 0; + left: -14px; +} +.rtl #cboxLoadingGraphic { + text-align: center; +} +.rtl #cboxLoadingGraphic > .ace-icon { + text-align: center; +} +.rtl .ace-spinner .spinbox-buttons.btn-group-vertical > .btn { + margin-left: auto; + margin-right: 0; +} +.rtl .steps li { + text-align: center; +} +.rtl .steps li .step { + text-align: center; +} +.rtl .steps li:first-child:before { + left: auto; + right: 50%; +} +.rtl .steps li.complete .step:before { + text-align: center; +} +.rtl .steps li .title { + text-align: center; +} +.rtl .wizard-actions { + text-align: left; +} +.rtl .tree { + padding: 0 9px 0 0; +} +.rtl .tree:before { + left: auto; + border-width: 0 1px 0 0; + right: 0; +} +.rtl .tree .tree-branch > .tree-branch-header > .tree-branch-name > .tree-label { + margin-left: auto; + margin-right: 2px; +} +.rtl .tree .tree-branch > .tree-branch-header > .tree-branch-name > .ace-icon:first-child { + margin: -2px -2px 0 0; +} +.rtl .tree .tree-branch:last-child:after { + left: auto; + border-left: none; + right: -15px; + border-right: 1px solid #FFF; +} +.rtl .tree .tree-branch .tree-branch-children { + margin: 0 23px 0 0; +} +.rtl .tree .tree-branch .tree-branch-children:before { + left: auto; + border-width: 0 1px 0 0; + right: -14px; +} +.rtl .tree .tree-item > .tree-item-name > .ace-icon:first-child { + margin-right: auto; + margin-left: 3px; +} +.rtl .tree .tree-branch:before,.rtl .tree .tree-item:before { + left: auto; + right: -13px; +} +.rtl .tree .tree-item > .tree-item-name > .ace-icon:first-child { + text-align: center; + box-shadow: -0 1px 2px rgba(0, 0, 0, 0.05); +} +.rtl .tree .tree-plus.ace-icon:first-child,.rtl .tree .tree-minus.ace-icon:first-child { + text-align: center; +} +.rtl .tree .tree-plus.ace-icon:first-child:before,.rtl .tree .tree-minus.ace-icon:first-child:before { + left: auto; + right: 2px; +} +.rtl .tree .tree-plus.ace-icon:first-child:after { + border-left: none; + left: auto; + border-right: 1px solid #4D6878; + right: 5px; +} +.rtl .tree .tree-unselectable .tree-item > .tree-item-name > .tree-label > .ace-icon:first-child { + text-align: center; +} +.rtl .tree .tree-loading { + margin-left: auto; + margin-right: 36px; +} +.rtl .gritter-item-wrapper { + box-shadow: -0 2px 10px rgba(50, 50, 50, 0.5); +} +.rtl .gritter-close { + left: 3px; + right: auto; + text-align: center; +} +.rtl .wysiwyg-toolbar .btn-group > .btn { + text-align: center; + margin-left: auto; + margin-right: 1px; +} +.rtl .wysiwyg-toolbar .btn-group > .btn.dropdown-toggle > .ace-icon:last-child { + margin-right: auto; + margin-left: 4px; +} +.rtl .wysiwyg-style1 .btn-group:after,.rtl .wysiwyg-style2 .btn-group:after { + left: auto; + border-left: none; + right: -2px; + border-right: 1px solid #E1E6EA; +} +.rtl .wysiwyg-style2 .btn-group > .btn,.rtl .wysiwyg-style2 .btn-group > .inline > .btn { + margin: 0 0 0 1px !important; +} +.rtl .wysiwyg-toolbar .btn-colorpicker { + background: -webkit-gradient(linear, right top, left bottom, color-stop(10%, #cf3e73), color-stop(20%, #ffffff), color-stop(30%, #2283c5), color-stop(40%, #ffffff), color-stop(50%, #87b87f), color-stop(60%, #ffffff), color-stop(70%, #ffb752), color-stop(80%, #ffffff), color-stop(90%, #d15b47), color-stop(100%, #ffffff)); +} +.rtl .wysiwyg-style1 .btn-colorpicker { + margin-left: auto; + margin-right: 4px; +} + +@media screen and (-webkit-min-device-pixel-ratio: 0) { +.rtl .wysiwyg-editor .ui-wrapper:after { + right: auto; + left: -3px; +} +} +.rtl .wysiwyg-speech-input { + right: auto; + left: 0; +} +.rtl .widget-body .md-header { + margin-left: auto; + margin-right: 9px; +} +.rtl .widget-body .md-header .btn { + text-align: center; +} +.rtl .widget-body .md-header .btn-inverse { + padding-right: 0; + margin-left: auto; + padding-left: 5px; + margin-right: 4px; +} +.rtl .editable-buttons { + margin-left: auto; + margin-right: 1px; +} +.rtl .editable-buttons .btn { + margin: 0 0 0 1px; +} +.rtl .editable-clear-x:before { + text-align: center; +} +.rtl .editable-input .ace-spinner { + margin-right: auto; + margin-left: 8px; +} +.rtl .editable-inline .editable-slider { + margin-right: auto; + margin-left: 4px; +} +.rtl .editable-image + .editable-buttons,.rtl .editable-wysiwyg + .editable-buttons { + text-align: center; +} +.rtl .ui-datepicker { + -webkit-box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); +} +.rtl .ui-datepicker .ui-datepicker-prev,.rtl .ui-datepicker .ui-datepicker-next { + text-align: center; +} +.rtl .ui-datepicker .ui-datepicker-prev-hover { + left: auto; + right: 2px; +} +.rtl .ui-datepicker .ui-datepicker-next-hover { + right: auto; + left: 2px; +} +.rtl .ui-datepicker td > a,.rtl .ui-datepicker td > span { + text-align: center; +} +.rtl .ui-dialog,.rtl .ui-jqdialog { + -webkit-box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); +} +.rtl .ui-dialog .widget-header,.rtl .ui-jqdialog .widget-header { + border-width: 0 0 1px 0; +} +.rtl .ui-dialog .ui-dialog-titlebar-close,.rtl .ui-jqdialog .ui-dialog-titlebar-close,.rtl .ui-dialog .ui-jqdialog-titlebar-close,.rtl .ui-jqdialog .ui-jqdialog-titlebar-close { + right: auto !important; + text-align: center; + left: 8px !important; +} +.rtl .ui-dialog .widget-header .ui-dialog-titlebar-close,.rtl .ui-jqdialog .widget-header .ui-dialog-titlebar-close,.rtl .ui-dialog .widget-header .ui-jqdialog-titlebar-close,.rtl .ui-jqdialog .widget-header .ui-jqdialog-titlebar-close { + right: auto !important; + left: 10px !important; +} +.rtl .ui-accordion .ui-accordion-header { + padding: 8px 24px 9px 8px; +} +.rtl .ui-accordion .ui-accordion-header .ui-accordion-header-icon { + left: auto; + right: 10px; +} +.rtl .ui-tabs .ui-tabs-nav li.ui-state-default > a { + margin-right: auto; + margin-left: -1px; +} +.rtl .ui-tabs .ui-tabs-nav li.ui-tabs-active > a { + -webkit-box-shadow: -0 -2px 3px 0 rgba(0, 0, 0, 0.15); + box-shadow: -0 -2px 3px 0 rgba(0, 0, 0, 0.15); +} +.rtl .ui-menu { + -webkit-box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); +} +.rtl .ui-menu .ui-menu-item .ui-menu-icon { + float: left; + left: 4px; + right: auto; +} +.rtl .ui-autocomplete { + -webkit-box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); +} +.rtl .ui-spinner-button { + text-align: center; +} +.rtl .ui-spinner-up { + right: auto; + left: 5px; +} +.rtl .ui-spinner-down { + right: auto; + left: 5px; +} +.rtl .ui-jqgrid .ui-jqgrid-title { + float: right; +} +.rtl .ui-jqgrid .ui-jqgrid-hdiv { + border-width: 1px 1px 0 0; +} +.rtl .ui-jqgrid tr.ui-state-highlight.ui-row-ltr td { + border-right-color: transparent; + border-left-color: #C7D3A9; +} +.rtl .ui-jqgrid .ui-pg-input { + text-align: center; +} +.rtl .ui-jqgrid .ui-jqgrid-btable { + border-left: none; + border-right: 1px solid #E1E1E1; +} +.rtl .ui-jqgrid .loading { + left: auto; + text-align: center; + right: 45%; +} +.rtl .ui-jqgrid .ui-jqgrid-labels { + border-left: none !important; + border-right: 1px solid #E1E1E1 !important; +} +.rtl .ui-jqgrid .ui-jqgrid-labels th { + border-right: none !important; + text-align: right !important; + border-left: 1px solid #E1E1E1 !important; +} +.rtl .ui-jqgrid-labels th[id*="_cb"]:first-child > div { + text-align: center !important; +} +.rtl .ui-jqgrid-sortable { + padding-left: 0; + padding-right: 4px; +} +.rtl .ui-jqgrid .ui-icon { + right: auto; + left: 2px; +} +.rtl .ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon { + text-align: center; +} +.rtl .ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon:before { + text-align: center; +} +.rtl .ui-pg-div .ui-icon { + text-align: center; +} +.rtl .ui-jqdialog-content .CaptionTD { + text-align: left; +} +.rtl .EditTable .navButton .fm-button .ace-icon { + text-align: center; +} +.rtl .ui-jqdialog-content .searchFilter table { + margin-left: auto; + margin-right: 4px; +} +.rtl .ui-jqdialog-content .searchFilter .add-group,.rtl .ui-jqdialog-content .searchFilter .add-rule,.rtl .ui-jqdialog-content .searchFilter .delete-group { + margin-left: auto !important; + margin-right: 4px !important; +} +.rtl .ui-jqdialog .ui-widget-header .ui-jqdialog-title { + padding-left: 0; + text-align: right; + padding-right: 12px; +} +.rtl .ui-jqgrid .ui-jqgrid-titlebar-close { + margin: 2px 0 0 8px; + text-align: center; +} + +@media only screen and (max-width: 767px) { +.rtl .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center > .ui-pg-table { + text-align: center; +} +} +.rtl .dd-list .dd-list { + padding-left: 0; + padding-right: 30px; +} +.rtl .dd2-handle + .dd2-content,.rtl .dd2-handle + .dd2-content[class*="btn-"] { + padding-left: 0; + padding-right: 44px; +} +.rtl .dd2-item.dd-item > button { + margin-left: auto; + margin-right: 34px; +} +.rtl .dd-item > button { + float: right; + margin: 5px 5px 5px 1px; + text-align: center; + left: auto; + right: 1px; +} +.rtl .dd-item > button:before { + text-align: center; +} +.rtl .dd-dragel > li > .dd-handle { + border-left: none; + border-right: 2px solid #777; +} +.rtl .dd-list > li[class*="item-"] > .dd-handle { + border-left: none; + border-left-color: transparent; + border-right: 2px solid; + border-right-color: inherit; +} +.rtl .dd-list > li > .dd-handle .sticker { + right: auto; + left: 0; +} +.rtl .dd2-handle,.rtl .dd-dragel > li > .dd2-handle { + left: auto; + border-width: 1px 0 0 1px; + text-align: center; + right: 0; +} +.rtl .dd2-handle[class*="btn-"] { + border-right: none; + border-left: 1px solid #EEE; +} +.rtl .dd-dragel .dd2-handle[class*="btn-"] { + border-right-color: transparent; + border-left-color: #EEE; +} +.rtl .dd2-handle.btn-yellow { + border-right: none; + border-left: 1px solid #FFF; +} +.rtl .dd-dragel .dd2-handle.btn-yellow { + border-right-color: transparent; + border-left-color: #FFF; +} +.rtl .dropzone .dz-default.dz-message { + text-align: center; + left: auto; + margin-left: auto; + right: 0; + margin-right: auto; +} +.rtl .dropzone .dz-preview .dz-error-mark,.rtl .dropzone-previews .dz-preview .dz-error-mark,.rtl .dropzone .dz-preview .dz-success-mark,.rtl .dropzone-previews .dz-preview .dz-success-mark { + text-align: center; +} +.rtl .tt-dropdown-menu { + text-align: right; + -webkit-box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: -0 2px 4px rgba(0, 0, 0, 0.2); +} +.rtl .multiselect-container > li > a > label { + padding: 7px 20px 7px 10px; +} +.rtl .btn-scroll-up { + right: auto; + left: 2px; +} + +@media (min-width: 768px) { +.rtl .main-container.container > .btn-scroll-up { + right: auto; + margin-left: auto; + left: auto; + margin-right: 714px; +} +} + +@media (min-width: 992px) { +.rtl .main-container.container > .btn-scroll-up { + right: auto; + margin-left: auto; + left: auto; + margin-right: 934px; +} +} + +@media (min-width: 1200px) { +.rtl .main-container.container > .btn-scroll-up { + right: auto; + margin-left: auto; + left: auto; + margin-right: 1134px; +} +} +.rtl .ace-settings-container { + right: auto; + left: 0; +} +.rtl .btn.btn-app.ace-settings-btn { + float: right; + text-align: center; + border-radius: 0 6px 6px 0; +} +.rtl .ace-settings-box { + float: right; +} + +@media (max-width: 480px) { +.rtl .ace-settings-container { + text-align: left; +} +.rtl .ace-settings-box { + text-align: right; +} +} +.rtl .grid2,.rtl .grid3,.rtl .grid4 { + float: right; + border-left: none; + border-right: 1px solid #E3E3E3; +} +.rtl .grid2:first-child,.rtl .grid3:first-child,.rtl .grid4:first-child { + border-left: none; + border-right: none; +} +.rtl .easyPieChart,.rtl .easy-pie-chart { + text-align: center; +} +.rtl .easyPieChart canvas,.rtl .easy-pie-chart canvas { + left: auto; + right: 0; +} +.rtl .knob-container { + direction: rtl; + text-align: right; +} +.rtl .tags[class*="span"] { + margin-left: auto; + margin-right: 0; +} +.rtl .tags .tag { + padding: 4px 9px 5px 22px; + margin-right: auto; + margin-left: 3px; +} +.rtl .tags .tag .close { + right: auto; + text-align: center; + left: 0; +} +.rtl .page-content > .row .col-xs-12,.rtl .page-content > .row .col-sm-12,.rtl .page-content > .row .col-md-12,.rtl .page-content > .row .col-lg-12 { + float: right; +} +.rtl .legendLabel { + padding-left: 0; + padding-right: 2px; +} + +@media only screen and (max-width: 360px) { +.rtl .grid2,.rtl .grid3,.rtl .grid4 { + border-left-width: transparent; + border-right-width: 0; +} +.rtl .grid2 > [class*="pull-"],.rtl .grid3 > [class*="pull-"],.rtl .grid4 > [class*="pull-"] { + right: auto; + left: 11px; +} +} +.rtl.no-skin .sidebar { + border-width: 0 0 0 1px; +} +.rtl.no-skin .nav-list li > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-width: 10px 0 10px 10px; + left: auto; + border-left-color: #B8B8B8; + -moz-border-left-colors: #B8B8B8; + right: -11px; +} +.rtl.no-skin .nav-list li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-width: 10px 0 10px 10px; + left: auto; + border-left-color: #ffffff; + -moz-border-left-colors: #ffffff; + right: -10px; +} +.rtl.no-skin .nav-list > li.pull_up > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-width: 10px 0 10px 10px !important; + left: auto !important; + border-left-color: #ffffff !important; + -moz-border-left-colors: #ffffff !important; + right: -10px !important; +} +.rtl.no-skin .nav-list > li.pull_up > .arrow:before { + border-width: 10px 0 10px 10px !important; + left: auto !important; + right: -11px !important; +} +.rtl.no-skin .nav-list li.active > a:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #2b7dbc; + -moz-border-left-colors: #2b7dbc; +} +.rtl.no-skin .nav-list > li.active:after { + right: auto; + border-width: 0 0 0 2px; + left: -2px; +} +.rtl.no-skin .sidebar-scroll .nav-list > li.active:after { + right: auto; + left: 0; +} +.rtl.no-skin .sidebar.menu-min .nav-list > li > a > .menu-text { + -webkit-box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); +} +.rtl.no-skin .sidebar.menu-min .nav-list > li > a.dropdown-toggle > .menu-text { + -webkit-box-shadow: -2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 2px 2px 0 rgba(0,0,0,0.1); +} +.rtl.no-skin .sidebar.menu-min .nav-list > li.active > .submenu { + border-left-color: transparent; + border-right-color: #83b6d1; +} +.rtl.no-skin .sidebar.menu-min .nav-list > li > .submenu { + -webkit-box-shadow: -2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 2px 2px 0 rgba(0,0,0,0.1); +} +.rtl.no-skin .sidebar.menu-min .nav-list > li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-width: 8px 0 8px 8px; + left: auto; + border-left-color: #f5f5f5; + -moz-border-left-colors: #f5f5f5; + right: -8px; +} +.rtl.no-skin .sidebar.menu-min .nav-list > li > .arrow:before { + border-width: 8px 0 8px 8px; + left: auto; + right: -9px; +} +.rtl.no-skin .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #5a9ec2; + -moz-border-left-colors: #5a9ec2; +} +.rtl.no-skin .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: transparent; + border-right-color: #83b6d1; +} +.rtl.no-skin .sidebar.menu-min .sidebar-shortcuts-large { + -webkit-box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); +} + +@media (max-width: 991px) { +.rtl.no-skin .sidebar.responsive-min .nav-list > li > a > .menu-text { + -webkit-box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); +} +.rtl.no-skin .sidebar.responsive-min .nav-list > li > a.dropdown-toggle > .menu-text { + -webkit-box-shadow: -2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 2px 2px 0 rgba(0,0,0,0.1); +} +.rtl.no-skin .sidebar.responsive-min .nav-list > li.active > .submenu { + border-left-color: transparent; + border-right-color: #83b6d1; +} +.rtl.no-skin .sidebar.responsive-min .nav-list > li > .submenu { + -webkit-box-shadow: -2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 2px 2px 0 rgba(0,0,0,0.1); +} +.rtl.no-skin .sidebar.responsive-min .nav-list > li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-width: 8px 0 8px 8px; + left: auto; + border-left-color: #f5f5f5; + -moz-border-left-colors: #f5f5f5; + right: -8px; +} +.rtl.no-skin .sidebar.responsive-min .nav-list > li > .arrow:before { + border-width: 8px 0 8px 8px; + left: auto; + right: -9px; +} +.rtl.no-skin .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #5a9ec2; + -moz-border-left-colors: #5a9ec2; +} +.rtl.no-skin .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + border-left-color: transparent; + border-right-color: #83b6d1; +} +.rtl.no-skin .sidebar.responsive-min .sidebar-shortcuts-large { + -webkit-box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); +} +} + +@media only screen and (min-width: 992px) { +.rtl.no-skin .nav-list li.hover > .submenu { + -webkit-box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); +} +} + +@media only screen and (min-width: 992px) { +.rtl.no-skin .sidebar.h-sidebar:before { + -webkit-box-shadow: -0 -1px 1px 0 rgba(0, 0, 0, 0.05) inset; + box-shadow: -0 -1px 1px 0 rgba(0, 0, 0, 0.05) inset; +} +.rtl.no-skin .sidebar.h-sidebar .nav-list > li:hover,.rtl.no-skin .sidebar.h-sidebar .nav-list > li:hover + li { + border-left-color: transparent; + border-right-color: #cedde5; +} +.rtl.no-skin .sidebar.h-sidebar .nav-list > li:last-child:hover { + border-right-color: transparent; + border-left-color: #cedde5; +} +.rtl.no-skin .sidebar.h-sidebar .nav-list > li.active,.rtl.no-skin .sidebar.h-sidebar .nav-list > li.active + li,.rtl.no-skin .sidebar.h-sidebar .nav-list > li:hover + li.active { + border-left-color: transparent; + border-right-color: #79b0ce; +} +.rtl.no-skin .sidebar.h-sidebar .nav-list > li.active:last-child { + border-right-color: transparent; + border-left-color: #79b0ce; +} +.rtl.no-skin .sidebar.h-sidebar .nav-list > li.active > a:after { + border-width: 0 0 2px 0; +} +.rtl.no-skin .sidebar.h-sidebar .sidebar-shortcuts-large { + -webkit-box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: -2px 1px 2px 0 rgba(0,0,0,0.1); +} +.rtl.no-skin .sidebar.h-sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: transparent; + border-right-color: #cccccc; +} +} + +@media only screen and (max-width: 991px) { +.rtl.no-skin .sidebar { + border-width: 0 0 1px 1px; +} +.rtl.no-skin .sidebar.responsive-min { + border-width: 0 0 0 1px; +} +.rtl.no-skin .sidebar.navbar-collapse { + -webkit-box-shadow: -0 2px 2px rgba(0, 0, 0, 0.1) !important; + box-shadow: -0 2px 2px rgba(0, 0, 0, 0.1) !important; +} +} +.rtl.no-skin .nav-list > li.highlight.active > a:before,.rtl.no-skin .nav-list > li.highlight.active > a:after { + right: auto; + border-width: 20px 10px 21px 0; + left: -10px; +} +.rtl.no-skin .nav-list > li.highlight.active > a:before { + border-left-color: transparent; + -moz-border-left-colors: none; + right: auto; + border-right-color: #a0bccd; + -moz-border-right-colors: #a0bccd; + left: -11px; +} +.rtl.no-skin .nav-list > li.highlight.active > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #f2f6f9; + -moz-border-right-colors: #f2f6f9; +} + +@media (min-width: 992px) { +.rtl.no-skin .sidebar.h-sidebar .nav-list > li.highlight.active > a:after { + left: auto; + right: 50%; + margin-left: auto; + margin-right: -7px; +} +.rtl.no-skin .sidebar.h-sidebar .nav-list > li.highlight.active > a:before { + left: auto; + right: 50%; + margin-left: auto; + margin-right: -7px; +} +} +.rtl .onpage-help-section { + text-align: center; +} +.rtl .onpage-help-section > .help-icon-1 { + left: auto; + box-shadow: -0 0 2px 1px rgba(0, 0, 0, 0.4); + right: 50%; +} +.rtl .onpage-help-section > .help-icon-2 { + left: auto; + right: -4px; +} + +@media print { +.rtl .main-content .breadcrumbs { + float: left; +} +} +.rtl.skin-1 .sidebar { + border-right-width: transparent; + border-left-width: 0; +} +.rtl.skin-1 .nav-list li.active > a:after { + border-right-color: transparent; + -moz-border-right-colors: none; + right: auto; + border-left-color: #FFF; + -moz-border-left-colors: #FFF; + left: 0; +} +.rtl.skin-1 .sidebar .nav-list > li.active.highlight > a:after { + border-right-color: #141a1b; + -moz-border-right-colors: #141a1b; + border-left-color: transparent; + -moz-border-left-colors: none; + border-width: 20px 10px 20px 0; + right: auto; + left: -10px; +} +.rtl.skin-1 .sidebar .nav-list > li.active.highlight > a:before { + border-left-color: transparent; + -moz-border-left-colors: none; + border-width: 20px 10px 20px 0; + right: auto; + border-right-color: #506b7f; + -moz-border-right-colors: #506b7f; + left: -11px; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li.active.highlight > a:after { + border-width: 20px 10px 20px 0; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li.active:hover > a:after { + border-right-color: transparent; + border-left-color: #242a2b; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: transparent; + border-right-color: #305675; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li.active > a:not(.dropdown-toggle) > .menu-text { + border-right-color: transparent; + border-left-color: #4a5c63; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li > a > .menu-text,.rtl.skin-1 .sidebar.menu-min .nav-list > li > .submenu { + border-left: none; + border-right: 1px solid #181d1f; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li.active > .submenu { + border-left-color: transparent; + border-right-color: #305675; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #414b51; + -moz-border-left-colors: #414b51; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #111415; + -moz-border-left-colors: #242a2b; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li.active > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #242a2b; + -moz-border-left-colors: #242a2b; +} +.rtl.skin-1 .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #50a0dd; + -moz-border-left-colors: #50a0dd; +} +.rtl.skin-1 .sidebar.menu-min .sidebar-shortcuts-large { + border-width: 0 0 1px 1px; +} + +@media (max-width: 991px) { +.rtl.skin-1 .sidebar.responsive-min .nav-list > li.active.highlight > a:after { + border-width: 20px 10px 20px 0; +} +.rtl.skin-1 .sidebar.responsive-min .nav-list > li.active:hover > a:after { + border-right-color: transparent; + border-left-color: #242a2b; +} +.rtl.skin-1 .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + border-left-color: transparent; + border-right-color: #305675; +} +.rtl.skin-1 .sidebar.responsive-min .nav-list > li.active > a:not(.dropdown-toggle) > .menu-text { + border-right-color: transparent; + border-left-color: #4a5c63; +} +.rtl.skin-1 .sidebar.responsive-min .nav-list > li > a > .menu-text,.rtl.skin-1 .sidebar.responsive-min .nav-list > li > .submenu { + border-left: none; + border-right: 1px solid #181d1f; +} +.rtl.skin-1 .sidebar.responsive-min .nav-list > li.active > .submenu { + border-left-color: transparent; + border-right-color: #305675; +} +.rtl.skin-1 .sidebar.responsive-min .nav-list > li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #414b51; + -moz-border-left-colors: #414b51; +} +.rtl.skin-1 .sidebar.responsive-min .nav-list > li > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #111415; + -moz-border-left-colors: #242a2b; +} +.rtl.skin-1 .sidebar.responsive-min .nav-list > li.active > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #242a2b; + -moz-border-left-colors: #242a2b; +} +.rtl.skin-1 .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #50a0dd; + -moz-border-left-colors: #50a0dd; +} +.rtl.skin-1 .sidebar.responsive-min .sidebar-shortcuts-large { + border-width: 0 0 1px 1px; +} +} + +@media only screen and (min-width: 992px) { +.rtl.skin-1 .nav-list > li.active > .submenu li.hover > .submenu { + border-left-color: transparent; + border-right-color: #475561; +} +.rtl.skin-1 .nav-list li.hover.active > .submenu,.rtl.skin-1 .nav-list li.active > .submenu li.hover.active > .submenu { + border-left-color: transparent; + border-right-color: #305675; +} +} + +@media only screen and (min-width: 992px) and (max-width: 991px) { +.rtl.skin-1 .sidebar.navbar-collapse .nav-list li.hover.active > .submenu,.rtl.skin-1 .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu,.rtl.skin-1 .sidebar.navbar-collapse .nav-list li.active > .submenu li.hover.active > .submenu { + border-left-width: transparent; + border-right-width: 0; +} +} +.rtl.skin-1 .nav-list li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #353c3d; + -moz-border-left-colors: #353c3d; +} +.rtl.skin-1 .nav-list li > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #1d2122; + -moz-border-left-colors: #1d2122; +} +.rtl.skin-1 .nav-list > li.active > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #171e1f; + -moz-border-left-colors: #171e1f; +} +.rtl.skin-1 .nav-list > li.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #50a0dd; + -moz-border-left-colors: #50a0dd; +} +.rtl.skin-1 .nav-list > li.active > .submenu li.hover > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #4f6e86; + -moz-border-left-colors: #8fb6d5; +} +.rtl.skin-1 .nav-list > li.active > .submenu li.hover.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #305675; + -moz-border-left-colors: #2290e9; +} +.rtl.skin-1 .nav-list > li.active > .submenu li.hover > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #171e1f; + -moz-border-left-colors: #171e1f; +} +.rtl.skin-1 .nav-list li.pull_up > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #353c3d !important; + -moz-border-left-colors: #353c3d !important; +} +.rtl.skin-1 .nav-list li.pull_up > .arrow:before { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #1d2122 !important; + -moz-border-left-colors: #1d2122 !important; +} +.rtl.skin-1 .nav-list li.pull_up.active > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #171e1f !important; + -moz-border-left-colors: #171e1f !important; +} +.rtl.skin-1 .nav-list li.pull_up.active > .arrow:before { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #50a0dd !important; + -moz-border-left-colors: #50a0dd !important; +} + +@media only screen and (min-width: 768px) { +.rtl.skin-1 .container.main-container:before { + box-shadow: -0 0 0 1px rgba(255, 255, 255, 0.1); +} +} + +@media only screen and (min-width: 992px) { +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li.hover.active > a:after { + right: 50%; + left: auto; + margin-left: auto; + margin-right: -8px; +} +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li:hover,.rtl.skin-1 .sidebar.h-sidebar .nav-list > li:hover + li { + border-left-color: transparent; + border-right-color: #506575; +} +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li:last-child:hover { + border-right-color: transparent; + border-left-color: #506575; +} +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li.active,.rtl.skin-1 .sidebar.h-sidebar .nav-list > li.active + li,.rtl.skin-1 .sidebar.h-sidebar .nav-list > li:hover + li.active { + border-left-color: transparent; + border-right-color: #55738a; +} +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li.active:last-child { + border-right-color: transparent; + border-left-color: #55738a; +} +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li.hover.active > .submenu { + border-left-color: transparent; + border-right-color: #232828; +} +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: transparent; + -moz-border-left-colors: none; +} +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li > .arrow:before { + -moz-border-right-colors: none; + border-right-color: transparent; + -moz-border-left-colors: none; + border-left-color: transparent; +} +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li.active > .arrow:before,.rtl.skin-1 .sidebar.h-sidebar .sidebar-shortcuts-large:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: transparent; + -moz-border-left-colors: none; +} +.rtl.skin-1 .sidebar.h-sidebar .nav-list > li.active > .arrow:after,.rtl.skin-1 .sidebar.h-sidebar .sidebar-shortcuts-large:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: transparent; + -moz-border-left-colors: none; +} +.rtl.skin-1 .main-content .h-sidebar.sidebar .nav-list { + border-left: none; + border-right: 1px solid #4a5c63; +} +} +.rtl.skin-2 .sidebar { + border-right-width: transparent; + border-left-width: 0; +} +.rtl.skin-2 .nav-list li.active > a:after { + border-right-color: transparent; + -moz-border-right-colors: none; + right: auto; + border-left-color: #FFF; + -moz-border-left-colors: #FFF; + left: 0; +} +.rtl.skin-2 .nav-list > li .submenu > li > a { + padding-left: 0; + padding-right: 32px; +} +.rtl.skin-2 .nav-list > li .submenu > li > a > .menu-icon { + left: auto; + right: 12px; +} + +@media only screen and (min-width: 992px) { +.rtl.skin-2 .nav-list > li .submenu > li.hover > a { + padding-left: 0; + padding-right: 26px; +} +.rtl.skin-2 .nav-list > li .submenu > li.hover > a > .menu-icon { + left: auto; + right: 6px; +} +} +.rtl.skin-2 .nav-list > li > .submenu li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 0; + padding-right: 37px; +} +.rtl.skin-2 .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 0; + padding-right: 51px; +} +.rtl.skin-2 .nav-list li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #45303b; + -moz-border-left-colors: #45303b; +} +.rtl.skin-2 .nav-list li > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #191919; + -moz-border-left-colors: #191919; +} +.rtl.skin-2 .nav-list > li.pull_up > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #45303b !important; + -moz-border-left-colors: #45303b !important; +} +.rtl.skin-2 .nav-list > li.pull_up > .arrow:before { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #191919 !important; + -moz-border-left-colors: #191919 !important; +} +.rtl.skin-2 .nav-list > li.active.highlight > a:after { + border-right-color: #bd5289; + -moz-border-right-colors: #bd5289; + border-left-color: transparent; + -moz-border-left-colors: none; + border-width: 20px 10px 20px 0; + right: auto; + left: -10px; +} +.rtl.skin-2 .nav-list > li:nth-child( 1) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 1) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #2a4137; + -moz-border-left-colors: #2a4137; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 1) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #2a4137 !important; + -moz-border-left-colors: #2a4137 !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 2) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 2) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #36432f; + -moz-border-left-colors: #36432f; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 2) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #36432f !important; + -moz-border-left-colors: #36432f !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 3) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 3) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #3e442a; + -moz-border-left-colors: #3e442a; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 3) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #3e442a !important; + -moz-border-left-colors: #3e442a !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 4) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 4) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #43452a; + -moz-border-left-colors: #43452a; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 4) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #43452a !important; + -moz-border-left-colors: #43452a !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 5) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 5) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #48422a; + -moz-border-left-colors: #48422a; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 5) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #48422a !important; + -moz-border-left-colors: #48422a !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 6) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 6) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #493f2a; + -moz-border-left-colors: #493f2a; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 6) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #493f2a !important; + -moz-border-left-colors: #493f2a !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 7) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 7) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #49372a; + -moz-border-left-colors: #49372a; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 7) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #49372a !important; + -moz-border-left-colors: #49372a !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 8) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 8) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #472e30; + -moz-border-left-colors: #472e30; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 8) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #472e30 !important; + -moz-border-left-colors: #472e30 !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 9) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 9) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #45303b; + -moz-border-left-colors: #45303b; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 9) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #45303b !important; + -moz-border-left-colors: #45303b !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 10) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 10) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #423646; + -moz-border-left-colors: #423646; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 10) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #423646 !important; + -moz-border-left-colors: #423646 !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 11) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 11) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #2e3b47; + -moz-border-left-colors: #2e3b47; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 11) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #2e3b47 !important; + -moz-border-left-colors: #2e3b47 !important; +} +.rtl.skin-2 .nav-list > li:nth-child( 12) > .arrow:after,.rtl.skin-2 .nav-list > li:nth-child( 12) li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #304346; + -moz-border-left-colors: #304346; +} +.rtl.skin-2 .nav-list > li.pull_up:nth-child( 12) > .arrow:after { + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + border-left-color: #304346 !important; + -moz-border-left-colors: #304346 !important; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 1) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #18a665; + -moz-border-right-colors: #18a665; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 2) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #6ab14a; + -moz-border-right-colors: #6ab14a; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 3) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #98bc1b; + -moz-border-right-colors: #98bc1b; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 4) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #b7c51c; + -moz-border-right-colors: #b7c51c; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 5) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #d9b41f; + -moz-border-right-colors: #d9b41f; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 6) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #dfa020; + -moz-border-right-colors: #dfa020; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 7) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #df7220; + -moz-border-right-colors: #df7220; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 8) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #d43a48; + -moz-border-right-colors: #d43a48; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 9) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #bd5289; + -moz-border-right-colors: #bd5289; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 10) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #b975d0; + -moz-border-right-colors: #b975d0; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 11) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #3f8ad0; + -moz-border-right-colors: #3f8ad0; +} +.rtl.skin-2 .nav-list > li.active.highlight:nth-child( 12) > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #4bb9ca; + -moz-border-right-colors: #4bb9ca; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight > a:after { + border-width: 20px 10px 20px 0; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li > a > .menu-text { + border-width: 0 1px 0 0; + margin-left: auto; + margin-right: 1px; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li > .submenu { + border-width: 1px 1px 0 0; + margin-left: auto; + margin-right: 1px; +} +.rtl.skin-2 .sidebar.menu-min .sidebar-shortcuts-large { + border-width: 0 0 1px 1px; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #bd5289; + -moz-border-left-colors: #bd5289; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li > .arrow:before,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: rgba(0, 0, 0, 0.7); + -moz-border-left-colors: rgba(0, 0, 0, 0.7); +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li.active:not(.highlight) > a:not(.dropdown-toggle) > .menu-text { + border-right-color: transparent; + border-left-color: #555555; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li > a > .menu-text,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight > a > .menu-text { + border-left-color: transparent; + border-right-color: rgba(0, 0, 0, 0.5); +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li.pull_up > a > .menu-text,.rtl.skin-2 .sidebar.menu-min .nav-list > li.pull_up.active.highlight > a > .menu-text { + border-left-color: transparent; + border-right-color: rgba(0, 0, 0, 0.7); +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li.pull_up.active:not(.highlight) > a > .menu-text { + border-left-color: transparent; + border-right-color: #666; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 1) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 1) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #18a665; + -moz-border-left-colors: #18a665; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 2) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 2) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #6ab14a; + -moz-border-left-colors: #6ab14a; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 3) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 3) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #98bc1b; + -moz-border-left-colors: #98bc1b; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 4) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 4) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #b7c51c; + -moz-border-left-colors: #b7c51c; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 5) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 5) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #d9b41f; + -moz-border-left-colors: #d9b41f; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 6) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 6) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #dfa020; + -moz-border-left-colors: #dfa020; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 7) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 7) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #df7220; + -moz-border-left-colors: #df7220; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 8) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 8) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #d43a48; + -moz-border-left-colors: #d43a48; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 9) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 9) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #bd5289; + -moz-border-left-colors: #bd5289; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 10) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 10) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #b975d0; + -moz-border-left-colors: #b975d0; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 11) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 11) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #3f8ad0; + -moz-border-left-colors: #3f8ad0; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 12) > .arrow:after,.rtl.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 12) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #4bb9ca; + -moz-border-left-colors: #4bb9ca; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: transparent; + border-right-color: #777; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li.active > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #242424; + -moz-border-left-colors: #242424; +} +.rtl.skin-2 .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #888; + -moz-border-left-colors: #FFF; +} + +@media (max-width: 991px) { +.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight > a:after { + border-width: 20px 10px 20px 0; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li > a > .menu-text { + border-width: 0 1px 0 0; + margin-left: auto; + margin-right: 1px; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li > .submenu { + border-width: 1px 1px 0 0; + margin-left: auto; + margin-right: 1px; +} +.rtl.skin-2 .sidebar.responsive-min .sidebar-shortcuts-large { + border-width: 0 0 1px 1px; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #bd5289; + -moz-border-left-colors: #bd5289; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li > .arrow:before,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: rgba(0, 0, 0, 0.7); + -moz-border-left-colors: rgba(0, 0, 0, 0.7); +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active:not(.highlight) > a:not(.dropdown-toggle) > .menu-text { + border-right-color: transparent; + border-left-color: #555555; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li > a > .menu-text,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight > a > .menu-text { + border-left-color: transparent; + border-right-color: rgba(0, 0, 0, 0.5); +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li.pull_up > a > .menu-text,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.pull_up.active.highlight > a > .menu-text { + border-left-color: transparent; + border-right-color: rgba(0, 0, 0, 0.7); +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li.pull_up.active:not(.highlight) > a > .menu-text { + border-left-color: transparent; + border-right-color: #666; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 1) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 1) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #18a665; + -moz-border-left-colors: #18a665; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 2) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 2) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #6ab14a; + -moz-border-left-colors: #6ab14a; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 3) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 3) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #98bc1b; + -moz-border-left-colors: #98bc1b; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 4) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 4) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #b7c51c; + -moz-border-left-colors: #b7c51c; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 5) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 5) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #d9b41f; + -moz-border-left-colors: #d9b41f; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 6) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 6) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #dfa020; + -moz-border-left-colors: #dfa020; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 7) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 7) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #df7220; + -moz-border-left-colors: #df7220; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 8) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 8) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #d43a48; + -moz-border-left-colors: #d43a48; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 9) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 9) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #bd5289; + -moz-border-left-colors: #bd5289; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 10) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 10) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #b975d0; + -moz-border-left-colors: #b975d0; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 11) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 11) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #3f8ad0; + -moz-border-left-colors: #3f8ad0; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 12) > .arrow:after,.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 12) > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #4bb9ca; + -moz-border-left-colors: #4bb9ca; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + border-left-color: transparent; + border-right-color: #777; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #242424; + -moz-border-left-colors: #242424; +} +.rtl.skin-2 .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #888; + -moz-border-left-colors: #FFF; +} +} + +@media only screen and (max-width: 991px) { +.rtl.skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 0; + padding-right: 42px; +} +.rtl.skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: auto; + padding-left: 0; + margin-right: 0; + padding-right: 58px; +} +} + +@media only screen and (min-width: 992px) and (max-width: 991px) { +.rtl.skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu { + border-left-width: transparent; + border-right-width: 0t; +} +.rtl.skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu > li > a { + margin-left: auto !important; + padding-left: 0 !important; + margin-right: 0 !important; + padding-right: 37px !important; +} +.rtl.skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: auto !important; + padding-left: 0 !important; + margin-right: 0 !important; + padding-right: 51px !important; +} +.rtl.skin-2 .sidebar.navbar-collapse .nav-list li.hover > .submenu li > a { + padding-left: 0 !important; + padding-right: 32px !important; +} +.rtl.skin-2 .sidebar.navbar-collapse .nav-list > li .submenu > li.hover > a > .menu-icon { + left: auto; + right: 12px; +} +.rtl.skin-2 .sidebar.navbar-collapse.menu-min .nav-list li.hover > .submenu li > a { + padding-left: 0; + padding-right: 32px; +} +} + +@media only screen and (max-width: 991px) { +.rtl.skin-2 .sidebar.navbar-collapse.menu-min .nav-list > li > a > .menu-text { + margin-left: auto; + margin-right: 0; +} +.rtl.skin-2 .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu { + margin-left: auto; + margin-right: 0; +} +.rtl.skin-2 .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > a > .menu-icon { + left: auto; + right: 12px; +} +} + +@media only screen and (min-width: 768px) { +.rtl.skin-2 .container.main-container:before { + box-shadow: -0 0 0 1px rgba(255, 255, 255, 0.1); +} +} + +@media only screen and (min-width: 992px) { +.rtl.skin-2 .sidebar.h-sidebar .nav-list > li.hover > .submenu { + margin-left: auto; + margin-right: -1px; +} +.rtl.skin-2 .sidebar.h-sidebar .nav-list > li .submenu > li.hover > a { + padding-left: 0; + padding-right: 22px; +} +.rtl.skin-2 .sidebar.h-sidebar .nav-list > li .submenu > li.hover > a > .menu-icon { + left: auto; + right: 4px; +} +.rtl.skin-2 .sidebar.h-sidebar .nav-list > li.hover.active > a:after { + right: 50%; + left: auto; + margin-left: auto; + margin-right: -8px; +} +.rtl.skin-2 .sidebar.h-sidebar .nav-list > li.active.highlight > .arrow:after { + border-right-color: transparent; + border-left-color: transparent; +} +.rtl.skin-2 .sidebar.h-sidebar .nav-list > li.active.highlight > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: transparent; + -moz-border-left-colors: none; +} +.rtl.skin-2 .sidebar.h-sidebar .nav-list > li.hover > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: transparent; + -moz-border-left-colors: none; +} +.rtl.skin-2 .sidebar.h-sidebar .nav-list > li.hover > .arrow:before { + -moz-border-right-colors: none; + border-right-color: transparent; + -moz-border-left-colors: none; + border-left-color: transparent; +} +.rtl.skin-2 .sidebar.h-sidebar.menu-min .nav-list > li > a > .menu-text { + border-width: 1px 0 0 0; +} +.rtl.skin-2 .main-content .h-sidebar.sidebar .nav-list { + border-left: none; + border-right: 1px solid #575757; +} +} +.rtl.skin-2 .nav-list > li.active.highlight.disabled > a:after,.rtl.skin-2 .nav-list > li.active.highlight > a.disabled:after { + -moz-border-left-colors: none !important; + border-left-color: transparent !important; + -moz-border-right-colors: #555 !important; + border-right-color: #555 !important; +} + +@media (min-width: 768px) { +.rtl.skin-3 .main-container.container:before { + -webkit-box-shadow: -0 0 0 1px rgba(50, 100, 200, 0.1); + box-shadow: -0 0 0 1px rgba(50, 100, 200, 0.1); +} +} +.rtl.skin-3 .sidebar { + border-width: 0 0 0 1px; +} +.rtl.skin-3 .nav-list li.active > a:after { + border-right-color: transparent; + -moz-border-right-colors: none; + right: auto; + border-left-color: #FFF; + -moz-border-left-colors: #FFF; + left: -1px; +} +.rtl.skin-3 .nav-list li.active > a:before { + border-right-color: transparent; + -moz-border-right-colors: none; + right: auto; + border-left-color: #91bad6; + -moz-border-left-colors: #91bad6; + left: 0; +} +.rtl.skin-3 .nav-list > li.highlight.active > a:after { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #f3faff; + -moz-border-right-colors: #f3faff; +} +.rtl.skin-3 .nav-list > li.highlight.active > a:before { + border-left-color: transparent; + -moz-border-left-colors: none; + border-right-color: #91bad6; + -moz-border-right-colors: #91bad6; +} +.rtl.skin-3 .nav-list li > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #7fafcf; + -moz-border-left-colors: #7fafcf; +} +.rtl.skin-3 .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #709FBF; + -moz-border-left-colors: #709FBF; +} +.rtl.skin-3 .sidebar.menu-min .nav-list > li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #EDF3F7; + -moz-border-left-colors: #EDF3F7; +} +.rtl.skin-3 .sidebar.menu-min .nav-list > li.active.highlight > a:after,.rtl.skin-3 .sidebar.menu-min .nav-list > li.active.highlight > a:before { + border-width: 20px 10px 21px 0; +} + +@media only screen and (max-width: 991px) { +.rtl.skin-3 .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #709FBF; + -moz-border-left-colors: #709FBF; +} +.rtl.skin-3 .sidebar.responsive-min .nav-list > li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #EDF3F7; + -moz-border-left-colors: #EDF3F7; +} +.rtl.skin-3 .sidebar.responsive-min .nav-list > li.active.highlight > a:after,.rtl.skin-3 .sidebar.responsive-min .nav-list > li.active.highlight > a:before { + border-width: 20px 10px 21px 0; +} +.rtl.skin-3 .sidebar.responsive-max { + border-width: 0 0 1px 1px; +} +} +.rtl.skin-3 .sidebar-scroll .nav-wrap-up + .sidebar-toggle:after { + right: auto; + border-right: none; + left: -1px; + border-left: 1px solid #a4c6dd; +} +.rtl.skin-3 .sidebar-shortcuts-mini { + padding-left: 0; + padding-right: 1px; +} +.rtl.skin-3 .sidebar-shortcuts-mini > .btn { + margin: 1px 0 0 1px; +} + +@media only screen and (min-width: 992px) { +.rtl.skin-3 .sidebar.h-sidebar .nav-list > li:hover,.rtl.skin-3 .sidebar.h-sidebar .nav-list > li:hover + li { + border-left-color: transparent; + border-right-color: #95bad2; +} +.rtl.skin-3 .sidebar.h-sidebar .nav-list > li:last-child:hover { + border-right-color: transparent; + border-left-color: #95bad2; +} +.rtl.skin-3 .sidebar.h-sidebar .nav-list > li.active,.rtl.skin-3 .sidebar.h-sidebar .nav-list > li.active + li,.rtl.skin-3 .sidebar.h-sidebar .nav-list > li:hover + li.active { + border-left-color: transparent; + border-right-color: #a4c6dd; +} +.rtl.skin-3 .sidebar.h-sidebar .nav-list > li.active:last-child { + border-right-color: transparent; + border-left-color: #a4c6dd; +} +.rtl.skin-3 .sidebar.h-sidebar .nav-list > li.active > a:after { + left: auto; + right: 50%; + margin-left: auto; + -moz-border-right-colors: none; + margin-right: -7px; + -moz-border-left-colors: none; +} +.rtl.skin-3 .sidebar.h-sidebar .nav-list > li.active > a:before { + left: auto; + right: 50%; + margin-left: auto !important; + -moz-border-right-colors: none; + margin-right: -8px !important; + -moz-border-left-colors: none; +} +.rtl.skin-3 .sidebar.h-sidebar .nav-list > li.hover > .arrow:before { + -moz-border-right-colors: none; + border-right-color: transparent; + -moz-border-left-colors: none; + border-left-color: transparent; +} +.rtl.skin-3 .sidebar.h-sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: transparent; + border-right-color: #A4C6DD; +} +} + +.make-rtl { + direction: rtl; + text-align: right; +} +.make-ltr { + direction: ltr; + text-align: left; +} +.rtl { + /** + .navbar-fixed-top + .main-container { + padding-top: @navbar-min-height; + } + @media (max-width: @screen-topbar-down) { + .navbar-fixed-top + .main-container { + padding-top: (@navbar-min-height * 2); + } + .navbar-fixed-top.navbar-collapse + .main-container { + padding-top: @navbar-min-height; + } + } + */ +} +html.rtl, +body.rtl { + direction: rtl; + text-align: right; + overflow-x: hidden; +} +.rtl .nav-scroll.scroll-active .scroll-track { + right: auto; + left: 0; +} +@media only screen and (max-width: 991px) { + .rtl .navbar .navbar-nav > li, + .rtl .navbar .navbar-nav > li:first-child { + border-width: 1px 0 0; + } +} +.rtl .dropdown-menu { + text-align: right; +} +.rtl .ace-switch + .lbl, +.rtl .knob-container { + direction: ltr; + text-align: left; +} +.rtl input.ace[type="checkbox"] + .lbl::before, +.rtl input.ace[type="radio"] + .lbl::before, +.rtl input.ace[type="checkbox"] ~ .lbl::before, +.rtl input.ace[type="radio"] ~ .lbl::before { + margin-right: auto; + margin-left: 1px; +} +.rtl input.ace + .lbl.padding-16::before, +.rtl input.ace ~ .lbl.padding-16::before { + margin-left: 16px; +} +.rtl input.ace + .lbl.padding-12::before, +.rtl input.ace ~ .lbl.padding-12::before { + margin-left: 12px; +} +.rtl input.ace + .lbl.padding-8::before, +.rtl input.ace ~ .lbl.padding-8::before { + margin-left: 8px; +} +.rtl input.ace + .lbl.padding-4::before, +.rtl input.ace ~ .lbl.padding-4::before { + margin-left: 4px; +} +.rtl input.ace + .lbl.padding-0::before, +.rtl input.ace ~ .lbl.padding-0::before { + margin-left: 0px; +} +.rtl .breadcrumb > li + li:before { + content: "\f104"; + float: right; +} +.rtl.no-skin .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #A4C6DD; +} +.rtl .nav-list, +.rtl .dropdown-menu, +.rtl .item-list, +.rtl .navbar-nav { + margin: 0; +} +.rtl .ace-file-input .ace-file-container.selected { + right: 0; +} +.rtl .ace-file-multiple .ace-file-container .ace-file-name { + padding: 0; +} +.rtl .ui-slider-small .ui-slider-handle { + right: auto; +} +.rtl li[class*="item-"] { + border-left: 1px solid #DDDDDD; +} +.rtl .itemdiv.dialogdiv > .body { + margin-left: 12px; + margin-right: 50px; + border-left-width: 1px; +} +.rtl .itemdiv.dialogdiv > .body:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} +.rtl .dropdown-colorpicker .dropdown-menu > li { + float: right; +} +.rtl.no-skin .sidebar.menu-min .nav-list > li.active > .submenu, +.rtl.no-skin .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #CCC; +} +.rtl.no-skin .sidebar.menu-min .nav-list > li.active > .submenu, +.rtl.skin-3 .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #A4C6DD; +} +.rtl .sidebar + .main-content .breadcrumbs-fixed { + left: 0; +} +@media (min-width: 768px) { + .rtl .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed, + .rtl .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + left: auto; + right: auto; + } +} +@media (min-width: 992px) { + .rtl .sidebar.menu-min + .main-content .breadcrumbs-fixed, + .rtl .sidebar.compact + .main-content .breadcrumbs-fixed { + left: 0; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .rtl .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu > li > a, + .rtl .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li.hover > .submenu > li > a { + margin-right: 20px !important; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .rtl .breadcrumbs-fixed, + .rtl .sidebar.menu-min + .main-content .breadcrumbs-fixed { + left: 0 !important; + } + .rtl .container.main-container .breadcrumbs-fixed, + .rtl .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + left: auto !important; + } +} +@media (max-width: 767px) and (min-width: 992px) { + .rtl .container.main-container .breadcrumbs-fixed, + .rtl .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + left: 0 !important; + } +} +.rtl .sidebar:not(.h-sidebar) .nav-list > li.highlight.active > a:after { + border-width: 20px 10px 21px !important; + left: -20px !important; +} +.rtl .sidebar:not(.h-sidebar) .nav-list > li.highlight.active > a:before { + border-width: 20px 10px 21px !important; + left: -21px !important; +} +@media (min-width: 992px) { + .rtl.no-skin .sidebar.h-sidebar .nav-list > li.active > .submenu { + border-color: #CCC !important; + } + .rtl.skin-3 .sidebar.h-sidebar .nav-list > li.active > .submenu { + border-color: #A4C6DD !important; + } +} +.rtl .sidebar.menu-min .nav-list > li > .submenu:after { + border-left-width: 0; + border-right: 1px solid; + border-right-color: inherit; + display: block; + right: -1px; + left: auto; +} +.rtl .popover.bottom .arrow:after, +.rtl .popover.top .arrow:after { + margin-left: auto; + margin-right: -10px; +} +.rtl .nav-tabs { + margin: 0; +} +.rtl .tabs-below > .nav-tabs { + margin-top: -1px; +} +.rtl .nav-tabs > li { + float: right; +} +.rtl .nav-tabs > li:first-child > a { + margin-left: -1px; + margin-right: auto; +} +.rtl .tabs-left > .nav-tabs > li:first-child > a { + margin-right: -1px; + margin-left: auto; +} +.rtl .tabs-left > .nav-tabs > li.active > a { + margin-left: -1px; + margin-right: -1px; +} +.rtl .tabs-right > .nav-tabs > li.active > a { + margin-left: -1px; + margin-right: -2px; +} +.rtl .nav-tabs[class*="tab-color-"] > li > a { + margin-right: 3px; + margin-left: auto; +} +.rtl .nav-stacked > li { + float: none; +} +.rtl .dropdown-navbar .nav-tabs > li > a:before { + left: auto; + right: 0; +} +.rtl .nav.nav-tabs.padding-32 { + padding-left: 0; + padding-right: 32px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-32, +.tabs-left > .rtl .nav.nav-tabs.padding-32 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-30 { + padding-left: 0; + padding-right: 30px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-30, +.tabs-left > .rtl .nav.nav-tabs.padding-30 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-28 { + padding-left: 0; + padding-right: 28px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-28, +.tabs-left > .rtl .nav.nav-tabs.padding-28 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-26 { + padding-left: 0; + padding-right: 26px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-26, +.tabs-left > .rtl .nav.nav-tabs.padding-26 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-24 { + padding-left: 0; + padding-right: 24px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-24, +.tabs-left > .rtl .nav.nav-tabs.padding-24 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-22 { + padding-left: 0; + padding-right: 22px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-22, +.tabs-left > .rtl .nav.nav-tabs.padding-22 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-20 { + padding-left: 0; + padding-right: 20px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-20, +.tabs-left > .rtl .nav.nav-tabs.padding-20 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-18 { + padding-left: 0; + padding-right: 18px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-18, +.tabs-left > .rtl .nav.nav-tabs.padding-18 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-16 { + padding-left: 0; + padding-right: 16px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-16, +.tabs-left > .rtl .nav.nav-tabs.padding-16 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-14 { + padding-left: 0; + padding-right: 14px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-14, +.tabs-left > .rtl .nav.nav-tabs.padding-14 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-12 { + padding-left: 0; + padding-right: 12px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-12, +.tabs-left > .rtl .nav.nav-tabs.padding-12 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-10 { + padding-left: 0; + padding-right: 10px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-10, +.tabs-left > .rtl .nav.nav-tabs.padding-10 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-8 { + padding-left: 0; + padding-right: 8px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-8, +.tabs-left > .rtl .nav.nav-tabs.padding-8 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-6 { + padding-left: 0; + padding-right: 6px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-6, +.tabs-left > .rtl .nav.nav-tabs.padding-6 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-4 { + padding-left: 0; + padding-right: 4px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-4, +.tabs-left > .rtl .nav.nav-tabs.padding-4 { + padding-right: 0; +} +.rtl .nav.nav-tabs.padding-2 { + padding-left: 0; + padding-right: 2px; +} +.tabs-right > .rtl .nav.nav-tabs.padding-2, +.tabs-left > .rtl .nav.nav-tabs.padding-2 { + padding-right: 0; +} +.rtl .message-navbar .messagebar-item-left ~ .nav-search { + left: auto; +} +.rtl .message-navbar .messagebar-item-right ~ .nav-search { + left: auto; + right: 5px; +} +.rtl .message-navbar .messagebar-item-right ~ .nav-search { + right: 60px; +} +@media only screen and (max-width: 767px) { + .rtl .ace-nav > li:nth-last-child(4) > .dropdown-menu { + right: auto; + left: -100px; + } + .rtl .ace-nav > li:nth-last-child(4) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-last-child(4) > .dropdown-menu:after { + right: auto; + left: 120px; + } + .rtl .ace-nav > li:nth-last-child(3) > .dropdown-menu { + right: auto; + left: -80px; + } + .rtl .ace-nav > li:nth-last-child(3) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-last-child(3) > .dropdown-menu:after { + right: auto; + left: 100px; + } +} +@media only screen and (min-width: 480px) and (max-width: 767px) { + .rtl .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(1) > .dropdown-menu, + .rtl .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(2) > .dropdown-menu { + left: -60px; + right: auto; + } + .rtl .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(1) > .dropdown-menu:before, + .rtl .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(2) > .dropdown-menu:before, + .rtl .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(1) > .dropdown-menu:after, + .rtl .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(2) > .dropdown-menu:after { + right: auto; + left: 80px; + } +} +@media only screen and (max-width: 480px) { + .rtl .ace-nav > li:nth-last-child(4) > .dropdown-menu { + right: auto; + left: -120px; + } + .rtl .ace-nav > li:nth-last-child(4) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-last-child(4) > .dropdown-menu:after { + right: auto; + left: 140px; + } + .rtl .ace-nav > li:nth-last-child(3) > .dropdown-menu { + right: auto; + left: -120px; + } + .rtl .ace-nav > li:nth-last-child(3) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-last-child(3) > .dropdown-menu:after { + right: auto; + left: 110px; + } + .rtl .ace-nav > li:nth-last-child(2) > .dropdown-menu { + right: auto; + left: -50px; + } + .rtl .ace-nav > li:nth-last-child(2) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-last-child(2) > .dropdown-menu:after { + right: auto; + left: 70px; + } +} +@media only screen and (max-width: 479px) { + .rtl .ace-nav > li:nth-last-child(4) > .dropdown-menu { + left: auto; + right: -10px; + } + .rtl .ace-nav > li:nth-last-child(4) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-last-child(4) > .dropdown-menu:after { + right: 30px; + left: auto; + } + .rtl .ace-nav > li:nth-last-child(3) > .dropdown-menu { + left: auto; + right: -50px; + } + .rtl .ace-nav > li:nth-last-child(3) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-last-child(3) > .dropdown-menu:after { + left: auto; + right: 75px; + } + .rtl .ace-nav > li:nth-last-child(2) > .dropdown-menu { + left: auto; + right: -70px; + } + .rtl .ace-nav > li:nth-last-child(2) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-last-child(2) > .dropdown-menu:after { + left: auto; + right: 90px; + } +} +@media only screen and (max-width: 319px) { + .rtl .ace-nav > li:nth-last-child(2) > .dropdown-menu { + left: auto; + right: -110px; + } + .rtl .ace-nav > li:nth-last-child(2) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-last-child(2) > .dropdown-menu:after { + left: auto; + right: 130px; + } + .rtl .ace-nav > li:nth-child(2):nth-last-child(2) > .dropdown-menu { + left: auto; + right: -85px; + } + .rtl .ace-nav > li:nth-child(2):nth-last-child(2) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-child(2):nth-last-child(2) > .dropdown-menu:after { + left: auto; + right: 105px; + } + .rtl .ace-nav > li:nth-child(1):nth-last-child(3) > .dropdown-menu { + left: auto; + right: -35px; + } + .rtl .ace-nav > li:nth-child(1):nth-last-child(3) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-child(1):nth-last-child(3) > .dropdown-menu:after { + left: auto; + right: 55px; + } + .rtl .ace-nav > li:nth-child(1):nth-last-child(2) > .dropdown-menu { + left: auto; + right: -60px; + } + .rtl .ace-nav > li:nth-child(1):nth-last-child(2) > .dropdown-menu:before, + .rtl .ace-nav > li:nth-child(1):nth-last-child(2) > .dropdown-menu:after { + left: auto; + right: 75px; + } +} +.rtl .btn-group-vertical > .btn, +.rtl .btn-group-vertical > .btn-group, +.rtl .btn-group-vertical > .btn-group > .btn { + float: none; +} +.rtl .input-group-addon:first-child { + border-right: 1px solid #CCC; +} +.rtl .input-group-addon:last-child { + border-left: 1px solid #CCC; +} +.rtl .footer .footer-inner { + right: 0; + left: 0; +} +.rtl .sidebar ~ .footer .footer-inner { + right: 190px; + left: 0; +} +@media (min-width: 992px) { + .rtl .sidebar.compact ~ .footer .footer-inner { + right: 105px; + left: 0; + } +} +.rtl .sidebar.menu-min ~ .footer .footer-inner { + right: 43px; + left: 0; +} +@media (min-width: 992px) { + .rtl .sidebar.h-sidebar ~ .footer .footer-inner { + right: 0; + left: 0; + } +} +@media (max-width: 991px) { + .rtl .footer .footer-inner, + .rtl .sidebar ~ .footer .footer-inner, + .rtl .sidebar.compact ~ .footer .footer-inner, + .rtl .sidebar.menu-min ~ .footer .footer-inner { + right: 0; + left: 0; + } + .rtl .sidebar.responsive-min ~ .footer .footer-inner { + right: 43px; + left: 0; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .rtl .container.main-container .footer .footer-inner { + margin-right: auto; + } +} +@media (min-width: 992px) { + .rtl .container.main-container .footer .footer-inner { + margin-left: auto; + margin-right: 190px; + } +} +@media (min-width: 1200px) { + .rtl .container.main-container .footer .footer-inner { + margin-left: auto; + margin-right: 190px; + } +} +@media (min-width: 992px) { + .rtl .container.main-container .sidebar.compact ~ .footer .footer-inner { + margin-left: auto; + margin-right: 105px; + } +} +@media (min-width: 1200px) { + .rtl .container.main-container .sidebar.compact ~ .footer .footer-inner { + margin-left: auto; + margin-right: 105px; + } +} +@media (min-width: 992px) { + .rtl .container.main-container .sidebar.menu-min ~ .footer .footer-inner { + margin-left: auto; + margin-right: 43px; + } +} +@media (min-width: 1200px) { + .rtl .container.main-container .sidebar.menu-min ~ .footer .footer-inner { + margin-left: auto; + margin-right: 43px; + } +} +@media (min-width: 992px) { + .rtl .container.main-container .sidebar.h-sidebar ~ .footer .footer-inner { + margin-right: 0; + } +} +@media (min-width: 992px) { + .rtl .container.main-container .sidebar.h-sidebar ~ .footer .footer-inner { + margin-right: 0; + } +} +@media (min-width: 1200px) { + .rtl .container.main-container .sidebar.h-sidebar ~ .footer .footer-inner { + margin-right: 0; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .rtl .container.main-container .sidebar.responsive-min ~ .footer .footer-inner { + margin-right: 43px; + margin-left: auto; + } +} +@media only screen and (max-width: 991px) and (min-width: 992px) { + .rtl .navbar.navbar-fixed-top + .main-container .sidebar.responsive.push_away.display.compact ~ .footer .footer-inner { + -moz-transform: translateX(-105px); + -webkit-transform: translateX(-105px); + -o-transform: translateX(-105px); + -ms-transform: translateX(-105px); + transform: translateX(-105px); + } +} +@media only screen and (max-width: 991px) { + .rtl .navbar.navbar-fixed-top + .main-container .sidebar.responsive.push_away.display ~ .footer .footer-inner { + -moz-transform: translateX(-190px); + -webkit-transform: translateX(-190px); + -o-transform: translateX(-190px); + -ms-transform: translateX(-190px); + transform: translateX(-190px); + } + .rtl .navbar.navbar-fixed-top + .main-container .sidebar.responsive.push_away.display.menu-min ~ .footer .footer-inner { + -moz-transform: translateX(-43px); + -webkit-transform: translateX(-43px); + -o-transform: translateX(-43px); + -ms-transform: translateX(-43px); + transform: translateX(-43px); + } +} +.rtl blockquote p, +.rtl blockquote small { + text-align: left; +} +.rtl blockquote small:before { + content: ""; +} +.rtl blockquote small:after { + content: "\00A0 \2014"; +} +.rtl blockquote.pull-right p, +.rtl .blockquote-reverse p, +.rtl blockquote.pull-right small, +.rtl .blockquote-reverse small { + text-align: right; +} +.rtl blockquote.pull-right small:after, +.rtl .blockquote-reverse small:after { + content: ""; +} +.rtl blockquote.pull-right small:before, +.rtl .blockquote-reverse small:before { + content: "\2014 \00A0"; +} +.rtl .fc-grid th { + text-align: center; +} +.rtl .external-event > .ace-icon:first-child { + margin-right: 0; + margin-left: 5px; + border-right-width: 0; + border-left: 1px solid #FFF; +} +.rtl #cboxCurrent { + left: auto; + right: 64px; +} +.rtl #cboxNext, +.rtl #cboxPrevious { + margin-left: 0; + margin-right: 5px; +} +.rtl #cboxPrevious { + left: auto; + right: 27px; +} +.rtl #cboxNext { + left: auto; + right: 0; +} +.rtl .ace-spinner .spinner-buttons > button.btn:active { + left: auto; + top: auto; +} +.rtl .wizard-steps { + margin-right: 0; +} +.rtl .wizard-actions { + text-align: left; +} +.rtl .wizard-steps li:first-child:before { + right: 50%; + left: auto; +} +.rtl .tree { + padding-left: 0; + padding-right: 9px; +} +.rtl .tree:before { + left: auto; + right: 0; + border-width: 0 1px 0 0; +} +.rtl .tree .tree-folder .tree-folder-header .tree-folder-name { + margin-left: 0; + margin-right: 2px; +} +.rtl .tree .tree-folder .tree-folder-header > .ace-icon:first-child { + margin: -2px -2px 0 0; +} +.rtl .tree .tree-folder:last-child:after { + left: auto; + right: -15px; + border-left: none; + border-right: 1px solid #FFF; +} +.rtl .tree .tree-folder .tree-folder-content { + margin-left: 0; + margin-right: 23px; +} +.rtl .tree .tree-folder .tree-folder-content:before { + left: auto; + right: -14px; + border-width: 0 1px 0 0; +} +.rtl .tree .tree-item .tree-item-name { + margin-left: 0; + margin-right: 3px; +} +.rtl .tree .tree-item .tree-item-name > .ace-icon:first-child { + margin-right: 0; + margin-left: 3px; +} +.rtl .tree .tree-folder:before, +.rtl .tree .tree-item:before { + left: auto; + right: -13px; +} +.rtl .tree .tree-loading { + margin-left: 0; + margin-right: 36px; +} +.rtl #gritter-notice-wrapper { + left: 20px; + right: auto; +} +.rtl .gritter-close { + right: auto; + left: 3px; +} +.rtl .gritter-image { + float: right; +} +.rtl .gritter-with-image, +.rtl .gritter-without-image { + float: left; +} +.rtl .wysiwyg-toolbar .dropdown-menu { + text-align: right; +} +.rtl .wysiwyg-toolbar .wysiwyg-choose-file { + margin-left: auto; +} +.rtl .wysiwyg-toolbar .btn-group > .btn, +.rtl .wysiwyg-toolbar .btn-group > .inline > .btn { + float: none; +} +.rtl .wysiwyg-style1 .btn-group:after, +.rtl .wysiwyg-style2 .btn-group:after { + left: auto; + border-left-width: 0; + right: -2px; + border-right: 1px solid #E1E6EA; +} +.rtl .wysiwyg-toolbar .dropdown-menu input[type=text] { + margin-left: 0; + margin-right: 8px; +} +.rtl .wysiwyg-toolbar .dropdown-menu .btn { + margin-right: 1px; + margin-left: 8px; +} +.rtl .widget-body .md-header { + margin-left: 0; + margin-right: 9px; +} +.rtl .widget-body .md-header .btn-inverse { + padding-right: 0; + padding-left: 5px; +} +.rtl .select2-container .select2-choice { + padding-left: 0; + padding-right: 8px; +} +.rtl .select2-container.select2-allowclear .select2-choice .select2-chosen { + margin-right: auto; + margin-left: 42px; +} +.rtl .select2-container .select2-choice > .select2-chosen { + margin-left: 26px; + margin-right: auto; +} +.rtl .select2-container .select2-choice abbr { + right: auto; + left: 20px; +} +.rtl .select2-container .select2-choice .select2-arrow { + right: auto; + left: 0; +} +.rtl .select2-container .select2-choice .select2-arrow b:before { + right: 5px; + left: auto; +} +.rtl .select2-container-multi .select2-choices li { + float: right; +} +.rtl .select2-container-multi .select2-choices .select2-search-choice { + margin: 3px 5px 3px 0; + padding: 3px 18px 3px 5px; +} +.rtl .select2-results { + margin: 4px 0 4px 4px; +} +.rtl .select2-drop input { + padding-right: 5px; + padding-left: 20px; +} +.rtl .select2-drop .select2-results { + padding-right: 4px; + padding-left: 0; +} +.rtl .select2-search:after { + right: -20px; + left: auto; +} +.rtl .select2-search input.select2-active { + background-position: 0%; +} +.rtl .editable-buttons { + margin-left: auto; + margin-right: 1px; +} +.rtl .editable-buttons .btn { + margin: 0 0 0 1px; +} +.rtl .ui-datepicker .ui-datepicker-prev:before { + content: "\f061"; +} +.rtl .ui-datepicker .ui-datepicker-next:before { + content: "\f060"; +} +.rtl .ui-menu .ui-menu-item .ui-menu-icon { + float: left; + left: 4px; + right: auto; +} +.rtl .ui-menu .ui-menu-item .ui-menu-icon:before { + content: "\f104"; +} +.rtl .ui-dialog .ui-dialog-titlebar-close, +.rtl .ui-jqdialog .ui-jqdialog-titlebar-close { + left: 8px !important; + right: auto !important; +} +.rtl .ui-tabs .ui-tabs-nav li { + float: right; + margin-right: 0; + margin-left: 0.2em; +} +.rtl .ui-tabs .ui-tabs-nav li a { + float: right; +} +.rtl .ui-tabs .ui-tabs-nav li.ui-state-default > a { + margin-right: auto; + margin-left: -1px; +} +.rtl .ui-accordion .ui-accordion-header { + padding-right: 24px; + padding-left: 8px; +} +.rtl .ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: auto; + right: 10px; +} +.rtl .ui-accordion .ui-accordion-header .ui-accordion-header-icon:before { + content: "\f0d9"; +} +.rtl .ui-accordion .ui-accordion-header.ui-state-active .ui-accordion-header-icon:before { + content: "\f0d7"; +} +.rtl .ui-jqgrid .ui-jqgrid-hdiv { + border-width: 1px 1px 0 0; +} +.rtl .ui-jqgrid .ui-jqgrid-labels th { + border-right-width: 0 !important; + border-left: 1px solid #E1E1E1 !important; + text-align: right !important; +} +.rtl .ui-jqgrid .ui-jqgrid-labels th:first-child { + border-right: 1px solid #E1E1E1 !important; +} +.rtl .ui-jqgrid-labels th[id*="_cb"]:first-child { + text-align: center !important; +} +.rtl .ui-jqgrid-sortable { + padding-left: 0; + padding-right: 4px; +} +.rtl .ui-jqdialog-content .searchFilter table { + margin-left: auto; + margin-right: 4px; +} +.rtl .ui-jqdialog-content .searchFilter .add-group, +.rtl .ui-jqdialog-content .searchFilter .add-rule, +.rtl .ui-jqdialog-content .searchFilter .delete-group { + margin-left: auto !important; + margin-right: 4px !important; +} +.rtl .ui-jqdialog-content .CaptionTD { + text-align: left; +} +.rtl .ui-jqdialog .ui-widget-header .ui-jqdialog-title { + text-align: right; + padding-left: 0; + padding-right: 12px; + float: right !important; +} +.rtl .dd-list { + margin-right: 0; +} +.rtl .dd-list .dd-list { + padding-right: 30px; + padding-left: 0; +} +.rtl .dd2-handle + .dd2-content, +.rtl .dd2-handle + .dd2-content[class*="btn-"] { + padding-left: 0; + padding-right: 44px; +} +.rtl .dd-item > button { + float: right; + margin: 5px 5px 5px 1px; + left: auto; + right: 1px; +} +.rtl .dd2-item.dd-item > button { + margin-left: 5px; + margin-right: 34px; +} +.rtl .dd-dragel > li > .dd-handle { + border-right: 2px solid #777; + border-left-width: 0; +} +.rtl .dd-list > li[class*="item-"] { + border-left-width: 0; + border-right-width: 0; +} +.rtl .dd-list > li[class*="item-"] > .dd-handle { + border-right: 2px solid; + border-right-color: inherit; + border-left-color: #DAE2EA; + border-left-width: 1px; +} +.rtl .dd-list > li > .dd-handle .sticker { + right: auto; + left: 0; +} +.rtl .dd2-handle, +.rtl .dd-dragel > li > .dd2-handle { + left: auto; + right: 0; + border-width: 1px 0 0 1px; +} +.rtl ol.linenums { + margin-right: 33px; +} +.rtl ol.linenums li { + padding-left: 0; + padding-right: 12px; +} +.rtl .prettyprint.linenums { + -webkit-box-shadow: -40px 0 0 #FBFBFC inset, -41px 0 0 #ECECF0 inset; + box-shadow: -40px 0 0 #FBFBFC inset, -41px 0 0 #ECECF0 inset; +} +.rtl .tt-dropdown-menu { + text-align: right; + direction: rtl; +} diff --git a/web/vendor/ace/css/ace-skins.css b/web/vendor/ace/css/ace-skins.css new file mode 100755 index 0000000..2ad0e8a --- /dev/null +++ b/web/vendor/ace/css/ace-skins.css @@ -0,0 +1,3107 @@ +/* skin 1 */ +.skin-1 { + background-color: #4a4f56; +} +.skin-1 .navbar { + background: #2c6aa0; +} +.skin-1 .sidebar { + background-color: #222a2d; + border-right-width: 0; +} +.skin-1 .nav-list > li { + border-color: #3f4e54; +} +.skin-1 .nav-list > li > a { + background-color: #222a2d; + color: #bac2c8; +} +.skin-1 .nav-list > li:hover > a { + background-color: #414b51; + color: #e1eaf1; +} +.skin-1 .nav-list > li.open > a, +.skin-1 .nav-list > li.open:hover > a { + color: #85c0ec; + background-color: #222a2d; +} +.skin-1 .nav-list > li.active > a, +.skin-1 .nav-list > li.active:hover > a { + background-color: #141a1b; + color: #7bb7e5; +} +.skin-1 .nav-list > li:hover:before { + background-color: #629cc9; +} +.skin-1 .nav-list > li.active:before { + display: block; + background-color: #4d96c6; +} +.skin-1 .nav-list li.active > a:after { + border-right-color: #FFF; + -moz-border-right-colors: #FFF; + border-width: 11px 7px; + top: 8px; + right: 0; +} +.skin-1 .nav-list > li.active > .submenu li.active > a:after { + top: 5px; +} +.skin-1 .nav-list > li .submenu { + background-color: #333d3f; +} +.skin-1 .nav-list > li.active .submenu { + background-color: #181e20; +} +.skin-1 .nav-list > li .submenu > li > a { + border-top-style: solid; + border-top-color: #454d4e; + background-color: #333d3f; +} +.skin-1 .nav-list > li .submenu > li > a:hover { + background-color: #2d3638; +} +.skin-1 .nav-list > li.active .submenu > li > a { + border-top-color: #222526; + background-color: #181e20; +} +.skin-1 .nav-list > li.active .submenu > li > a:hover { + background-color: #14191a; +} +.skin-1 .nav-list > li > .submenu { + border-top-color: #505a5b; +} +.skin-1 .nav-list > li.active > .submenu { + border-top-color: #2f3e44; +} +.skin-1 .nav-list > li > .submenu > li > a { + color: #d9dfe6; +} +.skin-1 .nav-list > li > .submenu > li:hover > a { + color: #8ab4de; +} +.skin-1 .nav-list > li > .submenu > li.active > a { + color: #7bb7e5; + background-color: #161b1d; +} +.skin-1 .nav-list > li > .submenu:before, +.skin-1 .nav-list > li > .submenu > li:before { + border-color: #646c70; +} +.skin-1 .nav-list > li.active > .submenu:before, +.skin-1 .nav-list > li.active > .submenu > li:before { + border-color: #3f4e54; +} +.skin-1 .nav-list > li .submenu li > .submenu li > a { + color: #d9dfe6; +} +.skin-1 .nav-list > li .submenu li > .submenu li:hover > a { + color: #8ab4de; +} +.skin-1 .nav-list > li .submenu li.open > a, +.skin-1 .nav-list > li .submenu li > .submenu > li.open > a { + color: #85c0ec; +} +.skin-1 .nav-list > li .submenu li > .submenu li.active > a { + color: #61a8dd; +} +.skin-1 .nav-list > li .submenu li > .submenu li.active:hover > a { + color: #85c0ec; +} +.skin-1 .sidebar .nav-list > li.active.highlight, +.skin-1 .sidebar .nav-list > li.active.highlight + li { + border-color: #506b7f; +} +.skin-1 .sidebar .nav-list > li.active.highlight + li:last-child { + border-bottom-color: #3f4e54; +} +.skin-1 .sidebar .nav-list > li.active.highlight > a:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #141a1b; + -moz-border-left-colors: #141a1b; + border-width: 20px 0 20px 10px; + z-index: 1; + top: 0; + right: -10px; +} +.skin-1 .sidebar .nav-list > li.active.highlight > a:before { + border-left-color: #506b7f; + -moz-border-left-colors: #506b7f; + border-style: solid; + border-color: transparent; + border-width: 20px 0 20px 10px; + content: ""; + position: absolute; + right: -11px; + top: 0; + z-index: 1; +} +.skin-1 .sidebar-shortcuts, +.skin-1 .sidebar-shortcuts-mini { + background-color: #222a2d; + border-color: #3f4e54; +} +.skin-1 .sidebar > .nav-search { + background-color: #222a2d; + border-color: #3f4e54; +} +.skin-1 .sidebar-toggle { + background-color: #181e21; + border-color: #3f4e54; +} +.skin-1 .sidebar-toggle > .ace-icon { + background-color: #222a2d; + color: #aaaaaa; + border-color: #aaaaaa; +} +.skin-1 .breadcrumbs { + border-width: 0; + background-color: #f0f0f0; +} +@media (min-width: 992px) { + .skin-1 .breadcrumbs.breadcrumbs-fixed { + border-bottom-width: 1px; + } +} +@media only screen and (max-width: 991px) { + .skin-1 .sidebar.responsive { + border-width: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .skin-1 .sidebar.responsive .nav-list li.active > a:after { + display: none; + } + .skin-1 .sidebar.responsive .nav-list > li.active.highlight > a:after { + display: block; + } +} +.skin-1 .sidebar.menu-min .nav-list > li.open > a { + background-color: #222a2d; + color: #bac2c8; +} +.skin-1 .sidebar.menu-min .nav-list > li.active > a:after { + border-width: 9px 6px; + top: 10px; +} +.skin-1 .sidebar.menu-min .nav-list > li.active.highlight > a:after { + border-width: 20px 0 20px 10px; + top: 0; +} +.skin-1 .sidebar.menu-min .nav-list > li.active:hover > a:after { + border-right-color: #242a2b; +} +.skin-1 .sidebar.menu-min .nav-list > li.active > a, +.skin-1 .sidebar.menu-min .nav-list > li.active > a:hover { + background-color: #141a1b; + color: #7bb7e5; +} +.skin-1 .sidebar.menu-min .nav-list > li:hover > a { + color: #e1eaf1; +} +.skin-1 .sidebar.menu-min .nav-list > li > a > .menu-text { + background-color: #414b51; +} +.skin-1 .sidebar.menu-min .nav-list > li.active > a > .menu-text { + background-color: #242a2b; + border: 0px solid #3b4547; + border-width: 1px 1px 0; + border-left-color: #305675; +} +.skin-1 .sidebar.menu-min .nav-list > li.active > a:not(.dropdown-toggle) > .menu-text { + border-width: 1px; + border-top-color: #4a5c63; + border-bottom-color: #4a5c63; + border-right-color: #4a5c63; +} +.skin-1 .sidebar.menu-min .nav-list > li.active:hover > a, +.skin-1 .sidebar.menu-min .nav-list > li.active > a > .menu-text { + color: #7bb7e5; +} +.skin-1 .sidebar.menu-min .nav-list > li.open.active > a { + background-color: #141a1b; +} +.skin-1 .sidebar.menu-min .nav-list > li > a > .menu-text, +.skin-1 .sidebar.menu-min .nav-list > li > .submenu { + border-width: 0; + border-left: 1px solid #181d1f; + -webkit-box-shadow: none; + box-shadow: none; +} +.skin-1 .sidebar.menu-min .nav-list > li > .submenu { + border-top: 1px solid #3f4e54; +} +.skin-1 .sidebar.menu-min .nav-list > li > .submenu:after { + display: none; +} +.skin-1 .sidebar.menu-min .nav-list > li > .submenu { + background-color: #333d3f; + border-top-color: #5a606a; + border-top-width: 1px !important; +} +.skin-1 .sidebar.menu-min .nav-list > li.active > .submenu { + background-color: #181e20; + border-top-color: #3b4547; + border-left-color: #305675; +} +.skin-1 .sidebar.menu-min .nav-list > li > .arrow:after { + border-right-color: #414b51; + -moz-border-right-colors: #414b51; +} +.skin-1 .sidebar.menu-min .nav-list > li > .arrow:before { + border-right-color: #111415; + -moz-border-right-colors: #242a2b; +} +.skin-1 .sidebar.menu-min .nav-list > li.active > .arrow:after { + border-right-color: #242a2b; + -moz-border-right-colors: #242a2b; +} +.skin-1 .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: #50a0dd; + -moz-border-right-colors: #50a0dd; +} +.skin-1 .sidebar.menu-min .sidebar-shortcuts-large { + background-color: #222a2d; + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid #4a5c63; + border-width: 0 1px 1px 0; + top: 0; +} +@media (max-width: 991px) { + .skin-1 .sidebar.responsive-min .nav-list > li.open > a { + background-color: #222a2d; + color: #bac2c8; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active > a:after { + border-width: 9px 6px; + top: 10px; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active.highlight > a:after { + border-width: 20px 0 20px 10px; + top: 0; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active:hover > a:after { + border-right-color: #242a2b; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active > a, + .skin-1 .sidebar.responsive-min .nav-list > li.active > a:hover { + background-color: #141a1b; + color: #7bb7e5; + } + .skin-1 .sidebar.responsive-min .nav-list > li:hover > a { + color: #e1eaf1; + } + .skin-1 .sidebar.responsive-min .nav-list > li > a > .menu-text { + background-color: #414b51; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + background-color: #242a2b; + border: 0px solid #3b4547; + border-width: 1px 1px 0; + border-left-color: #305675; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active > a:not(.dropdown-toggle) > .menu-text { + border-width: 1px; + border-top-color: #4a5c63; + border-bottom-color: #4a5c63; + border-right-color: #4a5c63; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active:hover > a, + .skin-1 .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + color: #7bb7e5; + } + .skin-1 .sidebar.responsive-min .nav-list > li.open.active > a { + background-color: #141a1b; + } + .skin-1 .sidebar.responsive-min .nav-list > li > a > .menu-text, + .skin-1 .sidebar.responsive-min .nav-list > li > .submenu { + border-width: 0; + border-left: 1px solid #181d1f; + -webkit-box-shadow: none; + box-shadow: none; + } + .skin-1 .sidebar.responsive-min .nav-list > li > .submenu { + border-top: 1px solid #3f4e54; + } + .skin-1 .sidebar.responsive-min .nav-list > li > .submenu:after { + display: none; + } + .skin-1 .sidebar.responsive-min .nav-list > li > .submenu { + background-color: #333d3f; + border-top-color: #5a606a; + border-top-width: 1px !important; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active > .submenu { + background-color: #181e20; + border-top-color: #3b4547; + border-left-color: #305675; + } + .skin-1 .sidebar.responsive-min .nav-list > li > .arrow:after { + border-right-color: #414b51; + -moz-border-right-colors: #414b51; + } + .skin-1 .sidebar.responsive-min .nav-list > li > .arrow:before { + border-right-color: #111415; + -moz-border-right-colors: #242a2b; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active > .arrow:after { + border-right-color: #242a2b; + -moz-border-right-colors: #242a2b; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: #50a0dd; + -moz-border-right-colors: #50a0dd; + } + .skin-1 .sidebar.responsive-min .sidebar-shortcuts-large { + background-color: #222a2d; + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid #4a5c63; + border-width: 0 1px 1px 0; + top: 0; + } + .skin-1 .sidebar.responsive-min .nav-list > li.active > a:after { + display: block; + } + .skin-1 .sidebar.responsive-max .nav-list li.active > a:after { + display: none; + } + .skin-1 .sidebar.responsive-max .nav-list > li.highlight.active > a:after { + display: block; + } +} +@media only screen and (min-width: 992px) { + .skin-1 .nav-list li.hover > .submenu { + padding-left: 0; + padding-bottom: 2px; + padding-right: 0; + border-color: #232828; + } + .skin-1 .nav-list li.hover > .submenu > li > a { + border-top-width: 1px; + margin-bottom: 0; + margin-top: 0; + } + .skin-1 .nav-list li.hover > .submenu > li:first-child > a { + border-top-width: 0; + } + .skin-1 .nav-list > li > .submenu li.hover > .submenu { + padding: 3px 2px; + } + .skin-1 .nav-list > li.active > .submenu li.hover > .submenu { + border-left-color: #475561; + } + .skin-1 .nav-list li.hover.active > .submenu, + .skin-1 .nav-list li.active > .submenu li.hover.active > .submenu { + border-left-color: #305675; + } + .skin-1 .nav-list > li.active > .submenu li.hover > .submenu { + background-color: #171e1f; + } +} +@media only screen and (min-width: 992px) { + .skin-1 .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a { + color: #bac2c8; + } + .skin-1 .sidebar.navbar-collapse .nav-list > li.open.hover:hover > a { + color: #e1eaf1; + background-color: #414b51; + } + .skin-1 .sidebar.navbar-collapse .nav-list > li.active.hover:hover > a { + color: #7bb7e5; + background-color: #141a1b; + } + .skin-1 .sidebar.navbar-collapse .nav-list > li > .submenu li.open.hover:not(:hover):not(:focus):not(.active) > a { + color: #d9dfe6; + } +} +@media only screen and (min-width: 992px) and (max-width: 991px) { + .skin-1 .sidebar.navbar-collapse { + /**.nav-list li li:hover > a { + background-color: @submenu-item-background; + } + .nav-list li li > a:hover, + .nav-list li li.open > a:hover { + background-color: @submenu-item-hover-background; + } + + .nav-list > li.active li:hover > a { + background-color: @submenu-item-background-active; + } + .nav-list > li.active li > a:hover { + background-color: @submenu-item-background-active-hover; + }*/ + } + .skin-1 .sidebar.navbar-collapse .nav-list li.hover > .submenu { + padding-bottom: 0; + } + .skin-1 .sidebar.navbar-collapse .nav-list li.hover > .submenu { + border-top-color: #505a5b; + } + .skin-1 .sidebar.navbar-collapse .nav-list li.hover.active > .submenu { + border-top-color: #2f3e44; + } + .skin-1 .sidebar.navbar-collapse .nav-list li.hover.active > .submenu, + .skin-1 .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu, + .skin-1 .sidebar.navbar-collapse .nav-list li.active > .submenu li.hover.active > .submenu { + border-left-width: 0; + } + .skin-1 .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu { + padding: 0; + } + .skin-1 .sidebar.navbar-collapse .nav-list li li.hover > .submenu > li:first-child > a { + border-top-width: 1px; + } +} +.skin-1 .sidebar.navbar-collapse .nav-list > li .submenu > li.hover:hover > a { + background-color: #2d3638; +} +.skin-1 .sidebar.navbar-collapse .nav-list > li.active .submenu > li.hover:hover > a { + background-color: #14191a; +} +@media only screen and (min-width: 992px) { + .skin-1 .sidebar:not(.navbar-collapse) .nav-list > li .submenu > li.hover:hover > a { + background-color: #2d3638; + } + .skin-1 .sidebar:not(.navbar-collapse) .nav-list > li.active .submenu > li.hover:hover > a { + background-color: #14191a; + } +} +.skin-1 .nav-list li > .arrow:after { + border-right-color: #353c3d; + -moz-border-right-colors: #353c3d; +} +.skin-1 .nav-list li > .arrow:before { + border-right-color: #1d2122; + -moz-border-right-colors: #1d2122; +} +.skin-1 .nav-list > li.active > .arrow:after { + border-right-color: #171e1f; + -moz-border-right-colors: #171e1f; +} +.skin-1 .nav-list > li.active > .arrow:before { + border-right-color: #50a0dd; + -moz-border-right-colors: #50a0dd; +} +.skin-1 .nav-list > li.active > .submenu li.hover > .arrow:before { + border-right-color: #4f6e86; + -moz-border-right-colors: #8fb6d5; +} +.skin-1 .nav-list > li.active > .submenu li.hover.active > .arrow:before { + border-right-color: #305675; + -moz-border-right-colors: #2290e9; +} +.skin-1 .nav-list > li.active > .submenu li.hover > .arrow:after { + border-right-color: #171e1f; + -moz-border-right-colors: #171e1f; +} +.skin-1 .nav-list li.pull_up > .arrow:after { + border-right-color: #353c3d !important; + -moz-border-right-colors: #353c3d !important; +} +.skin-1 .nav-list li.pull_up > .arrow:before { + border-right-color: #1d2122 !important; + -moz-border-right-colors: #1d2122 !important; +} +.skin-1 .nav-list li.pull_up.active > .arrow:after { + border-right-color: #171e1f !important; + -moz-border-right-colors: #171e1f !important; +} +.skin-1 .nav-list li.pull_up.active > .arrow:before { + border-right-color: #50a0dd !important; + -moz-border-right-colors: #50a0dd !important; +} +.skin-1 .main-container .menu-toggler { + background-color: #444444; +} +.skin-1 .main-container .menu-toggler:before { + border-top-color: #87b87f; + border-bottom-color: #6fb3e0; +} +.skin-1 .main-container .menu-toggler:after { + border-top-color: #ffa24d; + border-bottom-color: #d15b47; +} +.skin-1 .main-container .menu-toggler > .toggler-text { + border-top-color: #444444; + -moz-border-top-colors: #444444; +} +.skin-1.display { + background-color: #5d82a2; +} +.skin-1.display:before { + border-top-color: #b5d3b0; + border-bottom-color: #aed4ee; +} +.skin-1.display:after { + border-top-color: #ffca9a; + border-bottom-color: #e09284; +} +.skin-1.display > .toggler-text { + border-top-color: #5d82a2; + -moz-border-top-colors: #5d82a2; +} +.skin-1 .navbar .navbar-toggle { + background-color: #4D9DCC; +} +.skin-1 .navbar .navbar-toggle:focus { + background-color: #4D9DCC; + border-color: transparent; +} +.skin-1 .navbar .navbar-toggle:hover { + background-color: #3992c6; + border-color: rgba(255, 255, 255, 0.1); +} +.skin-1 .navbar .navbar-toggle.display, +.skin-1 .navbar .navbar-toggle[data-toggle=collapse]:not(.collapsed) { + background-color: #3384b3; + box-shadow: inset 1px 1px 2px 0 rgba(0, 0, 0, 0.25); + border-color: rgba(255, 255, 255, 0.35); +} +@media only screen and (min-width: 768px) { + .skin-1 .container.main-container:before { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.1); + } +} +@media only screen and (min-width: 992px) { + .skin-1 .sidebar.h-sidebar:before { + background-color: #38424a; + border-bottom-color: #4a5c63; + } + .skin-1 .sidebar.h-sidebar .nav-list { + border-bottom-width: 0; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.active:before { + display: block; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.hover.active > a:after { + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-bottom-colors: #FFF; + border-color: transparent transparent #FFF; + border-width: 8px; + top: auto; + bottom: 0; + right: auto; + left: 50%; + margin-left: -8px; + content: ""; + display: block; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.hover.active:hover > a:after, + .skin-1 .sidebar.h-sidebar .nav-list > li.hover.active.hover-show > a:after { + display: none; + } + .skin-1 .sidebar.h-sidebar + .main-content .breadcrumbs { + border-color: #E8E8E8; + } + .skin-1 .sidebar.h-sidebar .nav-list > li { + border-color: #3f4e54; + } + .skin-1 .sidebar.h-sidebar .nav-list > li:hover, + .skin-1 .sidebar.h-sidebar .nav-list > li:hover + li { + border-left-color: #506575; + } + .skin-1 .sidebar.h-sidebar .nav-list > li:last-child:hover { + border-right-color: #506575; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.active, + .skin-1 .sidebar.h-sidebar .nav-list > li.active + li, + .skin-1 .sidebar.h-sidebar .nav-list > li:hover + li.active { + border-left-color: #55738a; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.active:last-child { + border-right-color: #55738a; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.hover > .submenu { + border-top-color: #232828; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.hover.active > .submenu { + border-top-color: #305675; + border-left-color: #232828; + } + .skin-1 .sidebar.h-sidebar .sidebar-shortcuts-large { + background-color: #222a2d; + border: 1px solid #232828; + border-top-color: #305675; + top: 100%; + } + .skin-1 .sidebar.h-sidebar .nav-list > li > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-bottom-color: #353c3d; + -moz-border-bottom-colors: #353c3d; + } + .skin-1 .sidebar.h-sidebar .nav-list > li > .arrow:before { + -moz-border-right-colors: none; + border-right-color: transparent; + border-bottom-color: #191c1c; + -moz-border-bottom-colors: #222727; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.active > .arrow:before, + .skin-1 .sidebar.h-sidebar .sidebar-shortcuts-large:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-bottom-color: #50a0dd; + -moz-border-bottom-colors: #216ca6; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.active > .arrow:after, + .skin-1 .sidebar.h-sidebar .sidebar-shortcuts-large:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-bottom-color: #171e1f; + -moz-border-bottom-colors: #171e1f; + } + .skin-1 .sidebar.h-sidebar .sidebar-shortcuts-large:after { + border-bottom-color: #222a2d; + -moz-border-bottom-colors: #222a2d; + } + .skin-1 .sidebar.h-sidebar .nav-list > li.highlight.active > a:before { + display: none; + } + .skin-1 .sidebar.h-sidebar.menu-min .nav-list > li > a > .menu-text { + border-width: 1px 0 0; + border-top-color: #181d1f; + } + .skin-1 .sidebar.h-sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-top-color: #305675; + } + .skin-1 .sidebar.h-sidebar.menu-min .nav-list > li.active > .submenu { + border-top-color: #3b4547; + } + .skin-1 .sidebar.h-sidebar.menu-min .nav-list > li > .arrow:after { + border-bottom-color: #414b51; + -moz-border-bottom-colors: #414b51; + } + .skin-1 .sidebar.h-sidebar.menu-min .nav-list > li > .arrow:before { + border-bottom-color: #111415; + -moz-border-bottom-colors: #242a2b; + } + .skin-1 .sidebar.h-sidebar.menu-min .nav-list > li.active > .arrow:after { + border-bottom-color: #242a2b; + -moz-border-bottom-colors: #242a2b; + } + .skin-1 .sidebar.h-sidebar.menu-min .nav-list > li.active > .arrow:before { + border-bottom-color: #50a0dd; + -moz-border-bottom-colors: #50a0dd; + } + .skin-1 .h-sidebar.sidebar-fixed + .main-content { + padding-top: 86px; + } + .skin-1 .h-sidebar.sidebar-fixed.no-gap + .main-content { + padding-top: 72px; + } + .skin-1 .h-sidebar.sidebar-fixed.menu-min + .main-content { + padding-top: 61px; + } + .skin-1 .h-sidebar.sidebar-fixed.menu-min.no-gap + .main-content { + padding-top: 47px; + } + .skin-1 .main-content .h-sidebar.sidebar .nav-list { + border-left: 1px solid #4a5c63; + } +} +.skin-1 .sidebar-scroll .sidebar-shortcuts { + border-bottom-color: #4a5c63; +} +.skin-1 .sidebar-scroll .sidebar-toggle { + border-top-color: #4a5c63; +} +.skin-1 .scrollout .scroll-track { + background-color: transparent; +} +.skin-1 .scrollout .scroll-bar { + background-color: #CCC; + background-color: rgba(0, 0, 0, 0.2); +} +@media only screen and (min-width: 768px) and (max-width: 991px) { + .skin-1 .navbar.navbar-collapse { + background-color: transparent; + } + .skin-1 .navbar.navbar-collapse:before, + .skin-1 .navbar.navbar-collapse .navbar-container { + background: #2c6aa0; + } +} +.skin-1 .nav-list > li.disabled:before { + display: none !important; +} +.skin-1 .nav-list > li.disabled > a { + background-color: #333 !important; + color: #AAA !important; +} +.skin-1 .nav-list li .submenu > li.disabled > a, +.skin-1 .nav-list li.disabled .submenu > li > a { + background-color: #444 !important; + color: #A0A0A0 !important; + cursor: not-allowed !important; +} +.skin-1 .nav-list li .submenu > li.disabled > a > .menu-icon, +.skin-1 .nav-list li.disabled .submenu > li > a > .menu-icon { + display: none; +} +.skin-1 .nav-list > li.disabled .submenu > li > a { + border-top-color: #505050; +} +.skin-2 { + background-color: #5c5c5c; +} +.skin-2 .navbar { + background: #c6487e; +} +.skin-2 .sidebar { + background-color: #505050; + border-right-width: 0; +} +.skin-2 .nav-list > li { + border-color: #484848; +} +.skin-2 .nav-list > li:first-child { + border-top-color: #5a5a5a; +} +.skin-2 .nav-list > li:last-child { + border-bottom-color: #626262; +} +.skin-2 .nav-list > li > a { + background-color: #393939; + color: #e6e6e6; +} +.skin-2 .nav-list > li > a > .menu-text, +.skin-2 .nav-list > li > a > .arrow { + color: #e6e6e6; +} +.skin-2 .nav-list > li:hover > a, +.skin-2 .nav-list > li.hover-show > a { + background-color: #bd5289; +} +.skin-2 .nav-list > li:hover > a > .menu-text, +.skin-2 .nav-list > li.hover-show > a > .menu-text { + font-weight: bold; + color: #ffffff; + color: rgba(0, 0, 0, 0.6); +} +.skin-2 .nav-list > li:hover > a > .menu-icon, +.skin-2 .nav-list > li.hover-show > a > .menu-icon, +.skin-2 .nav-list > li:hover > a > .arrow, +.skin-2 .nav-list > li.hover-show > a > .arrow { + color: #ffffff; +} +.skin-2 .nav-list > li.open > a { + background-color: #bd5289; +} +.skin-2 .nav-list > li.open > a > .menu-text { + font-weight: bold; + color: rgba(0, 0, 0, 0.6); +} +.skin-2 .nav-list > li.open > a > .menu-icon, +.skin-2 .nav-list > li.open > a > .arrow { + color: #ffffff; +} +.skin-2 .nav-list > li.active > a { + background-color: #242424; + color: #ffffff; +} +.skin-2 .nav-list > li.active > a > .menu-icon { + color: inherit; +} +.skin-2 .nav-list > li.active > a > .menu-text, +.skin-2 .nav-list > li.active > a > .arrow { + color: #ffffff; +} +.skin-2 .nav-list > li.active:hover > a, +.skin-2 .nav-list > li.active:not(.highlight):hover > a, +.skin-2 .nav-list > li.active.hover-show > a, +.skin-2 .nav-list > li.active:not(.highlight).hover-show > a, +.skin-2 .nav-list > li.active.open > a, +.skin-2 .nav-list > li.active.open:not(.highlight) > a { + background-color: #242424; +} +.skin-2 .nav-list > li.active.highlight > a { + background-color: #bd5289; +} +.skin-2 .nav-list > li.active.highlight > a > .menu-icon { + color: #ffffff; +} +.skin-2 .nav-list li.active > a:after { + border-right-color: #FFF; + -moz-border-right-colors: #FFF; + border-width: 11px 7px; + top: 8px; + right: 0; +} +.skin-2 .nav-list > li.active > .submenu li.active > a:after { + top: 6px; +} +.skin-2 .nav-list > li:before { + top: 0; + height: 39px; +} +.skin-2 .nav-list > li.active:before { + display: block; + background-color: #ce7da7; +} +.skin-2 .nav-list > li.active.highlight:before, +.skin-2 .nav-list > li:before { + background-color: #dea8c4; +} +.skin-2 .nav-list > li > .submenu { + border-top-width: 0; + background-color: #45303b; +} +.skin-2 .nav-list > li > .submenu > li, +.skin-2 .nav-list > li > .submenu > li > .submenu, +.skin-2 .nav-list > li > .submenu > li > .submenu > li, +.skin-2 .nav-list > li > .submenu > li > .submenu > li .submenu, +.skin-2 .nav-list > li > .submenu > li > .submenu > li .submenu li { + background-color: inherit; +} +.skin-2 .nav-list > li .submenu > li > a { + border-top: 1px solid; + border-top-color: #555; + border-top-color: rgba(255, 255, 255, 0.08); + background-color: transparent; +} +.skin-2 .nav-list > li .submenu > li > a:hover { + background-color: rgba(0, 0, 0, 0.1); + color: #FFF; +} +.skin-2 .nav-list > li .submenu > li > a:hover > .menu-icon { + background-color: transparent; +} +.skin-2 .nav-list > li.active .submenu > li > a:hover { + background-color: rgba(0, 0, 0, 0.1); +} +.skin-2 .nav-list > li > .submenu > li > a { + color: #eeeeee; +} +.skin-2 .nav-list > li > .submenu > li:first-child > a { + border-top-width: 0; +} +.skin-2 .nav-list > li > .submenu > li.active > a { + background-color: rgba(0, 0, 0, 0.05); + font-weight: bold; +} +.skin-2 .nav-list > li > .submenu > li.active > a > .menu-icon { + color: inherit; + background-color: transparent; +} +.skin-2 .nav-list li .submenu li > a { + color: #eeeeee; + font-size: 13px; +} +.skin-2 .nav-list > li > .submenu:before, +.skin-2 .nav-list > li > .submenu > li:before { + display: none; +} +.skin-2 .nav-list > li .submenu > li > a { + padding-left: 32px; +} +.skin-2 .nav-list > li .submenu > li > a > .menu-icon { + left: 12px; +} +@media only screen and (min-width: 992px) { + .skin-2 .nav-list > li .submenu > li.hover > a { + padding-left: 26px; + } + .skin-2 .nav-list > li .submenu > li.hover > a > .menu-icon { + left: 6px; + } +} +.skin-2 .nav-list > li > .submenu li > .submenu > li > a { + margin-left: 0; + padding-left: 37px; + padding-top: 8px; + padding-bottom: 10px; + border-top-width: 0; +} +.skin-2 .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: 0; + padding-left: 51px; +} +@media only screen and (min-width: 992px) { + .skin-2 .nav-list > li > .submenu li > .submenu > li.hover > a { + border-top-width: 1px; + padding-bottom: 9px; + } + .skin-2 .nav-list > li > .submenu li > .submenu > li.hover:first-child > a { + border-top-width: 0; + } +} +.skin-2 .nav-list > li > .submenu li:hover > a, +.skin-2 .nav-list > li > .submenu li.hover-show > a, +.skin-2 .nav-list > li > .submenu li.active > a, +.skin-2 .nav-list > li > .submenu li.open > a { + color: #da81af; +} +.skin-2 .nav-list > li > .submenu li > a > .ace-icon { + background-color: transparent; +} +.skin-2 .nav-list > li:hover:not(.active) > a .badge, +.skin-2 .nav-list > li.hover-show:not(.active) > a .badge, +.skin-2 .nav-list > li.open:not(.active) > a .badge, +.skin-2 .nav-list > li.active.highlight .badge, +.skin-2 .nav-list > li:hover:not(.active) > a .label, +.skin-2 .nav-list > li.hover-show:not(.active) > a .label, +.skin-2 .nav-list > li.open:not(.active) > a .label, +.skin-2 .nav-list > li.active.highlight .label { + background-color: rgba(0, 0, 0, 0.5) !important; +} +.skin-2 .nav-list > li:hover:not(.active) > a .badge.badge-transparent, +.skin-2 .nav-list > li.hover-show:not(.active) > a .badge.badge-transparent, +.skin-2 .nav-list > li.open:not(.active) > a .badge.badge-transparent, +.skin-2 .nav-list > li.active.highlight .badge.badge-transparent, +.skin-2 .nav-list > li:hover:not(.active) > a .label.label-transparent, +.skin-2 .nav-list > li.hover-show:not(.active) > a .label.label-transparent, +.skin-2 .nav-list > li.open:not(.active) > a .label.label-transparent, +.skin-2 .nav-list > li.active.highlight .label.label-transparent { + color: rgba(255, 255, 255, 0.8) !important; + background-color: transparent !important; +} +.skin-2 .nav-list > li:hover:not(.active) > a .badge.badge-transparent .ace-icon, +.skin-2 .nav-list > li.hover-show:not(.active) > a .badge.badge-transparent .ace-icon, +.skin-2 .nav-list > li.open:not(.active) > a .badge.badge-transparent .ace-icon, +.skin-2 .nav-list > li.active.highlight .badge.badge-transparent .ace-icon, +.skin-2 .nav-list > li:hover:not(.active) > a .label.label-transparent .ace-icon, +.skin-2 .nav-list > li.hover-show:not(.active) > a .label.label-transparent .ace-icon, +.skin-2 .nav-list > li.open:not(.active) > a .label.label-transparent .ace-icon, +.skin-2 .nav-list > li.active.highlight .label.label-transparent .ace-icon { + color: rgba(255, 255, 255, 0.8) !important; +} +.skin-2 .nav-list li > .arrow:after { + border-right-color: #45303b; + -moz-border-right-colors: #45303b; +} +.skin-2 .nav-list li > .arrow:before { + border-right-color: #191919; + -moz-border-right-colors: #191919; +} +.skin-2 .nav-list > li.pull_up > .arrow:after { + border-right-color: #45303b !important; + -moz-border-right-colors: #45303b !important; +} +.skin-2 .nav-list > li.pull_up > .arrow:before { + border-right-color: #191919 !important; + -moz-border-right-colors: #191919 !important; +} +.skin-2 .nav-list > li.active.highlight > a:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-left-color: #bd5289; + -moz-border-left-colors: #bd5289; + border-width: 20px 0 20px 10px; + z-index: 1; + top: 0; + right: -10px; + display: block; +} +.skin-2 .nav-list > li:nth-child( 1) > a { + color: #00be67; +} +.skin-2 .nav-list > li:nth-child( 1):hover > a, +.skin-2 .nav-list > li:nth-child( 1).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 1) > a { + background-color: #18a665; +} +.skin-2 .nav-list > li:nth-child( 1) > .submenu { + background-color: #2a4137; +} +.skin-2 .nav-list > li:nth-child( 1) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 1) li > .arrow:after { + border-right-color: #2a4137; + -moz-border-right-colors: #2a4137; +} +.skin-2 .nav-list > li.pull_up:nth-child( 1) > .arrow:after { + border-right-color: #2a4137 !important; + -moz-border-right-colors: #2a4137 !important; +} +.skin-2 .nav-list > li:nth-child( 1) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 1) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 1) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 1) > .submenu li.open > a { + color: #1eed8e; +} +.skin-2 .nav-list > li.active:nth-child( 1):before { + background-color: #ce7da7; + background-color: #52bc8c; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 1):before, +.skin-2 .nav-list > li:nth-child( 1):before { + background-color: #8bd3b2; +} +.skin-2 .nav-list > li:nth-child( 2) > a { + color: #5ed02b; +} +.skin-2 .nav-list > li:nth-child( 2):hover > a, +.skin-2 .nav-list > li:nth-child( 2).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 2) > a { + background-color: #6ab14a; +} +.skin-2 .nav-list > li:nth-child( 2) > .submenu { + background-color: #36432f; +} +.skin-2 .nav-list > li:nth-child( 2) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 2) li > .arrow:after { + border-right-color: #36432f; + -moz-border-right-colors: #36432f; +} +.skin-2 .nav-list > li.pull_up:nth-child( 2) > .arrow:after { + border-right-color: #36432f !important; + -moz-border-right-colors: #36432f !important; +} +.skin-2 .nav-list > li:nth-child( 2) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 2) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 2) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 2) > .submenu li.open > a { + color: #92d275; +} +.skin-2 .nav-list > li.active:nth-child( 2):before { + background-color: #ce7da7; + background-color: #8fc478; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 2):before, +.skin-2 .nav-list > li:nth-child( 2):before { + background-color: #b4d8a5; +} +.skin-2 .nav-list > li:nth-child( 3) > a { + color: #a7d700; +} +.skin-2 .nav-list > li:nth-child( 3):hover > a, +.skin-2 .nav-list > li:nth-child( 3).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 3) > a { + background-color: #98bc1b; +} +.skin-2 .nav-list > li:nth-child( 3) > .submenu { + background-color: #3e442a; +} +.skin-2 .nav-list > li:nth-child( 3) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 3) li > .arrow:after { + border-right-color: #3e442a; + -moz-border-right-colors: #3e442a; +} +.skin-2 .nav-list > li.pull_up:nth-child( 3) > .arrow:after { + border-right-color: #3e442a !important; + -moz-border-right-colors: #3e442a !important; +} +.skin-2 .nav-list > li:nth-child( 3) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 3) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 3) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 3) > .submenu li.open > a { + color: #c5ef35; +} +.skin-2 .nav-list > li.active:nth-child( 3):before { + background-color: #ce7da7; + background-color: #b2cd54; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 3):before, +.skin-2 .nav-list > li:nth-child( 3):before { + background-color: #ccde8d; +} +.skin-2 .nav-list > li:nth-child( 4) > a { + color: #cee100; +} +.skin-2 .nav-list > li:nth-child( 4):hover > a, +.skin-2 .nav-list > li:nth-child( 4).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 4) > a { + background-color: #b7c51c; +} +.skin-2 .nav-list > li:nth-child( 4) > .submenu { + background-color: #43452a; +} +.skin-2 .nav-list > li:nth-child( 4) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 4) li > .arrow:after { + border-right-color: #43452a; + -moz-border-right-colors: #43452a; +} +.skin-2 .nav-list > li.pull_up:nth-child( 4) > .arrow:after { + border-right-color: #43452a !important; + -moz-border-right-colors: #43452a !important; +} +.skin-2 .nav-list > li:nth-child( 4) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 4) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 4) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 4) > .submenu li.open > a { + color: #e0ef3e; +} +.skin-2 .nav-list > li.active:nth-child( 4):before { + background-color: #ce7da7; + background-color: #c9d355; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 4):before, +.skin-2 .nav-list > li:nth-child( 4):before { + background-color: #dbe28e; +} +.skin-2 .nav-list > li:nth-child( 5) > a { + color: #f8c600; +} +.skin-2 .nav-list > li:nth-child( 5):hover > a, +.skin-2 .nav-list > li:nth-child( 5).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 5) > a { + background-color: #d9b41f; +} +.skin-2 .nav-list > li:nth-child( 5) > .submenu { + background-color: #48422a; +} +.skin-2 .nav-list > li:nth-child( 5) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 5) li > .arrow:after { + border-right-color: #48422a; + -moz-border-right-colors: #48422a; +} +.skin-2 .nav-list > li.pull_up:nth-child( 5) > .arrow:after { + border-right-color: #48422a !important; + -moz-border-right-colors: #48422a !important; +} +.skin-2 .nav-list > li:nth-child( 5) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 5) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 5) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 5) > .submenu li.open > a { + color: #f1d153; +} +.skin-2 .nav-list > li.active:nth-child( 5):before { + background-color: #ce7da7; + background-color: #e3c657; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 5):before, +.skin-2 .nav-list > li:nth-child( 5):before { + background-color: #ecd98f; +} +.skin-2 .nav-list > li:nth-child( 6) > a { + color: #ffab00; +} +.skin-2 .nav-list > li:nth-child( 6):hover > a, +.skin-2 .nav-list > li:nth-child( 6).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 6) > a { + background-color: #dfa020; +} +.skin-2 .nav-list > li:nth-child( 6) > .submenu { + background-color: #493f2a; +} +.skin-2 .nav-list > li:nth-child( 6) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 6) li > .arrow:after { + border-right-color: #493f2a; + -moz-border-right-colors: #493f2a; +} +.skin-2 .nav-list > li.pull_up:nth-child( 6) > .arrow:after { + border-right-color: #493f2a !important; + -moz-border-right-colors: #493f2a !important; +} +.skin-2 .nav-list > li:nth-child( 6) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 6) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 6) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 6) > .submenu li.open > a { + color: #f2c05a; +} +.skin-2 .nav-list > li.active:nth-child( 6):before { + background-color: #ce7da7; + background-color: #e7b858; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 6):before, +.skin-2 .nav-list > li:nth-child( 6):before { + background-color: #efd08f; +} +.skin-2 .nav-list > li:nth-child( 7) > a { + color: #ff6e00; +} +.skin-2 .nav-list > li:nth-child( 7):hover > a, +.skin-2 .nav-list > li:nth-child( 7).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 7) > a { + background-color: #df7220; +} +.skin-2 .nav-list > li:nth-child( 7) > .submenu { + background-color: #49372a; +} +.skin-2 .nav-list > li:nth-child( 7) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 7) li > .arrow:after { + border-right-color: #49372a; + -moz-border-right-colors: #49372a; +} +.skin-2 .nav-list > li.pull_up:nth-child( 7) > .arrow:after { + border-right-color: #49372a !important; + -moz-border-right-colors: #49372a !important; +} +.skin-2 .nav-list > li:nth-child( 7) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 7) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 7) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 7) > .submenu li.open > a { + color: #f29b5a; +} +.skin-2 .nav-list > li.active:nth-child( 7):before { + background-color: #ce7da7; + background-color: #e79658; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 7):before, +.skin-2 .nav-list > li:nth-child( 7):before { + background-color: #efb98f; +} +.skin-2 .nav-list > li:nth-child( 8) > a { + color: #f21c30; +} +.skin-2 .nav-list > li:nth-child( 8):hover > a, +.skin-2 .nav-list > li:nth-child( 8).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 8) > a { + background-color: #d43a48; +} +.skin-2 .nav-list > li:nth-child( 8) > .submenu { + background-color: #472e30; +} +.skin-2 .nav-list > li:nth-child( 8) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 8) li > .arrow:after { + border-right-color: #472e30; + -moz-border-right-colors: #472e30; +} +.skin-2 .nav-list > li.pull_up:nth-child( 8) > .arrow:after { + border-right-color: #472e30 !important; + -moz-border-right-colors: #472e30 !important; +} +.skin-2 .nav-list > li:nth-child( 8) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 8) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 8) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 8) > .submenu li.open > a { + color: #ea717c; +} +.skin-2 .nav-list > li.active:nth-child( 8):before { + background-color: #ce7da7; + background-color: #df6b76; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 8):before, +.skin-2 .nav-list > li:nth-child( 8):before { + background-color: #ea9da4; +} +.skin-2 .nav-list > li:nth-child( 9) > a { + color: #db348a; +} +.skin-2 .nav-list > li:nth-child( 9):hover > a, +.skin-2 .nav-list > li:nth-child( 9).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 9) > a { + background-color: #bd5289; +} +.skin-2 .nav-list > li:nth-child( 9) > .submenu { + background-color: #45303b; +} +.skin-2 .nav-list > li:nth-child( 9) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 9) li > .arrow:after { + border-right-color: #45303b; + -moz-border-right-colors: #45303b; +} +.skin-2 .nav-list > li.pull_up:nth-child( 9) > .arrow:after { + border-right-color: #45303b !important; + -moz-border-right-colors: #45303b !important; +} +.skin-2 .nav-list > li:nth-child( 9) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 9) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 9) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 9) > .submenu li.open > a { + color: #da81af; +} +.skin-2 .nav-list > li.active:nth-child( 9):before { + background-color: #ce7da7; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 9):before, +.skin-2 .nav-list > li:nth-child( 9):before { + background-color: #dea8c4; +} +.skin-2 .nav-list > li:nth-child( 10) > a { + color: #c55ee7; +} +.skin-2 .nav-list > li:nth-child( 10):hover > a, +.skin-2 .nav-list > li:nth-child( 10).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 10) > a { + background-color: #b975d0; +} +.skin-2 .nav-list > li:nth-child( 10) > .submenu { + background-color: #423646; +} +.skin-2 .nav-list > li:nth-child( 10) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 10) li > .arrow:after { + border-right-color: #423646; + -moz-border-right-colors: #423646; +} +.skin-2 .nav-list > li.pull_up:nth-child( 10) > .arrow:after { + border-right-color: #423646 !important; + -moz-border-right-colors: #423646 !important; +} +.skin-2 .nav-list > li:nth-child( 10) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 10) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 10) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 10) > .submenu li.open > a { + color: #d9a9e9; +} +.skin-2 .nav-list > li.active:nth-child( 10):before { + background-color: #ce7da7; + background-color: #cb98dc; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 10):before, +.skin-2 .nav-list > li:nth-child( 10):before { + background-color: #dcbae7; +} +.skin-2 .nav-list > li:nth-child( 11) > a { + color: #218bee; +} +.skin-2 .nav-list > li:nth-child( 11):hover > a, +.skin-2 .nav-list > li:nth-child( 11).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 11) > a { + background-color: #3f8ad0; +} +.skin-2 .nav-list > li:nth-child( 11) > .submenu { + background-color: #2e3b47; +} +.skin-2 .nav-list > li:nth-child( 11) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 11) li > .arrow:after { + border-right-color: #2e3b47; + -moz-border-right-colors: #2e3b47; +} +.skin-2 .nav-list > li.pull_up:nth-child( 11) > .arrow:after { + border-right-color: #2e3b47 !important; + -moz-border-right-colors: #2e3b47 !important; +} +.skin-2 .nav-list > li:nth-child( 11) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 11) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 11) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 11) > .submenu li.open > a { + color: #74b0e7; +} +.skin-2 .nav-list > li.active:nth-child( 11):before { + background-color: #ce7da7; + background-color: #6fa7dc; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 11):before, +.skin-2 .nav-list > li:nth-child( 11):before { + background-color: #9fc4e8; +} +.skin-2 .nav-list > li:nth-child( 12) > a { + color: #2ecee7; +} +.skin-2 .nav-list > li:nth-child( 12):hover > a, +.skin-2 .nav-list > li:nth-child( 12).hover-show > a, +.skin-2 .nav-list > li.open:nth-child( 12) > a { + background-color: #4bb9ca; +} +.skin-2 .nav-list > li:nth-child( 12) > .submenu { + background-color: #304346; +} +.skin-2 .nav-list > li:nth-child( 12) > .arrow:after, +.skin-2 .nav-list > li:nth-child( 12) li > .arrow:after { + border-right-color: #304346; + -moz-border-right-colors: #304346; +} +.skin-2 .nav-list > li.pull_up:nth-child( 12) > .arrow:after { + border-right-color: #304346 !important; + -moz-border-right-colors: #304346 !important; +} +.skin-2 .nav-list > li:nth-child( 12) > .submenu li:hover > a, +.skin-2 .nav-list > li:nth-child( 12) > .submenu li.hover-show > a, +.skin-2 .nav-list > li:nth-child( 12) > .submenu li.active > a, +.skin-2 .nav-list > li:nth-child( 12) > .submenu li.open > a { + color: #7ed6e3; +} +.skin-2 .nav-list > li.active:nth-child( 12):before { + background-color: #ce7da7; + background-color: #78cad7; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 12):before, +.skin-2 .nav-list > li:nth-child( 12):before { + background-color: #a5dce4; +} +@media only screen and (min-width: 992px) { + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 1) > a { + color: #00be67; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 1) > .arrow:after { + border-bottom-color: #2a4137; + -moz-border-bottom-colors: #2a4137; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 2) > a { + color: #5ed02b; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 2) > .arrow:after { + border-bottom-color: #36432f; + -moz-border-bottom-colors: #36432f; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 3) > a { + color: #a7d700; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 3) > .arrow:after { + border-bottom-color: #3e442a; + -moz-border-bottom-colors: #3e442a; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 4) > a { + color: #cee100; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 4) > .arrow:after { + border-bottom-color: #43452a; + -moz-border-bottom-colors: #43452a; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 5) > a { + color: #f8c600; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 5) > .arrow:after { + border-bottom-color: #48422a; + -moz-border-bottom-colors: #48422a; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 6) > a { + color: #ffab00; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 6) > .arrow:after { + border-bottom-color: #493f2a; + -moz-border-bottom-colors: #493f2a; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 7) > a { + color: #ff6e00; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 7) > .arrow:after { + border-bottom-color: #49372a; + -moz-border-bottom-colors: #49372a; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 8) > a { + color: #f21c30; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 8) > .arrow:after { + border-bottom-color: #472e30; + -moz-border-bottom-colors: #472e30; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 9) > a { + color: #db348a; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 9) > .arrow:after { + border-bottom-color: #45303b; + -moz-border-bottom-colors: #45303b; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 10) > a { + color: #c55ee7; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 10) > .arrow:after { + border-bottom-color: #423646; + -moz-border-bottom-colors: #423646; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 11) > a { + color: #218bee; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 11) > .arrow:after { + border-bottom-color: #2e3b47; + -moz-border-bottom-colors: #2e3b47; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 12) > a { + color: #2ecee7; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover:nth-child( 12) > .arrow:after { + border-bottom-color: #304346; + -moz-border-bottom-colors: #304346; + } +} +.skin-2 .nav-list > li.highlight.active:nth-child( 1) > a { + background-color: #18a665; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 1) > a:after { + border-left-color: #18a665; + -moz-border-left-colors: #18a665; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 2) > a { + background-color: #6ab14a; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 2) > a:after { + border-left-color: #6ab14a; + -moz-border-left-colors: #6ab14a; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 3) > a { + background-color: #98bc1b; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 3) > a:after { + border-left-color: #98bc1b; + -moz-border-left-colors: #98bc1b; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 4) > a { + background-color: #b7c51c; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 4) > a:after { + border-left-color: #b7c51c; + -moz-border-left-colors: #b7c51c; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 5) > a { + background-color: #d9b41f; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 5) > a:after { + border-left-color: #d9b41f; + -moz-border-left-colors: #d9b41f; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 6) > a { + background-color: #dfa020; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 6) > a:after { + border-left-color: #dfa020; + -moz-border-left-colors: #dfa020; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 7) > a { + background-color: #df7220; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 7) > a:after { + border-left-color: #df7220; + -moz-border-left-colors: #df7220; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 8) > a { + background-color: #d43a48; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 8) > a:after { + border-left-color: #d43a48; + -moz-border-left-colors: #d43a48; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 9) > a { + background-color: #bd5289; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 9) > a:after { + border-left-color: #bd5289; + -moz-border-left-colors: #bd5289; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 10) > a { + background-color: #b975d0; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 10) > a:after { + border-left-color: #b975d0; + -moz-border-left-colors: #b975d0; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 11) > a { + background-color: #3f8ad0; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 11) > a:after { + border-left-color: #3f8ad0; + -moz-border-left-colors: #3f8ad0; +} +.skin-2 .nav-list > li.highlight.active:nth-child( 12) > a { + background-color: #4bb9ca; +} +.skin-2 .nav-list > li.active.highlight:nth-child( 12) > a:after { + border-left-color: #4bb9ca; + -moz-border-left-colors: #4bb9ca; +} +.skin-2 .sidebar-shortcuts .btn { + background-color: #555 !important; + border-radius: 32px; + border-width: 2px; +} +.skin-2 .sidebar-shortcuts .btn:hover { + background-color: #222 !important; +} +.skin-2 .sidebar-shortcuts .btn:focus { + outline: none; +} +.skin-2 .sidebar-shortcuts-mini .btn { + border-radius: 32px; + border-width: 2px; + opacity: 1; + padding: 6px; +} +.skin-2 .sidebar-shortcuts, +.skin-2 .sidebar-shortcuts-mini { + background-color: #393939; +} +.skin-2 .sidebar > .nav-search { + background-color: #393939; +} +.skin-2 .sidebar-toggle { + background-color: #2f2f2f; + border-color: #767676; +} +.skin-2 .sidebar-toggle:before { + border-color: inherit; +} +.skin-2 .sidebar-toggle > .ace-icon { + background-color: #333333; + border-color: #aaaaaa; + color: #aaaaaa; +} +.skin-2 .breadcrumbs { + border-width: 0; + background-color: #e7f2f8; + border-radius: 4px; + margin: 8px 8px 0; +} +@media only screen and (max-width: 991px) { + .skin-2 .breadcrumbs { + margin: 5px 5px 0; + } + .skin-2 .menu-toggler + .sidebar.responsive + .main-content .breadcrumbs { + margin: 0; + border-radius: 0; + } +} +@media (min-width: 992px) { + .skin-2 .breadcrumbs.breadcrumbs-fixed + .page-content { + padding-top: 57px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .skin-2 .breadcrumbs.breadcrumbs-fixed + .page-content { + padding-top: 54px; + } + .skin-2 .menu-toggler + .sidebar.reponsive + .main-content .breadcrumbs.breadcrumbs-fixed + .page-content { + padding-top: 49px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .skin-2 .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 734px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .skin-2 .container.main-container .breadcrumbs-fixed { + width: 734px; + } + .skin-2 .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + width: 734px; + } + .skin-2 .container.main-container .sidebar.responsive-min + .main-content .breadcrumbs-fixed { + width: 691px; + } +} +@media (min-width: 992px) { + .skin-2 .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 843px; + } +} +@media (min-width: 992px) { + .skin-2 .container.main-container .breadcrumbs-fixed { + width: 964px; + } + .skin-2 .container.main-container .sidebar + .main-content .breadcrumbs-fixed { + width: 758px; + } + .skin-2 .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + width: 905px; + } +} +@media (min-width: 1200px) { + .skin-2 .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 1043px; + } +} +@media (min-width: 1200px) { + .skin-2 .container.main-container .breadcrumbs-fixed { + width: 1148px; + } + .skin-2 .container.main-container .sidebar + .main-content .breadcrumbs-fixed { + width: 958px; + } + .skin-2 .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + width: 1105px; + } +} +@media (min-width: 768px) { + .skin-2 .container.main-container .sidebar.h-sidebar + .main-content .breadcrumbs-fixed { + width: auto; + } +} +@media only screen and (max-width: 991px) { + .skin-2 .sidebar { + border-width: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .skin-2 .nav-list li.active > a:after { + display: none; + } +} +.skin-2 .sidebar.menu-min .nav-list > li.open > a { + color: #e6e6e6; +} +.skin-2 .sidebar.menu-min .nav-list > li.active > a { + color: #ffffff; +} +.skin-2 .sidebar.menu-min .nav-list > li.active > a:after { + border-width: 9px 6px; + top: 10px; +} +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight > a:after { + border-width: 20px 0 20px 10px; + top: 0; +} +.skin-2 .sidebar.menu-min .nav-list > li > a > .menu-text { + background-color: inherit; + font-weight: bold; + color: rgba(0, 0, 0, 0.6); + border-width: 0 0 0 1px; + border-style: solid; + border-color: #333; + border-color: rgba(0, 0, 0, 0.4); + -webkit-box-shadow: none; + box-shadow: none; + margin-left: 1px; +} +.skin-2 .sidebar.menu-min .nav-list > li.active > a > .menu-text { + background-color: inherit; + color: #FFF; +} +.skin-2 .sidebar.menu-min .nav-list > li > .submenu { + border-style: solid; + border-width: 1px 0 0 1px; + border-color: #444; + border-color: rgba(0, 0, 0, 0.3); + -webkit-box-shadow: none; + box-shadow: none; + margin-left: 1px; +} +.skin-2 .sidebar.menu-min .nav-list > li > .submenu:after { + display: none; +} +.skin-2 .sidebar.menu-min .nav-list > li.active > .submenu { + border-top-color: rgba(0, 0, 0, 0.5); +} +.skin-2 .sidebar.menu-min .sidebar-shortcuts-large { + background-color: #393939; + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid #555555; + border-width: 0 1px 1px 0; + top: 0; + border-color: #666; +} +.skin-2 .sidebar.menu-min .nav-list > li > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight > .arrow:after { + border-right-color: #bd5289; + -moz-border-right-colors: #bd5289; +} +.skin-2 .sidebar.menu-min .nav-list > li > .arrow:before, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight > .arrow:before { + border-right-color: #333; + border-right-color: rgba(0, 0, 0, 0.7); + -moz-border-right-colors: rgba(0, 0, 0, 0.7); +} +.skin-2 .sidebar.menu-min .nav-list > li.active:not(.highlight) > a:not(.dropdown-toggle) > .menu-text { + border-width: 1px; + border-top-color: #555555; + border-bottom-color: #555555; + border-right-color: #555555; +} +.skin-2 .sidebar.menu-min .nav-list > li > a > .menu-text, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight > a > .menu-text { + border-left-color: #333; + border-left-color: rgba(0, 0, 0, 0.5); +} +.skin-2 .sidebar.menu-min .nav-list > li.pull_up > a > .menu-text, +.skin-2 .sidebar.menu-min .nav-list > li.pull_up.active.highlight > a > .menu-text { + border-left-color: #222; + border-left-color: rgba(0, 0, 0, 0.7); +} +.skin-2 .sidebar.menu-min .nav-list > li.pull_up.active:not(.highlight) > a > .menu-text { + border-left-color: #666; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 1) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 1) > .arrow:after { + border-right-color: #18a665; + -moz-border-right-colors: #18a665; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 2) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 2) > .arrow:after { + border-right-color: #6ab14a; + -moz-border-right-colors: #6ab14a; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 3) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 3) > .arrow:after { + border-right-color: #98bc1b; + -moz-border-right-colors: #98bc1b; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 4) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 4) > .arrow:after { + border-right-color: #b7c51c; + -moz-border-right-colors: #b7c51c; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 5) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 5) > .arrow:after { + border-right-color: #d9b41f; + -moz-border-right-colors: #d9b41f; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 6) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 6) > .arrow:after { + border-right-color: #dfa020; + -moz-border-right-colors: #dfa020; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 7) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 7) > .arrow:after { + border-right-color: #df7220; + -moz-border-right-colors: #df7220; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 8) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 8) > .arrow:after { + border-right-color: #d43a48; + -moz-border-right-colors: #d43a48; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 9) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 9) > .arrow:after { + border-right-color: #bd5289; + -moz-border-right-colors: #bd5289; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 10) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 10) > .arrow:after { + border-right-color: #b975d0; + -moz-border-right-colors: #b975d0; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 11) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 11) > .arrow:after { + border-right-color: #3f8ad0; + -moz-border-right-colors: #3f8ad0; +} +.skin-2 .sidebar.menu-min .nav-list > li:nth-child( 12) > .arrow:after, +.skin-2 .sidebar.menu-min .nav-list > li.active.highlight:nth-child( 12) > .arrow:after { + border-right-color: #4bb9ca; + -moz-border-right-colors: #4bb9ca; +} +.skin-2 .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #777; +} +.skin-2 .sidebar.menu-min .nav-list > li.active > .arrow:after { + border-right-color: #242424; + -moz-border-right-colors: #242424; +} +.skin-2 .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: #888; + -moz-border-right-colors: #FFF; +} +@media (max-width: 991px) { + .skin-2 .sidebar.responsive .nav-list > li.active > a:after { + display: none; + } + .skin-2 .sidebar.responsive .nav-list > li.active.highlight > a:after { + display: block; + } +} +@media (max-width: 991px) { + .skin-2 .sidebar.responsive-min .nav-list > li.open > a { + color: #e6e6e6; + } + .skin-2 .sidebar.responsive-min .nav-list > li.active > a { + color: #ffffff; + } + .skin-2 .sidebar.responsive-min .nav-list > li.active > a:after { + border-width: 9px 6px; + top: 10px; + } + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight > a:after { + border-width: 20px 0 20px 10px; + top: 0; + } + .skin-2 .sidebar.responsive-min .nav-list > li > a > .menu-text { + background-color: inherit; + font-weight: bold; + color: rgba(0, 0, 0, 0.6); + border-width: 0 0 0 1px; + border-style: solid; + border-color: #333; + border-color: rgba(0, 0, 0, 0.4); + -webkit-box-shadow: none; + box-shadow: none; + margin-left: 1px; + } + .skin-2 .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + background-color: inherit; + color: #FFF; + } + .skin-2 .sidebar.responsive-min .nav-list > li > .submenu { + border-style: solid; + border-width: 1px 0 0 1px; + border-color: #444; + border-color: rgba(0, 0, 0, 0.3); + -webkit-box-shadow: none; + box-shadow: none; + margin-left: 1px; + } + .skin-2 .sidebar.responsive-min .nav-list > li > .submenu:after { + display: none; + } + .skin-2 .sidebar.responsive-min .nav-list > li.active > .submenu { + border-top-color: rgba(0, 0, 0, 0.5); + } + .skin-2 .sidebar.responsive-min .sidebar-shortcuts-large { + background-color: #393939; + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid #555555; + border-width: 0 1px 1px 0; + top: 0; + border-color: #666; + } + .skin-2 .sidebar.responsive-min .nav-list > li > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight > .arrow:after { + border-right-color: #bd5289; + -moz-border-right-colors: #bd5289; + } + .skin-2 .sidebar.responsive-min .nav-list > li > .arrow:before, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight > .arrow:before { + border-right-color: #333; + border-right-color: rgba(0, 0, 0, 0.7); + -moz-border-right-colors: rgba(0, 0, 0, 0.7); + } + .skin-2 .sidebar.responsive-min .nav-list > li.active:not(.highlight) > a:not(.dropdown-toggle) > .menu-text { + border-width: 1px; + border-top-color: #555555; + border-bottom-color: #555555; + border-right-color: #555555; + } + .skin-2 .sidebar.responsive-min .nav-list > li > a > .menu-text, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight > a > .menu-text { + border-left-color: #333; + border-left-color: rgba(0, 0, 0, 0.5); + } + .skin-2 .sidebar.responsive-min .nav-list > li.pull_up > a > .menu-text, + .skin-2 .sidebar.responsive-min .nav-list > li.pull_up.active.highlight > a > .menu-text { + border-left-color: #222; + border-left-color: rgba(0, 0, 0, 0.7); + } + .skin-2 .sidebar.responsive-min .nav-list > li.pull_up.active:not(.highlight) > a > .menu-text { + border-left-color: #666; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 1) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 1) > .arrow:after { + border-right-color: #18a665; + -moz-border-right-colors: #18a665; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 2) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 2) > .arrow:after { + border-right-color: #6ab14a; + -moz-border-right-colors: #6ab14a; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 3) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 3) > .arrow:after { + border-right-color: #98bc1b; + -moz-border-right-colors: #98bc1b; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 4) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 4) > .arrow:after { + border-right-color: #b7c51c; + -moz-border-right-colors: #b7c51c; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 5) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 5) > .arrow:after { + border-right-color: #d9b41f; + -moz-border-right-colors: #d9b41f; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 6) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 6) > .arrow:after { + border-right-color: #dfa020; + -moz-border-right-colors: #dfa020; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 7) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 7) > .arrow:after { + border-right-color: #df7220; + -moz-border-right-colors: #df7220; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 8) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 8) > .arrow:after { + border-right-color: #d43a48; + -moz-border-right-colors: #d43a48; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 9) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 9) > .arrow:after { + border-right-color: #bd5289; + -moz-border-right-colors: #bd5289; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 10) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 10) > .arrow:after { + border-right-color: #b975d0; + -moz-border-right-colors: #b975d0; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 11) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 11) > .arrow:after { + border-right-color: #3f8ad0; + -moz-border-right-colors: #3f8ad0; + } + .skin-2 .sidebar.responsive-min .nav-list > li:nth-child( 12) > .arrow:after, + .skin-2 .sidebar.responsive-min .nav-list > li.active.highlight:nth-child( 12) > .arrow:after { + border-right-color: #4bb9ca; + -moz-border-right-colors: #4bb9ca; + } + .skin-2 .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + border-left-color: #777; + } + .skin-2 .sidebar.responsive-min .nav-list > li.active > .arrow:after { + border-right-color: #242424; + -moz-border-right-colors: #242424; + } + .skin-2 .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: #888; + -moz-border-right-colors: #FFF; + } + .skin-2 .sidebar.responsive-min .nav-list > li.active > a:after { + display: block; + } +} +@media only screen and (min-width: 992px) { + .skin-2 .nav-list li.hover > .submenu { + padding-left: 0; + padding-right: 0; + border: 1px solid; + border-color: rgba(0, 0, 0, 0.4); + } + .skin-2 .nav-list li.hover > .submenu > li > a { + margin-bottom: 0; + margin-top: 0; + } + .skin-2 .nav-list li.hover > .submenu > li:first-child > a { + border-top-width: 0; + } + .skin-2 .nav-list li .submenu > li.hover.active > a { + background-color: rgba(0, 0, 0, 0.05); + } + .skin-2 .nav-list > li > .submenu li.hover > .submenu { + padding: 2px; + } + .skin-2 .nav-list > li > .submenu li > .submenu > li.hover > a { + border-top-color: #222; + border-top-color: rgba(255, 255, 255, 0.08); + } + .skin-2 .nav-list > li.active.hover:hover > a.dropdown-toggle:after, + .skin-2 .nav-list > li.active.hover.hover-show > a.dropdown-toggle:after, + .skin-2 .menu-min .nav-list > li.active:hover > a:after, + .skin-2 .menu-min .nav-list > li.active.hover-show > a:after { + display: none; + } +} +@media only screen and (min-width: 992px) { + .skin-2 .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a { + background-color: #393939; + font-weight: normal; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a > .menu-icon, + .skin-2 .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a > .menu-text, + .skin-2 .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a > .arrow { + color: inherit; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li.open.hover:not(:hover):not(:focus):not(.active) > a { + color: #eeeeee; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu > li.open.hover:not(:hover):not(:focus):not(.active) > a > .menu-icon { + display: none; + } +} +@media only screen and (min-width: 992px) { + .skin-2 .sidebar:not(.navbar-collapse) .nav-list > li .submenu > li.hover:hover > a, + .skin-2 .sidebar:not(.navbar-collapse) .nav-list > li .submenu > li.hover.hover-show > a { + background-color: rgba(0, 0, 0, 0.1); + } + .skin-2 .sidebar:not(.navbar-collapse) .nav-list > li.active .submenu > li.hover:hover > a, + .skin-2 .sidebar:not(.navbar-collapse) .nav-list > li.active .submenu > li.hover.hover-show > a { + background-color: rgba(0, 0, 0, 0.1); + } +} +@media only screen and (max-width: 991px) { + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu:before, + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu > li:before, + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu > li > .submenu:before { + display: none; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li:before { + height: 41px !important; + top: 0; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li > a { + margin-left: 0; + padding-left: 42px; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: 0; + padding-left: 58px; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > a > .menu-text, + .skin-2 .sidebar.navbar-collapse .nav-list > li.active.highlight > a > .menu-text { + border-width: 0; + } +} +@media only screen and (min-width: 992px) and (max-width: 991px) { + .skin-2 .sidebar.navbar-collapse .nav-list > li.hover > .submenu { + padding-bottom: 0; + } + .skin-2 .sidebar.navbar-collapse .nav-list li.hover > .submenu { + border-width: 0; + } + .skin-2 .sidebar.navbar-collapse .nav-list li li.hover:hover > a, + .skin-2 .sidebar.navbar-collapse .nav-list li li.hover.hover-show > a { + background-color: transparent; + } + .skin-2 .sidebar.navbar-collapse .nav-list li li.hover > a:hover { + background-color: rgba(0, 0, 0, 0.1); + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu > li.active.hover:hover > a, + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu > li.active.hover.hover-show > a { + background-color: rgba(0, 0, 0, 0.05); + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu > li.active.hover > a:hover { + background-color: rgba(0, 0, 0, 0.1); + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu { + border-left-width: 0t; + padding: 0; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu > li > a { + margin-left: 0 !important; + padding-left: 37px !important; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: 0 !important; + padding-left: 51px !important; + } + .skin-2 .sidebar.navbar-collapse .nav-list li.hover > .submenu li > a { + padding-left: 32px !important; + } + .skin-2 .sidebar.navbar-collapse .nav-list li.hover > .submenu li > a > .menu-icon { + background-color: transparent; + } + .skin-2 .sidebar.navbar-collapse .nav-list li.hover > .submenu > li.active > a { + background-color: transparent; + font-weight: normal; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li.hover > .submenu > li.active > a { + background-color: rgba(0, 0, 0, 0.05); + font-weight: bold; + } + .skin-2 .sidebar.navbar-collapse .nav-list li.hover > .submenu > li.active > a:hover { + background-color: rgba(0, 0, 0, 0.1); + } + .skin-2 .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li.hover > a { + border-top-width: 0; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li .submenu > li.hover > a > .menu-icon { + left: 12px; + } + .skin-2 .sidebar.navbar-collapse .nav-list > li .submenu > li.hover:hover > a, + .skin-2 .sidebar.navbar-collapse .nav-list > li .submenu > li.hover.hover-show > a { + background-color: rgba(0, 0, 0, 0.1); + } + .skin-2 .sidebar.navbar-collapse .nav-list > li.active .submenu > li.hover:hover > a, + .skin-2 .sidebar.navbar-collapse .nav-list > li.active .submenu > li.hover.hover-show > a { + background-color: rgba(0, 0, 0, 0.1); + } + .skin-2 .sidebar.navbar-collapse.menu-min .nav-list li.hover > .submenu li > a { + padding-left: 32px; + } +} +@media only screen and (max-width: 991px) { + .skin-2 .sidebar.navbar-collapse.menu-min .sidebar-shortcuts-large { + border-width: 0; + } + .skin-2 .sidebar.navbar-collapse.menu-min .nav-list > li > a > .menu-text { + font-weight: normal; + color: #e6e6e6; + margin-left: 0; + } + .skin-2 .sidebar.navbar-collapse.menu-min .nav-list > li:hover > a > .menu-text { + font-weight: bold; + color: rgba(0, 0, 0, 0.6); + } + .skin-2 .sidebar.navbar-collapse.menu-min .nav-list > li.active > a > .menu-text { + font-weight: bold; + color: #ffffff; + } + .skin-2 .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu { + margin-left: 0; + border-top-width: 0; + } + .skin-2 .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > a > .menu-icon { + left: 12px; + } +} +@media (min-width: 992px) { + .skin-2 .sidebar.compact .nav-list > li:before { + height: auto; + bottom: 0; + } +} +.skin-2 .main-container .menu-toggler { + background-color: #d685b0; +} +.skin-2 .main-container .menu-toggler:before { + border-top-color: #FFF; + border-bottom-color: #FFF; +} +.skin-2 .main-container .menu-toggler:after { + border-top-color: #FFF; + border-bottom-color: #FFF; +} +.skin-2 .main-container .menu-toggler > .toggler-text { + border-top-color: #d685b0; + -moz-border-top-colors: #d685b0; +} +.skin-2 .navbar .navbar-toggle { + background-color: #DB78A1; +} +.skin-2 .navbar .navbar-toggle:focus { + background-color: #DB78A1; + border-color: transparent; +} +.skin-2 .navbar .navbar-toggle:hover { + background-color: #d76896; + border-color: rgba(255, 255, 255, 0.1); +} +.skin-2 .navbar .navbar-toggle.display, +.skin-2 .navbar .navbar-toggle[data-toggle=collapse]:not(.collapsed) { + background-color: #d2588b; + box-shadow: inset 1px 1px 2px 0 rgba(0, 0, 0, 0.25); + border-color: rgba(255, 255, 255, 0.35); +} +@media only screen and (min-width: 768px) { + .skin-2 .container.main-container:before { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.1); + } +} +@media only screen and (min-width: 992px) { + .skin-2 .sidebar.h-sidebar { + background-color: #393939; + } + .skin-2 .sidebar.h-sidebar:before { + background-color: #767676; + border-bottom-color: #7b7b7b; + } + .skin-2 .sidebar.h-sidebar .nav-list { + border-bottom-width: 0; + } + .skin-2 .sidebar.h-sidebar .nav-list > li > a > .menu-text { + color: #e6e6e6; + font-weight: normal; + } + .skin-2 .sidebar.h-sidebar .nav-list > li:hover > a > .menu-text, + .skin-2 .sidebar.h-sidebar .nav-list > li.hover-show > a > .menu-text { + color: #ffffff; + font-weight: normal; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.active > a > .menu-text { + font-weight: bold; + color: #ffffff; + } + .skin-2 .sidebar.h-sidebar .nav-list > li:before { + left: 0; + right: 0; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover > .submenu { + margin-left: -1px; + border-width: 1px; + border-top-color: rgba(0, 0, 0, 0.4); + } + .skin-2 .sidebar.h-sidebar .nav-list > li .submenu > li.hover > a { + padding-left: 22px; + } + .skin-2 .sidebar.h-sidebar .nav-list > li .submenu > li.hover > a > .menu-icon { + left: 4px; + } + .skin-2 .sidebar.h-sidebar.compact .nav-list > li.active:before { + height: 2px; + bottom: auto; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.highlight.active > a:after { + display: none; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover.active > a:after { + display: block; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-bottom-colors: #FFF; + border-color: transparent transparent #FFF; + border-width: 8px; + top: auto; + bottom: 0; + right: auto; + left: 50%; + margin-left: -8px; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover.active:hover > a:after, + .skin-2 .sidebar.h-sidebar .nav-list > li.hover.active.hover-show > a:after { + display: none; + } + .skin-2 .sidebar.h-sidebar .sidebar-shortcuts-large { + background-color: #505050; + border-width: 1px 0 0 !important; + border-top: 1px solid #777; + top: 100%; + } + .skin-2 .sidebar.h-sidebar .sidebar-shortcuts-mini { + padding-top: 2px; + } + .skin-2 .sidebar.h-sidebar .sidebar-shortcuts-mini > .btn { + padding: 7px; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.active.highlight > .arrow:after { + border-right-color: transparent; + border-bottom-color: #bd5289; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.active.highlight > .arrow:before { + border-right-color: transparent; + -moz-border-right-colors: none; + border-bottom-color: #191919; + -moz-border-bottom-colors: #191919; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover > .arrow:after { + border-right-color: transparent; + -moz-border-right-colors: none; + border-bottom-color: #45303b; + -moz-border-bottom-colors: #45303b; + } + .skin-2 .sidebar.h-sidebar .nav-list > li.hover > .arrow:before { + -moz-border-right-colors: none; + border-right-color: transparent; + border-bottom-color: #191919; + -moz-border-bottom-colors: #191919; + } + .skin-2 .sidebar.h-sidebar .sidebar-shortcuts-large:after { + border-bottom-color: #505050; + } + .skin-2 .sidebar.h-sidebar .sidebar-shortcuts-large:before { + border-bottom-color: #999; + -moz-border-bottom-colors: #999; + } + .skin-2 .sidebar.h-sidebar.menu-min .sidebar-shortcuts-mini { + padding-top: 3px; + } + .skin-2 .sidebar.h-sidebar.menu-min .sidebar-shortcuts-mini > .btn { + padding: 6px; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li > a > .menu-text { + border-width: 1px 0 0 0; + border-top-color: rgba(0, 0, 0, 0.5); + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li > .arrow:before, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight > .arrow:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.7); + border-bottom-color: rgba(0, 0, 0, 0.7); + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 1) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 1) > .arrow:after { + border-bottom-color: #18a665; + -moz-border-bottom-colors: #18a665; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 2) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 2) > .arrow:after { + border-bottom-color: #6ab14a; + -moz-border-bottom-colors: #6ab14a; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 3) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 3) > .arrow:after { + border-bottom-color: #98bc1b; + -moz-border-bottom-colors: #98bc1b; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 4) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 4) > .arrow:after { + border-bottom-color: #b7c51c; + -moz-border-bottom-colors: #b7c51c; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 5) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 5) > .arrow:after { + border-bottom-color: #d9b41f; + -moz-border-bottom-colors: #d9b41f; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 6) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 6) > .arrow:after { + border-bottom-color: #dfa020; + -moz-border-bottom-colors: #dfa020; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 7) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 7) > .arrow:after { + border-bottom-color: #df7220; + -moz-border-bottom-colors: #df7220; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 8) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 8) > .arrow:after { + border-bottom-color: #d43a48; + -moz-border-bottom-colors: #d43a48; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 9) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 9) > .arrow:after { + border-bottom-color: #bd5289; + -moz-border-bottom-colors: #bd5289; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 10) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 10) > .arrow:after { + border-bottom-color: #b975d0; + -moz-border-bottom-colors: #b975d0; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 11) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 11) > .arrow:after { + border-bottom-color: #3f8ad0; + -moz-border-bottom-colors: #3f8ad0; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li:nth-child( 12) > .arrow:after, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight:nth-child( 12) > .arrow:after { + border-bottom-color: #4bb9ca; + -moz-border-bottom-colors: #4bb9ca; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active > .arrow:after { + border-bottom-color: #242424; + -moz-border-bottom-colors: #242424; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active > .arrow:before { + border-bottom-color: #888; + -moz-border-bottom-colors: #FFF; + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li > a > .menu-text, + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active.highlight > a > .menu-text { + border-top-color: #333; + border-top-color: rgba(0, 0, 0, 0.5); + } + .skin-2 .sidebar.h-sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-top-color: #777; + } + .skin-2 .sidebar.h-sidebar + .main-content .breadcrumbs { + border-color: #d5e7f1; + top: 2px; + } + .skin-2 .h-sidebar.sidebar-fixed + .main-content { + padding-top: 86px; + } + .skin-2 .h-sidebar.sidebar-fixed.no-gap + .main-content { + padding-top: 72px; + } + .skin-2 .h-sidebar.sidebar-fixed.menu-min + .main-content { + padding-top: 61px; + } + .skin-2 .h-sidebar.sidebar-fixed.menu-min.no-gap + .main-content { + padding-top: 47px; + } + .skin-2 .main-content .h-sidebar.sidebar .nav-list { + border-left: 1px solid #575757; + } +} +.skin-2 .sidebar-scroll .sidebar-shortcuts { + border-bottom-color: #555555; +} +.skin-2 .sidebar-scroll .sidebar-toggle { + border-top-color: #555555; +} +.skin-2 .scrollout .scroll-track { + background-color: transparent; +} +.skin-2 .scrollout .scroll-bar { + background-color: #CCC; + background-color: rgba(0, 0, 0, 0.2); +} +@media only screen and (min-width: 768px) and (max-width: 991px) { + .skin-2 .navbar.navbar-collapse { + background-color: transparent; + } + .skin-2 .navbar.navbar-collapse:before, + .skin-2 .navbar.navbar-collapse .navbar-container { + background: #c6487e; + } +} +.skin-2 .nav-list > li.disabled:before { + display: none !important; +} +.skin-2 .nav-list > li.disabled > a, +.skin-2 .nav-list > li > a.disabled { + background-color: #555 !important; + color: #CCC !important; +} +.skin-2 .nav-list > li.disabled > a > .menu-text, +.skin-2 .nav-list > li > a.disabled > .menu-text { + color: #CCC !important; +} +.skin-2 .nav-list > li.disabled > a .label, +.skin-2 .nav-list > li > a.disabled .label, +.skin-2 .nav-list > li.disabled > a .badge, +.skin-2 .nav-list > li > a.disabled .badge { + background-color: rgba(0, 0, 0, 0.5) !important; +} +.skin-2 .nav-list > li.active.highlight.disabled > a:after, +.skin-2 .nav-list > li.active.highlight > a.disabled:after { + -moz-border-left-colors: #555 !important; + border-left-color: #555 !important; +} +.skin-2 .nav-list li .submenu > li.disabled > a, +.skin-2 .nav-list li .submenu > li > a.disabled, +.skin-2 .nav-list li.disabled .submenu > li > a, +.skin-2 .nav-list li > a.disabled + .submenu > li > a { + background-color: #666 !important; + color: #DDD !important; + cursor: not-allowed !important; +} +.skin-2 .nav-list li .submenu > li.disabled > a > .menu-icon, +.skin-2 .nav-list li .submenu > li > a.disabled > .menu-icon, +.skin-2 .nav-list li.disabled .submenu > li > a > .menu-icon, +.skin-2 .nav-list li > a.disabled + .submenu > li > a > .menu-icon { + display: none; +} +/* skin 3 */ +.skin-3 { + background-color: #bbbbbb; +} +.skin-3 .main-container:before { + background: #FFF; + background: -moz-linear-gradient(top, #eef5fa 0%, #ffffff 8%) 0 4px; + background: -webkit-gradient(linear, 0 0, 0 100%, from(#eef5fa), color-stop(4%, #ffffff)) 0 4px; + background: -webkit-linear-gradient(top, #eef5fa 0%, #ffffff 8%) 0 4px; + background: -o-linear-gradient(top, #eef5fa 0%, #ffffff 8%) 0 4px; + background: -ms-linear-gradient(top, #eef5fa 0%, #ffffff 8%) 0 4px; + background: linear-gradient(top, #eef5fa 0%, #ffffff 8%) 0 4px; + -moz-background-size: 100% 26px; + -webkit-background-size: 100% 26px; + -o-background-size: 100% 26px; + -ms-background-size: 100% 26px; + background-size: 100% 26px; +} +@media (min-width: 768px) { + .skin-3 .main-container.container:before { + -webkit-box-shadow: 0 0 0 1px rgba(50, 100, 200, 0.1); + box-shadow: 0 0 0 1px rgba(50, 100, 200, 0.1); + } +} +.skin-3 .navbar { + background: #404040; +} +.skin-3 .sidebar { + background-color: #dbdbdb; + border-style: solid; + border-width: 0 1px 0 0; + border-color: #a4c6dd; +} +.skin-3 .nav-list > li { + border-color: #f2f2f2; +} +.skin-3 .nav-list > li > a { + background-color: #e3e3e3; + color: #5a5a5a; +} +.skin-3 .nav-list > li > a > .arrow { + color: inherit; +} +.skin-3 .nav-list > li > a:focus { + background-color: #e8e8e8; + color: #5a5a5a; +} +.skin-3 .nav-list > li:hover { + border-color: #95bad2 !important; +} +.skin-3 .nav-list > li:hover + li { + border-top-color: #95bad2 !important; +} +.skin-3 .nav-list > li.open { + border-color: #95bad2 !important; +} +.skin-3 .nav-list > li.open + li { + border-top-color: #95bad2 !important; +} +.skin-3 .nav-list > li.active { + border-color: #a4c6dd !important; +} +.skin-3 .nav-list > li.active + li { + border-color: #a4c6dd !important; +} +.skin-3 .nav-list > li.active + li:last-child { + border-bottom-color: #f2f2f2 !important; +} +.skin-3 .nav-list > li.active + li:last-child:hover { + border-bottom-color: #95bad2 !important; +} +.skin-3 .nav-list > li:hover > a { + background-color: #ffffff; + color: #337dbb; +} +.skin-3 .nav-list > li.open > a, +.skin-3 .nav-list > li.open:hover > a { + color: #337dbb; + background-color: #f8f8f8; +} +.skin-3 .nav-list > li.open > a > .arrow { + color: inherit; +} +.skin-3 .nav-list > li.active > a, +.skin-3 .nav-list > li.active.highlight > a { + background-color: #f3faff !important; + color: #4d96cb !important; +} +.skin-3 .nav-list > li:hover:before, +.skin-3 .nav-list > li.open:before { + display: block; + background-color: #4f8ab4 !important; +} +.skin-3 .nav-list > li.active:before { + display: block; + background-color: #4D96CB !important; +} +.skin-3 .page-content { + background-color: transparent; +} +.skin-3 .infobox-container .infobox:not(.infobox-dark) { + border-style: solid; + background-color: transparent; +} +.skin-3 .nav-list > li.active:after { + display: none; +} +.skin-3 .nav-list li.active > a:after { + border-right-color: #FFF; + -moz-border-right-colors: #FFF; + border-width: 12px 8px; + top: 7px; + right: -1px; +} +.skin-3 .nav-list li.active > a:before { + display: block; + content: ""; + position: absolute; + background-color: transparent; + border-style: solid; + border-color: transparent; + border-right-color: #91bad6; + -moz-border-right-colors: #91bad6; + right: 0; + border-width: 12px 8px; + top: 7px; +} +.skin-3 .nav-list > li.active > .submenu li.active > a:before, +.skin-3 .nav-list > li.active > .submenu li.active > a:after { + top: 4px; +} +.skin-3 .nav-list li.active.open > a:before { + display: none; +} +.skin-3 .nav-list li.highlight.active.open > a:before { + display: block; +} +.skin-3 .nav-list li.active:not(.open) li.active > a:before { + display: none !important; +} +.skin-3 .nav-list > li.highlight.active > a:after { + border-left-color: #f3faff; + -moz-border-left-colors: #f3faff; +} +.skin-3 .nav-list > li.highlight.active > a:before { + border-left-color: #91bad6; + -moz-border-left-colors: #91bad6; +} +.skin-3 .nav-list li > .arrow:before { + border-right-color: #7fafcf; + -moz-border-right-colors: #7fafcf; +} +.skin-3 .nav-list > li .submenu > li.active:not(.open) > a { + background-color: #f5f7fa; +} +.skin-3 .nav-list > li .submenu > li.active:not(.open) > a:hover { + background-color: #f1f5f9; +} +@media only screen and (max-width: 991px) { + .skin-3 .sidebar.responsive .nav-list > li.active.open > a:after { + display: none; + } +} +@media only screen and (min-width: 992px) { + .skin-3 .nav-list li.hover > .submenu { + border-color: #99bfd9; + } +} +@media only screen and (min-width: 992px) { + .skin-3 .nav-list li.hover.active > a:before { + display: block; + } + .skin-3 .nav-list li.hover .submenu > li.active > a:before { + display: none ; + } +} +.skin-3 .sidebar.menu-min .nav-list > li > a > .menu-text { + background-color: #f1f5f9; + border-color: #A4C6DD; +} +.skin-3 .sidebar.menu-min .nav-list > li.active > a > .menu-text { + background-color: #EDF3F7; +} +.skin-3 .sidebar.menu-min .nav-list > li > .submenu { + border-color: #A4C6DD; + border-top-color: #C9DAE5; +} +.skin-3 .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: #709FBF; + -moz-border-right-colors: #709FBF; +} +.skin-3 .sidebar.menu-min .nav-list > li > .arrow:after { + border-right-color: #EDF3F7; + -moz-border-right-colors: #EDF3F7; +} +.skin-3 .sidebar.menu-min .nav-list li.active > a:after, +.skin-3 .sidebar.menu-min .nav-list li.active > a:before { + display: none; +} +.skin-3 .sidebar.menu-min .nav-list > li.active > a:after, +.skin-3 .sidebar.menu-min .nav-list > li.active > a:before { + display: block; + border-width: 9px 7px; + top: 10px; +} +.skin-3 .sidebar.menu-min .nav-list > li.active.highlight > a:after, +.skin-3 .sidebar.menu-min .nav-list > li.active.highlight > a:before { + border-width: 20px 0 21px 10px; + top: -1px; +} +.skin-3 .sidebar.menu-min .nav-list > li.active:hover > a:after, +.skin-3 .sidebar.menu-min .nav-list > li.active.hover-show > a:after, +.skin-3 .sidebar.menu-min .nav-list > li.active:hover > a:before, +.skin-3 .sidebar.menu-min .nav-list > li.active.hover-show > a:before { + display: none; +} +.skin-3 .sidebar.menu-min .sidebar-shortcuts-large { + background-color: #F5F5F5; +} +@media only screen and (max-width: 991px) { + .skin-3 .sidebar.menu-min.responsive .nav-list > li.active > a:after, + .skin-3 .sidebar.menu-min.responsive .nav-list > li.active > a:before { + display: none; + } +} +@media only screen and (max-width: 991px) { + .skin-3 .sidebar.responsive { + border-bottom-width: 1px !important; + } + .skin-3 .sidebar.responsive .nav-list > li.active.open > a:after { + display: none; + } + .skin-3 .sidebar.responsive .nav-list > li.active.highlight > a:after, + .skin-3 .sidebar.responsive .nav-list > li.active.highlight > a:before { + display: block; + } + .skin-3 .sidebar.navbar-collapse { + border-bottom-color: #A4C6DD; + } + .skin-3 .nav-list li.active > a:after, + .skin-3 .nav-list li.active > a:before { + display: none; + } + .skin-3 .sidebar.responsive-min .nav-list > li > a > .menu-text { + background-color: #f1f5f9; + border-color: #A4C6DD; + } + .skin-3 .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + background-color: #EDF3F7; + } + .skin-3 .sidebar.responsive-min .nav-list > li > .submenu { + border-color: #A4C6DD; + border-top-color: #C9DAE5; + } + .skin-3 .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: #709FBF; + -moz-border-right-colors: #709FBF; + } + .skin-3 .sidebar.responsive-min .nav-list > li > .arrow:after { + border-right-color: #EDF3F7; + -moz-border-right-colors: #EDF3F7; + } + .skin-3 .sidebar.responsive-min .nav-list li.active > a:after, + .skin-3 .sidebar.responsive-min .nav-list li.active > a:before { + display: none; + } + .skin-3 .sidebar.responsive-min .nav-list > li.active > a:after, + .skin-3 .sidebar.responsive-min .nav-list > li.active > a:before { + display: block; + border-width: 9px 7px; + top: 10px; + } + .skin-3 .sidebar.responsive-min .nav-list > li.active.highlight > a:after, + .skin-3 .sidebar.responsive-min .nav-list > li.active.highlight > a:before { + border-width: 20px 0 21px 10px; + top: -1px; + } + .skin-3 .sidebar.responsive-min .nav-list > li.active:hover > a:after, + .skin-3 .sidebar.responsive-min .nav-list > li.active.hover-show > a:after, + .skin-3 .sidebar.responsive-min .nav-list > li.active:hover > a:before, + .skin-3 .sidebar.responsive-min .nav-list > li.active.hover-show > a:before { + display: none; + } + .skin-3 .sidebar.responsive-min .sidebar-shortcuts-large { + background-color: #F5F5F5; + } + .skin-3 .sidebar.responsive-max { + border-width: 0 1px 1px 0; + } + .skin-3 .sidebar.responsive-max .nav-list li.hover.active > a:before { + display: none; + } + .skin-3 .sidebar.responsive-max .nav-list > li.active.open > a:after { + display: none; + } + .skin-3 .sidebar.responsive-max .nav-list > li.active.highlight > a:after, + .skin-3 .sidebar.responsive-max .nav-list > li.active.highlight > a:before { + display: block; + } + .skin-3 .sidebar.navbar-collapse .sidebar-shortcuts-large { + background-color: transparent; + } +} +.skin-3 .sidebar-shortcuts, +.skin-3 .sidebar-shortcuts-mini { + background-color: #dbdbdb; +} +.skin-3 .sidebar-shortcuts-large > .btn:focus { + outline: none; +} +.skin-3 .sidebar > .nav-search { + background-color: #dbdbdb; +} +.skin-3 .sidebar-toggle { + background-color: #d0d0d0; + border-color: #f2f2f2; +} +.skin-3 .sidebar-toggle:before { + border-color: #f2f2f2; +} +.skin-3 .sidebar-toggle > .ace-icon { + background-color: #ffffff; + background-color: #FFF; + border-color: #999; + color: #999; +} +.skin-3 .sidebar-scroll .nav-wrap-up + .sidebar-toggle:after { + display: block; + content: ""; + position: absolute; + top: 0; + bottom: 0; + right: -1px; + border-right: 1px solid #a4c6dd; +} +@media only screen and (max-width: 991px) { + .skin-3 .sidebar.navbar-collapse .nav-list > li:before { + height: 43px !important; + } + .skin-3 .sidebar.navbar-collapse .sidebar-shortcuts { + padding: 0 0 3px !important; + } +} +@media only screen and (min-width: 992px) { + .skin-3 .nav-list > li.active.hover:hover > a.dropdown-toggle:after, + .skin-3 .nav-list > li.active.hover.hover-show > a.dropdown-toggle:after, + .skin-3 .nav-list > li.active.hover:hover > a.dropdown-toggle:before, + .skin-3 .nav-list > li.active.hover.hover-show > a.dropdown-toggle:before { + display: none; + } +} +.skin-3 .main-container .menu-toggler { + background-color: #62A8D1; + color: #FFF; +} +.skin-3 .main-container .menu-toggler:before, +.skin-3 .main-container .menu-toggler:after { + border-color: #FFF; +} +.skin-3 .main-container .menu-toggler > .toggler-text { + border-top-color: #62A8D1; + -moz-border-top-colors: #62A8D1; +} +.skin-3 .main-container .menu-toggler > .toggler-text:after { + color: #FFF; +} +.skin-3 .navbar .navbar-toggle { + border-color: rgba(255, 255, 255, 0.15); + transition: background-color 0.1s ease 0s; + background-color: #648CAE; +} +.skin-3 .navbar .navbar-toggle:focus { + background-color: #648CAE; + border-color: rgba(255, 255, 255, 0.15); +} +.skin-3 .navbar .navbar-toggle:hover { + background-color: #5782a7; + border-color: rgba(255, 255, 255, 0.15); +} +.skin-3 .navbar .navbar-toggle.display, +.skin-3 .navbar .navbar-toggle[data-toggle=collapse]:not(.collapsed) { + background-color: #507899; + border-color: rgba(255, 255, 255, 0.3); +} +.skin-3 .breadcrumbs { + border-width: 0; + background-color: #e7f2f8; + border-radius: 4px; + margin: 8px 8px 0; +} +@media only screen and (max-width: 991px) { + .skin-3 .breadcrumbs { + margin: 5px 5px 0; + } + .skin-3 .menu-toggler + .sidebar.responsive + .main-content .breadcrumbs { + margin: 0; + border-radius: 0; + } +} +@media (min-width: 992px) { + .skin-3 .breadcrumbs.breadcrumbs-fixed + .page-content { + padding-top: 57px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .skin-3 .breadcrumbs.breadcrumbs-fixed + .page-content { + padding-top: 54px; + } + .skin-3 .menu-toggler + .sidebar.reponsive + .main-content .breadcrumbs.breadcrumbs-fixed + .page-content { + padding-top: 49px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .skin-3 .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 734px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .skin-3 .container.main-container .breadcrumbs-fixed { + width: 734px; + } + .skin-3 .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + width: 734px; + } + .skin-3 .container.main-container .sidebar.responsive-min + .main-content .breadcrumbs-fixed { + width: 691px; + } +} +@media (min-width: 992px) { + .skin-3 .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 843px; + } +} +@media (min-width: 992px) { + .skin-3 .container.main-container .breadcrumbs-fixed { + width: 964px; + } + .skin-3 .container.main-container .sidebar + .main-content .breadcrumbs-fixed { + width: 758px; + } + .skin-3 .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + width: 905px; + } +} +@media (min-width: 1200px) { + .skin-3 .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 1043px; + } +} +@media (min-width: 1200px) { + .skin-3 .container.main-container .breadcrumbs-fixed { + width: 1148px; + } + .skin-3 .container.main-container .sidebar + .main-content .breadcrumbs-fixed { + width: 958px; + } + .skin-3 .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + width: 1105px; + } +} +@media only screen and (max-width: 991px) { + .skin-3 .nav-list li.active > a:before, + .skin-3 .nav-list li.active > a:after { + display: none; + } +} +.skin-3 .sidebar-shortcuts-large > .btn { + line-height: 26px; + border-width: 1px; +} +.skin-3 .sidebar-shortcuts-mini { + padding-top: 3px; + padding-bottom: 3px; + padding-left: 1px; +} +.skin-3 .sidebar-shortcuts-mini > .btn { + border-width: 1px; + opacity: 1; + padding: 7px; + margin: 1px 1px 0 0; +} +@media only screen and (min-width: 992px) { + .skin-3 .sidebar.h-sidebar { + background-color: #e3e3e3; + } + .skin-3 .sidebar.h-sidebar:before { + background-color: #CBD0D6; + border-bottom-width: 0; + } + .skin-3 .sidebar.h-sidebar .sidebar-shortcuts-mini > .btn { + padding: 8px; + } + .skin-3 .sidebar.h-sidebar .sidebar-shortcuts-large { + background-color: #FFF; + line-height: 36px; + } + .skin-3 .sidebar.h-sidebar + .main-content .breadcrumbs { + border-color: #d5e7f1; + top: 2px; + } + .skin-3 .sidebar.h-sidebar .nav-list > li.hover > .submenu { + border-color: #A4C6DD; + } + .skin-3 .sidebar.h-sidebar .nav-list > li { + border-color: #f2f2f2; + } + .skin-3 .sidebar.h-sidebar .nav-list > li:hover, + .skin-3 .sidebar.h-sidebar .nav-list > li:hover + li { + border-left-color: #95bad2; + } + .skin-3 .sidebar.h-sidebar .nav-list > li:last-child:hover { + border-right-color: #95bad2; + } + .skin-3 .sidebar.h-sidebar .nav-list > li.active, + .skin-3 .sidebar.h-sidebar .nav-list > li.active + li, + .skin-3 .sidebar.h-sidebar .nav-list > li:hover + li.active { + border-left-color: #a4c6dd; + } + .skin-3 .sidebar.h-sidebar .nav-list > li.active:last-child { + border-right-color: #a4c6dd; + } + .skin-3 .sidebar.h-sidebar .nav-list > li.active > a:after { + left: 0; + top: auto; + right: auto; + bottom: -2px; + left: 50%; + margin-left: -7px; + border-color: transparent; + -moz-border-right-colors: none; + border-width: 8px 7px !important; + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .skin-3 .sidebar.h-sidebar .nav-list > li.active > a:before { + display: block; + left: 0; + top: auto; + right: auto; + bottom: -1px; + left: 50%; + margin-left: -8px !important; + border-width: 8px !important; + border-color: transparent; + -moz-border-right-colors: none; + border-bottom-color: #74add7; + -moz-border-bottom-colors: #74add7; + } + .skin-3 .sidebar.h-sidebar .nav-list > li.hover > .arrow:before { + -moz-border-right-colors: none; + border-right-color: transparent; + border-bottom-color: #7fafcf; + -moz-border-bottom-colors: #7fafcf; + } + .skin-3 .sidebar.h-sidebar.menu-min .sidebar-shortcuts { + max-width: 52px; + padding-left: 2px; + padding-right: 2px; + } + .skin-3 .sidebar.h-sidebar.menu-min .sidebar-shortcuts-mini > .btn { + padding: 7px; + } + .skin-3 .sidebar.h-sidebar.menu-min .nav-list > li.hover > .submenu { + border-top-color: #C9DAE5; + } + .skin-3 .sidebar.h-sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #A4C6DD; + } + .skin-3 .sidebar.h-sidebar.menu-min .nav-list > li > .arrow:after { + -moz-border-bottom-colors: #EDF3F7; + border-bottom-color: #EDF3F7; + } +} +.skin-3 .sidebar-scroll .sidebar-shortcuts { + border-bottom-color: 1px solid #99B6C9; +} +.skin-3 .sidebar-scroll .sidebar-toggle { + border-top-color: #99B6C9; +} +@media only screen and (min-width: 768px) and (max-width: 991px) { + .skin-3 .navbar.navbar-collapse { + background-color: transparent; + } + .skin-3 .navbar.navbar-collapse:before, + .skin-3 .navbar.navbar-collapse .navbar-container { + background: #404040; + } +} +.skin-3 .nav-list > li.disabled:before { + display: none !important; +} diff --git a/web/vendor/ace/css/ace.css b/web/vendor/ace/css/ace.css new file mode 100755 index 0000000..3e0ee95 --- /dev/null +++ b/web/vendor/ace/css/ace.css @@ -0,0 +1,19906 @@ +html { + min-height: 100%; + position: relative; +} +body { + background-color: #e4e6e9; + min-height: 100%; + padding-bottom: 0; + font-family: 'Open Sans'; + font-size: 13px; + color: #393939; + line-height: 1.5; +} +.main-container:before { + display: block; + content: ""; + position: absolute; + z-index: -2; + width: 100%; + max-width: inherit; + bottom: 0; + top: 0; + background-color: #FFF; +} +.main-container.container, +.rtl .main-container.container { + padding-left: 0; + padding-right: 0; +} +.main-container.container:before { + -webkit-box-shadow: 0 0 0 1px rgba(0,0,0,0.1); + box-shadow: 0 0 0 1px rgba(0,0,0,0.1); + width: inherit; +} +@media (max-width: 767px) { + .main-container.container:before { + -webkit-box-shadow: none; + box-shadow: none; + width: 100%; + } +} +.main-content { + margin-left: 0; + min-height: 100%; + padding: 0; +} +.main-content:before, +.main-content:after { + content: " "; + display: table; +} +.main-content:after { + clear: both; +} +.sidebar + .main-content { + margin-left: 190px; +} +.page-content { + background-color: #ffffff; + position: relative; + margin: 0; + padding: 8px 20px 24px; +} +.page-header { + margin: 0 0 12px; + border-bottom: 1px dotted #e2e2e2; + padding-bottom: 16px; + padding-top: 7px; +} +.page-header h1 { + padding: 0; + margin: 0 8px; + font-size: 24px; + font-weight: lighter; + color: #2679b5; +} +.page-header h1 small { + margin: 0 6px; + font-size: 14px; + font-weight: normal; + color: #8089a0; +} +.ajax-loading-overlay { + position: absolute; + z-index: 1999; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: rgba(255, 255, 255, 0.5); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#80FFFFFF', endColorstr='#80FFFFFF',GradientType=0 ); +} +.ajax-loading-overlay > .ajax-loading-icon { + position: relative; + left: 8px; + top: 8px; +} +.ajax-loading-overlay.content-loaded { + background-color: rgba(255, 255, 255, 0.4); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#66FFFFFF', endColorstr='#66FFFFFF',GradientType=0 ); +} +.ajax-loading-overlay.almost-loaded { + background-color: rgba(255, 255, 255, 0.3); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4CFFFFFF', endColorstr='#4CFFFFFF',GradientType=0 ); +} +.ajax-loading-overlay.ajax-overlay-body { + position: fixed; + z-index: 2999; +} +.ajax-loading-overlay.ajax-overlay-body > .ajax-loading-icon { + left: 8px; + top: 8px; +} +.ace-icon { + text-align: center; +} +a:focus, +a:active { + text-decoration: none; +} +h1 { + font-size: 32px; + font-weight: normal; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +h1.smaller { + font-size: 31px; +} +h1.bigger { + font-size: 33px; +} +h1.block { + margin-bottom: 16px; +} +h2 { + font-size: 26px; + font-weight: normal; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +h2.smaller { + font-size: 25px; +} +h2.bigger { + font-size: 27px; +} +h2.block { + margin-bottom: 16px; +} +h3 { + font-size: 22px; + font-weight: normal; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +h3.smaller { + font-size: 21px; +} +h3.bigger { + font-size: 23px; +} +h3.block { + margin-bottom: 16px; +} +h4 { + font-size: 18px; + font-weight: normal; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +h4.smaller { + font-size: 17px; +} +h4.bigger { + font-size: 19px; +} +h4.block { + margin-bottom: 16px; +} +h5 { + font-size: 15px; + font-weight: normal; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +h5.smaller { + font-size: 14px; +} +h5.bigger { + font-size: 16px; +} +h5.block { + margin-bottom: 16px; +} +h6 { + font-size: 13px; + font-weight: normal; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +h6.smaller { + font-size: 12px; +} +h6.bigger { + font-size: 14px; +} +h6.block { + margin-bottom: 16px; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; + margin-right: 0; + margin-left: 25px; + padding: 0; +} +ul.margin-5, +ol.margin-5 { + margin-left: 5px; +} +ul.margin-10, +ol.margin-10 { + margin-left: 10px; +} +ul.margin-15, +ol.margin-15 { + margin-left: 15px; +} +ul.margin-20, +ol.margin-20 { + margin-left: 20px; +} +li > ul, +li > ol { + margin-left: 18px; +} +.list-unstyled, +.list-inline { + margin-left: 0; +} +.list-unstyled > li > .ace-icon:first-child, +.list-inline > li > .ace-icon:first-child { + width: 18px; + text-align: center; +} +.spaced > li { + margin-top: 9px; + margin-bottom: 9px; +} +.spaced2 > li { + margin-top: 15px; + margin-bottom: 15px; +} +li.divider { + margin-top: 3px; + margin-bottom: 3px; + height: 0; + font-size: 0; +} +.spaced > li.divider { + margin-top: 5px; + margin-bottom: 5px; +} +.spaced2 > li.divider { + margin-top: 8px; + margin-bottom: 8px; +} +li.divider:before { + content: ""; + display: inline-block; +} +blockquote, +blockquote.pull-right, +.blockquote-reverse { + border-color: #e5eaf1; +} +pre.prettyprint { + white-space: pre-wrap; +} +.well { + border-radius: 0; +} +.well h1, +.well h2, +.well h3, +.well h4, +.well h5, +.well h6 { + margin-top: 0; +} +.well h1, +.well h2, +.well h3 { + line-height: 36px; +} +.alert { + font-size: 14px; + border-radius: 0; +} +.alert .close { + font-size: 16px; +} +.alert-block p + p { + margin-top: 10px; +} +.pagination > li > span, +.pager > li > span { + border-width: 1px; + border-radius: 0 !important; +} +.pagination > li > a, +.pager > li > a { + border-width: 1px; + border-color: #d4dfe3; + border-radius: 0 !important; + color: #2283c5; + background-color: #fafafa; + margin: 0 -1px 0 0; + position: relative; + z-index: auto; +} +.pagination > li > a:hover, +.pager > li > a:hover { + color: #1c6ca2; + background-color: #eaeff2; + border-color: #c1d1d7; + z-index: 1; +} +.pagination > li > a:focus, +.pager > li > a:focus { + background-color: #eaeef2; +} +.pagination > li.disabled > a, +.pager > li.disabled > a, +.pagination > li.disabled > a:hover, +.pager > li.disabled > a:hover { + background-color: #f9f9f9; + border-color: #d9d9d9; + z-index: auto; +} +.pagination > li.active > a, +.pagination > li.active > a:hover { + background-color: #6faed9; + border-color: #6faed9; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + z-index: 2; +} +.list-group { + margin-left: auto; +} +.list-group-item { + border-radius: 0 !important; +} +.lighter { + font-weight: lighter; +} +.bolder { + font-weight: bolder; +} +.inline { + display: inline-block !important; +} +.block { + display: block !important; +} +.center, +.align-center { + text-align: center !important; +} +.align-left { + text-align: left !important; +} +.align-right { + text-align: right !important; +} +.middle { + vertical-align: middle; +} +.align-middle { + vertical-align: middle !important; +} +.align-top { + vertical-align: top !important; +} +.align-bottom { + vertical-align: bottom !important; +} +.position-relative, +.pos-rel { + position: relative; +} +.position-absolute, +.pos-abs { + position: absolute; +} +.no-float { + float: none !important; +} +.line-height-normal { + line-height: normal !important; +} +.line-height-0 { + line-height: 0 !important; +} +.line-height-1 { + line-height: 1 !important; +} +.line-height-125 { + line-height: 1.25 !important; +} +.line-height-150 { + line-height: 1.5 !important; +} +.dark { + color: #333333 !important; +} +.white { + color: #ffffff !important; +} +.red { + color: #dd5a43 !important; +} +.red2 { + color: #e08374 !important; +} +.light-red { + color: #ff7777 !important; +} +.blue { + color: #478fca !important; +} +.light-blue { + color: #93cbf9 !important; +} +.green { + color: #69aa46 !important; +} +.light-green { + color: #b0d877 !important; +} +.orange { + color: #ff892a !important; +} +.orange2 { + color: #feb902 !important; +} +.light-orange { + color: #fcac6f !important; +} +.purple { + color: #a069c3 !important; +} +.pink { + color: #c6699f !important; +} +.pink2 { + color: #d6487e !important; +} +.brown { + color: #a52a2a !important; +} +.grey { + color: #777777 !important; +} +.light-grey { + color: #bbbbbb !important; +} +.bigger-110 { + font-size: 110% !important; +} +.bigger-120 { + font-size: 120% !important; +} +.bigger-130 { + font-size: 130% !important; +} +.bigger-140 { + font-size: 140% !important; +} +.bigger-150 { + font-size: 150% !important; +} +.bigger-160 { + font-size: 160% !important; +} +.bigger-170 { + font-size: 170% !important; +} +.bigger-180 { + font-size: 180% !important; +} +.bigger-190 { + font-size: 190% !important; +} +.bigger-200 { + font-size: 200% !important; +} +.bigger-210 { + font-size: 210% !important; +} +.bigger-220 { + font-size: 220% !important; +} +.bigger-230 { + font-size: 230% !important; +} +.bigger-240 { + font-size: 240% !important; +} +.bigger-250 { + font-size: 250% !important; +} +.bigger-260 { + font-size: 260% !important; +} +.bigger-270 { + font-size: 270% !important; +} +.bigger-280 { + font-size: 280% !important; +} +.bigger-290 { + font-size: 290% !important; +} +.bigger-300 { + font-size: 300% !important; +} +.bigger-115 { + font-size: 115% !important; +} +.bigger-125 { + font-size: 125% !important; +} +.bigger-175 { + font-size: 175% !important; +} +.bigger-225 { + font-size: 225% !important; +} +.bigger-275 { + font-size: 275% !important; +} +.smaller-90 { + font-size: 90% !important; +} +.smaller-80 { + font-size: 80% !important; +} +.smaller-70 { + font-size: 70% !important; +} +.smaller-60 { + font-size: 60% !important; +} +.smaller-50 { + font-size: 50% !important; +} +.smaller-40 { + font-size: 40% !important; +} +.smaller-30 { + font-size: 30% !important; +} +.smaller-20 { + font-size: 20% !important; +} +.smaller-75 { + font-size: 75% !important; +} +.width-20 { + width: 20% !important; +} +.width-25 { + width: 25% !important; +} +.width-30 { + width: 30% !important; +} +.width-35 { + width: 35% !important; +} +.width-40 { + width: 40% !important; +} +.width-45 { + width: 45% !important; +} +.width-50 { + width: 50% !important; +} +.width-55 { + width: 55% !important; +} +.width-60 { + width: 60% !important; +} +.width-65 { + width: 65% !important; +} +.width-70 { + width: 70% !important; +} +.width-75 { + width: 75% !important; +} +.width-80 { + width: 80% !important; +} +.width-85 { + width: 85% !important; +} +.width-90 { + width: 90% !important; +} +.width-95 { + width: 95% !important; +} +.width-100 { + width: 100% !important; +} +.width-75 { + width: 75% !important; +} +.width-25 { + width: 25% !important; +} +.width-auto { + width: auto !important; +} +.height-auto { + height: auto !important; +} +.no-padding { + padding: 0 !important; +} +.no-padding-bottom { + padding-bottom: 0 !important; +} +.no-padding-top { + padding-top: 0 !important; +} +.no-padding-left { + padding-left: 0 !important; +} +.no-padding-right { + padding-right: 0 !important; +} +.no-margin { + margin: 0 !important; +} +.no-margin-bottom { + margin-bottom: 0 !important; +} +.no-margin-top { + margin-top: 0 !important; +} +.no-margin-left { + margin-left: 0 !important; +} +.no-margin-right { + margin-right: 0 !important; +} +.no-border { + border-width: 0; +} +.no-border-bottom { + border-bottom-width: 0; +} +.no-border-top { + border-top-width: 0; +} +.no-border-left { + border-left-width: 0; +} +.no-border-right { + border-right-width: 0; +} +/** +.no-underline { + text-decoration: none !important; +} +.no-hover-underline:hover { + text-decoration: none !important; +} +.no-outline:focus { + outline: none !important; +} + +.no-box-shadow { + .box-shadow(none) !important; +} + +.overflow-auto {overflow: auto !important;} +.overflow-visible {overflow: visible !important;} +*/ +.overflow-hidden { + overflow: hidden !important; +} +.overflow-scroll { + overflow-x: hidden !important; + overflow-y: scroll !important; +} +.no-radius { + border-radius: 0 !important; +} +.no-text-shadow { + text-shadow: none !important; +} +.hr { + display: block; + height: 0; + overflow: hidden; + font-size: 0; + border-width: 1px 0 0 0; + border-top: 1px solid #E3E3E3; + margin: 12px 0; + border-top-color: rgba(0, 0, 0, 0.11); +} +.hr-double { + height: 3px; + border-top: 1px solid #E3E3E3; + border-bottom: 1px solid #E3E3E3; + border-top-color: rgba(0, 0, 0, 0.11); + border-bottom-color: rgba(0, 0, 0, 0.11); +} +.hr.dotted, +.hr-dotted { + border-style: dotted; +} +.hr-32, +.hr32 { + margin: 32px 0; +} +.hr-30, +.hr30 { + margin: 30px 0; +} +.hr-28, +.hr28 { + margin: 28px 0; +} +.hr-26, +.hr26 { + margin: 26px 0; +} +.hr-24, +.hr24 { + margin: 24px 0; +} +.hr-22, +.hr22 { + margin: 22px 0; +} +.hr-20, +.hr20 { + margin: 20px 0; +} +.hr-18, +.hr18 { + margin: 18px 0; +} +.hr-16, +.hr16 { + margin: 16px 0; +} +.hr-14, +.hr14 { + margin: 14px 0; +} +.hr-12, +.hr12 { + margin: 12px 0; +} +.hr-10, +.hr10 { + margin: 10px 0; +} +.hr-8, +.hr8 { + margin: 8px 0; +} +.hr-6, +.hr6 { + margin: 6px 0; +} +.hr-4, +.hr4 { + margin: 4px 0; +} +.hr-2, +.hr2 { + margin: 2px 0; +} +.space { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; +} +[class*="vspace-"] { + display: none; +} +.space-32 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 32px 0 31px; +} +[class*="vspace-32"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 32px 0 31px 0; +} +.space-30 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 30px 0 29px; +} +[class*="vspace-30"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 30px 0 29px 0; +} +.space-28 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 28px 0 27px; +} +[class*="vspace-28"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 28px 0 27px 0; +} +.space-26 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 26px 0 25px; +} +[class*="vspace-26"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 26px 0 25px 0; +} +.space-24 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 24px 0 23px; +} +[class*="vspace-24"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 24px 0 23px 0; +} +.space-22 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 22px 0 21px; +} +[class*="vspace-22"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 22px 0 21px 0; +} +.space-20 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 20px 0 19px; +} +[class*="vspace-20"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 20px 0 19px 0; +} +.space-18 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 18px 0 17px; +} +[class*="vspace-18"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 18px 0 17px 0; +} +.space-16 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 16px 0 15px; +} +[class*="vspace-16"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 16px 0 15px 0; +} +.space-14 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 14px 0 13px; +} +[class*="vspace-14"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 14px 0 13px 0; +} +.space-12 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 12px 0 11px; +} +[class*="vspace-12"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 12px 0 11px 0; +} +.space-10 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 10px 0 9px; +} +[class*="vspace-10"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 10px 0 9px 0; +} +.space-8 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 8px 0 7px; +} +[class*="vspace-8"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 8px 0 7px 0; +} +.space-6 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 6px 0 5px; +} +[class*="vspace-6"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 6px 0 5px 0; +} +.space-4 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 4px 0 3px; +} +[class*="vspace-4"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 4px 0 3px 0; +} +.space-2 { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 2px 0 1px; +} +[class*="vspace-2"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 2px 0 1px 0; +} +.space-0, +[class*="vspace-0"] { + max-height: 1px; + min-height: 1px; + overflow: hidden; + margin: 12px 0; + margin: 0; +} +@media only screen and (max-width: 479px) { + [class*="vspace-"][class*="-xs"] { + display: block; + } +} +@media only screen and (max-width: 767px) { + [class*="vspace-"][class*="-sm"] { + display: block; + } +} +@media only screen and (max-width: 991px) { + [class*="vspace-"][class*="-md"] { + display: block; + } +} +@media only screen and (max-width: 1199px) { + [class*="vspace-"][class*="-lg"] { + display: block; + } +} +.header { + line-height: 28px; + margin-bottom: 16px; + margin-top: 18px; + padding-bottom: 4px; + border-bottom: 1px solid #CCC; +} +.header.blue { + border-bottom-color: #d5e3ef; +} +.header.green { + border-bottom-color: #cce2c1; +} +.header.purple { + border-bottom-color: #e0d1ea; +} +.header.orange { + border-bottom-color: #fdd0ac; +} +.header.orange2 { + border-bottom-color: #fbd36b; +} +.header.red { + border-bottom-color: #f3cdc6; +} +.header.grey { + border-bottom-color: #c3c3c3; +} +.header.pink { + border-bottom-color: #f2e0eb; +} +.header.pink2 { + border-bottom-color: #e69eb9; +} +.header.light-blue { + border-bottom-color: #dceefc; +} +.header.light-red { + border-bottom-color: #fec5c5; +} +.header.light-green { + border-bottom-color: #d2e7b5; +} +.header.brown { + border-bottom-color: #df9393; +} +.header > .ace-icon { + margin-right: 2px; +} +.action-buttons a { + margin: 0 3px; + display: inline-block; + opacity: 0.85; + -webkit-transition: all 0.1s; + -o-transition: all 0.1s; + transition: all 0.1s; +} +.action-buttons a:hover { + text-decoration: none; + opacity: 1; + -moz-transform: scale(1.2); + -webkit-transform: scale(1.2); + -o-transform: scale(1.2); + -ms-transform: scale(1.2); + transform: scale(1.2); +} +.navbar { + margin: 0; + padding-left: 0; + padding-right: 0; + border-width: 0; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + min-height: 45px; + background: #438eb9; +} +.navbar .navbar-text, +.navbar .navbar-link { + color: #ffffff; +} +.navbar .navbar-brand { + color: #ffffff; + font-size: 24px; + text-shadow: none; + padding-top: 10px; + padding-bottom: 10px; + height: auto; +} +.navbar .navbar-brand:hover, +.navbar .navbar-brand:focus { + color: #ffffff; +} +/** +@media (min-width: @grid-float-breakpoint) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: 0; + margin-right: 0; + } +} +*/ +@media only screen and (min-width: 992px) { + .navbar-container { + padding-left: 10px; + padding-right: 10px; + } +} +.navbar-container.container { + padding-left: 0; + padding-right: 0; +} +.ace-nav { + height: 100%; + margin: 0 !important; +} +.ace-nav > li { + line-height: 45px; + height: 45px; + border-left: 1px solid #E1E1E1; + padding: 0; + position: relative; + float: left; +} +.ace-nav > li:first-child { + border-left-width: 0; +} +.ace-nav > li > a { + background-color: #2e6589; + color: #FFF; + display: block; + line-height: inherit; + text-align: center; + height: 100%; + width: auto; + min-width: 50px; + padding: 0 8px; + position: relative; +} +.ace-nav > li > a > .ace-icon { + display: inline-block; + font-size: 16px; + color: #FFF; + text-align: center; + width: 20px; +} +.ace-nav > li > a > .badge { + position: relative; + top: -4px; + left: 2px; + padding-right: 5px; + padding-left: 5px; +} +.ace-nav > li > a:hover, +.ace-nav > li > a:focus, +.ace-nav > li.open > a { + background-color: #2c5976; + color: #FFF; +} +.ace-nav > li.blue > a { + background-color: #2e6589; +} +.ace-nav > li.blue > a:hover, +.ace-nav > li.blue > a:focus, +.ace-nav > li.open.blue > a { + background-color: #2c5976; +} +.ace-nav > li.grey > a { + background-color: #555555; +} +.ace-nav > li.grey > a:hover, +.ace-nav > li.grey > a:focus, +.ace-nav > li.open.grey > a { + background-color: #4b4b4b; +} +.ace-nav > li.purple > a { + background-color: #892e65; +} +.ace-nav > li.purple > a:hover, +.ace-nav > li.purple > a:focus, +.ace-nav > li.open.purple > a { + background-color: #762c59; +} +.ace-nav > li.green > a { + background-color: #2e8965; +} +.ace-nav > li.green > a:hover, +.ace-nav > li.green > a:focus, +.ace-nav > li.open.green > a { + background-color: #2c7659; +} +.ace-nav > li.light-blue > a { + background-color: #62a8d1; +} +.ace-nav > li.light-blue > a:hover, +.ace-nav > li.light-blue > a:focus, +.ace-nav > li.open.light-blue > a { + background-color: #579ec8; +} +.ace-nav > li.light-blue2 > a { + background-color: #42a8e1; +} +.ace-nav > li.light-blue2 > a:hover, +.ace-nav > li.light-blue2 > a:focus, +.ace-nav > li.open.light-blue2 > a { + background-color: #359fd9; +} +.ace-nav > li.red > a { + background-color: #b74635; +} +.ace-nav > li.red > a:hover, +.ace-nav > li.red > a:focus, +.ace-nav > li.open.red > a { + background-color: #a34335; +} +.ace-nav > li.light-green > a { + background-color: #9abc32; +} +.ace-nav > li.light-green > a:hover, +.ace-nav > li.light-green > a:focus, +.ace-nav > li.open.light-green > a { + background-color: #8ba832; +} +.ace-nav > li.light-purple > a { + background-color: #cb6fd7; +} +.ace-nav > li.light-purple > a:hover, +.ace-nav > li.light-purple > a:focus, +.ace-nav > li.open.light-purple > a { + background-color: #c263ce; +} +.ace-nav > li.light-orange > a { + background-color: #f79263; +} +.ace-nav > li.light-orange > a:hover, +.ace-nav > li.light-orange > a:focus, +.ace-nav > li.open.light-orange > a { + background-color: #f28653; +} +.ace-nav > li.light-pink > a { + background-color: #f4dae5; +} +.ace-nav > li.light-pink > a:hover, +.ace-nav > li.light-pink > a:focus, +.ace-nav > li.open.light-pink > a { + background-color: #eeccda; +} +.ace-nav > li.dark > a { + background-color: #404040; +} +.ace-nav > li.dark > a:hover, +.ace-nav > li.dark > a:focus, +.ace-nav > li.open.dark > a { + background-color: #363636; +} +.ace-nav > li.white-opaque > a { + background-color: rgba(255, 255, 255, 0.8); +} +.ace-nav > li.white-opaque > a:hover, +.ace-nav > li.white-opaque > a:focus, +.ace-nav > li.open.white-opaque > a { + background-color: rgba(245, 245, 245, 0.8); +} +.ace-nav > li.dark-opaque > a { + background-color: rgba(0, 0, 0, 0.2); +} +.ace-nav > li.dark-opaque > a:hover, +.ace-nav > li.dark-opaque > a:focus, +.ace-nav > li.open.dark-opaque > a { + background-color: rgba(0, 0, 0, 0.2); +} +.ace-nav > li.transparent > a { + background-color: transparent; +} +.ace-nav > li.transparent > a:hover, +.ace-nav > li.transparent > a:focus, +.ace-nav > li.open.transparent > a { + background-color: rgba(0, 0, 0, 0.1); +} +.ace-nav > li.light-10 > a { + background-color: rgba(255, 255, 255, 0.1); +} +.ace-nav > li.light-10 > a:hover, +.ace-nav > li.light-10 > a:focus, +.ace-nav > li.open.light-10 > a { + background-color: rgba(255, 255, 255, 0.2); +} +.ace-nav > li.dark-10 > a { + background-color: rgba(0, 0, 0, 0.1); +} +.ace-nav > li.dark-10 > a:hover, +.ace-nav > li.dark-10 > a:focus, +.ace-nav > li.open.dark-10 > a { + background-color: rgba(0, 0, 0, 0.2); +} +.ace-nav > li.margin-4 { + margin-left: 4px; +} +.ace-nav > li.margin-3 { + margin-left: 3px; +} +.ace-nav > li.margin-2 { + margin-left: 2px; +} +.ace-nav > li.margin-1 { + margin-left: 1px; +} +.ace-nav > li.no-border { + border-width: 0 !important; +} +.ace-nav > li .dropdown-menu { + z-index: 1031; +} +.ace-nav .nav-user-photo { + margin: -4px 8px 0 0; + border-radius: 100%; + border: 2px solid #FFF; + max-width: 40px; +} +.ace-nav li.dropdown-footer a .ace-icon { + display: inline-block; + width: 1.25em; + text-align: center; +} +@media only screen and (max-height: 540px) { + .ace-nav > li > .dropdown-menu { + position: fixed; + margin-top: auto; + z-index: 1042; + } + .ace-nav > li > .dropdown-menu:before, + .ace-nav > li > .dropdown-menu:after { + display: none; + } + .ace-nav .user-menu > li > a { + padding-top: 6px; + padding-bottom: 6px; + } + .ace-nav > li.open:before { + background-color: #000; + opacity: 0.5; + border-width: 0; + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + content: ""; + display: block; + height: 2000px; + width: auto; + z-index: 1041; + } +} +@media only screen and (max-width: 767px) { + .ace-nav > li:nth-last-child(4) > .dropdown-menu.dropdown-menu-right { + right: -100px; + } + .ace-nav > li:nth-last-child(4) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-last-child(4) > .dropdown-menu.dropdown-menu-right:after { + right: 120px; + } + .ace-nav > li:nth-last-child(3) > .dropdown-menu.dropdown-menu-right { + right: -80px; + } + .ace-nav > li:nth-last-child(3) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-last-child(3) > .dropdown-menu.dropdown-menu-right:after { + right: 100px; + } + .user-menu.dropdown-close.dropdown-menu-right { + right: 0 !important; + } +} +@media only screen and (min-width: 480px) and (max-width: 767px) { + .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(1) > .dropdown-menu.dropdown-menu-right, + .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(2) > .dropdown-menu.dropdown-menu-right { + left: auto; + right: -60px; + } + .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(1) > .dropdown-menu.dropdown-menu-right:before, + .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(2) > .dropdown-menu.dropdown-menu-right:before, + .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(1) > .dropdown-menu.dropdown-menu-right:after, + .navbar.navbar-collapse .ace-nav > li:nth-last-child(2):nth-child(2) > .dropdown-menu.dropdown-menu-right:after { + right: 80px; + left: auto; + } +} +@media only screen and (max-width: 480px) { + .ace-nav > li:nth-last-child(4) > .dropdown-menu.dropdown-menu-right { + right: -120px; + } + .ace-nav > li:nth-last-child(4) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-last-child(4) > .dropdown-menu.dropdown-menu-right:after { + right: 140px; + } + .ace-nav > li:nth-last-child(3) > .dropdown-menu.dropdown-menu-right { + right: -90px; + } + .ace-nav > li:nth-last-child(3) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-last-child(3) > .dropdown-menu.dropdown-menu-right:after { + right: 110px; + } + .ace-nav > li:nth-last-child(2) > .dropdown-menu.dropdown-menu-right { + right: -50px; + } + .ace-nav > li:nth-last-child(2) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-last-child(2) > .dropdown-menu.dropdown-menu-right:after { + right: 70px; + } +} +@media only screen and (max-width: 479px) { + .ace-nav > li:nth-last-child(4) > .dropdown-menu.dropdown-menu-right { + left: -10px; + right: auto; + } + .ace-nav > li:nth-last-child(4) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-last-child(4) > .dropdown-menu.dropdown-menu-right:after { + right: auto; + left: 30px; + } + .ace-nav > li:nth-last-child(3) > .dropdown-menu.dropdown-menu-right { + left: -50px; + right: auto; + } + .ace-nav > li:nth-last-child(3) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-last-child(3) > .dropdown-menu.dropdown-menu-right:after { + left: 75px; + right: auto; + } + .ace-nav > li:nth-last-child(2) > .dropdown-menu.dropdown-menu-right { + left: -70px; + right: auto; + } + .ace-nav > li:nth-last-child(2) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-last-child(2) > .dropdown-menu.dropdown-menu-right:after { + left: 90px; + right: auto; + } +} +@media only screen and (max-width: 319px) { + .ace-nav > li:nth-last-child(2) > .dropdown-menu.dropdown-menu-right { + left: -110px; + right: auto; + } + .ace-nav > li:nth-last-child(2) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-last-child(2) > .dropdown-menu.dropdown-menu-right:after { + left: 130px; + right: auto; + } + .ace-nav > li:nth-child(2):nth-last-child(2) > .dropdown-menu.dropdown-menu-right { + left: -85px; + right: auto; + } + .ace-nav > li:nth-child(2):nth-last-child(2) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-child(2):nth-last-child(2) > .dropdown-menu.dropdown-menu-right:after { + left: 105px; + right: auto; + } + .ace-nav > li:nth-child(1):nth-last-child(3) > .dropdown-menu.dropdown-menu-right { + left: -35px; + right: auto; + } + .ace-nav > li:nth-child(1):nth-last-child(3) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-child(1):nth-last-child(3) > .dropdown-menu.dropdown-menu-right:after { + left: 55px; + right: auto; + } + .ace-nav > li:nth-child(1):nth-last-child(2) > .dropdown-menu.dropdown-menu-right { + left: -60px; + right: auto; + } + .ace-nav > li:nth-child(1):nth-last-child(2) > .dropdown-menu.dropdown-menu-right:before, + .ace-nav > li:nth-child(1):nth-last-child(2) > .dropdown-menu.dropdown-menu-right:after { + left: 75px; + right: auto; + } +} +@media only screen and (max-width: 479px) { + .navbar:not(.navbar-collapse) .navbar-header { + float: none !important; + display: block; + } + .navbar:not(.navbar-collapse) .ace-nav { + display: block; + float: none !important; + text-align: center; + background-color: rgba(0, 0, 0, 0.15); + border: 1px solid rgba(0, 0, 0, 0.1); + border-width: 1px 0 0; + letter-spacing: -3px; + } + .navbar:not(.navbar-collapse) .ace-nav > li { + display: inline-block; + float: none !important; + text-align: left; + letter-spacing: normal; + } + .navbar:not(.navbar-collapse) .ace-nav > li:first-child { + border-left: 1px solid rgba(255, 255, 255, 0.4); + } + .navbar:not(.navbar-collapse) .ace-nav > li:last-child { + border-right: 1px solid rgba(255, 255, 255, 0.4); + } +} +@media only screen and (max-width: 319px) { + .ace-nav > li > a { + padding: 0 5px !important; + } +} +.user-menu > li > a { + padding: 4px 12px; +} +.user-menu > li > a > .ace-icon { + margin-right: 6px; + font-size: 120%; +} +.user-info { + max-width: 100px; + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + text-align: left; + vertical-align: top; + line-height: 15px; + position: relative; + top: 6px; +} +.user-info small { + display: block; +} +@media (min-width: 480px) and (max-width: 540px), (max-width: 360px) { + .navbar:not(.navbar-collapse) .navbar-buttons .user-menu { + padding-top: 42px !important; + } + .navbar:not(.navbar-collapse) .navbar-buttons .nav-user-photo { + margin-right: 0; + } + .navbar:not(.navbar-collapse) .navbar-buttons .user-info { + position: absolute; + margin-top: 40px; + margin-left: 1px; + right: 2px; + z-index: 1032; + color: #777; + font-size: 14px; + width: 156px; + max-width: 156px; + padding-left: 8px; + padding-right: 8px; + height: 32px; + line-height: 26px !important; + display: none; + border-bottom: 1px solid #E5E5E5; + text-align: center; + vertical-align: none; + line-height: normal; + cursor: text; + } + .navbar:not(.navbar-collapse) .navbar-buttons .user-info > small { + display: inline; + opacity: 1; + } + li.open .user-info { + display: inline-block !important; + } +} +@media (max-width: 360px) { + .navbar.navbar-collapse .navbar-buttons .user-menu { + padding-top: 42px !important; + } + .navbar.navbar-collapse .navbar-buttons .nav-user-photo { + margin-right: 0; + } + .navbar.navbar-collapse .navbar-buttons .user-info { + position: absolute; + margin-top: 40px; + margin-left: 1px; + right: 2px; + z-index: 1032; + color: #777; + font-size: 14px; + width: 156px; + max-width: 156px; + padding-left: 8px; + padding-right: 8px; + height: 32px; + line-height: 26px !important; + display: none; + border-bottom: 1px solid #E5E5E5; + text-align: center; + vertical-align: none; + line-height: normal; + cursor: text; + } + .navbar.navbar-collapse .navbar-buttons .user-info > small { + display: inline; + opacity: 1; + } + li.open .user-info { + display: inline-block !important; + right: 2px; + } +} +@media (min-width: 992px) { + .user-min .user-menu { + padding-top: 42px !important; + } + .user-min .nav-user-photo { + margin-right: 0; + } + .user-min .user-info { + position: absolute; + margin-top: 40px; + margin-left: 1px; + right: 2px; + z-index: 1032; + color: #777; + font-size: 14px; + width: 156px; + max-width: 156px; + padding-left: 8px; + padding-right: 8px; + height: 32px; + line-height: 26px !important; + display: none; + border-bottom: 1px solid #E5E5E5; + text-align: center; + vertical-align: none; + line-height: normal; + cursor: text; + } + .user-min .user-info > small { + display: inline; + opacity: 1; + } + .user-min .user-info { + right: -3px; + } + .user-min.open .user-info { + display: inline-block !important; + } +} +@media (max-height: 540px) and (min-width: 480px) and (max-width: 540px), (max-height: 540px) and (max-width: 360px) { + .navbar:not(.navbar-collapse) .navbar-buttons .user-info { + position: fixed; + right: auto; + margin-top: auto; + max-width: none; + } +} +@media (max-height: 540px) and (max-width: 360px) { + .navbar.navbar-collapse .navbar-buttons .user-info { + position: fixed; + right: auto; + margin-top: auto; + max-width: none; + } +} +@media (max-height: 540px) and (min-width: 992px) { + .user-min .user-info { + position: fixed; + right: auto; + margin-top: auto; + max-width: none; + } +} +@media only screen and (max-width: 991px) { + .navbar.navbar-collapse { + max-height: none; + } + .navbar .navbar-header, + .navbar .navbar-collapse { + margin-left: 0 !important; + margin-right: 0 !important; + } + .navbar.navbar-collapse .navbar-header { + float: none !important; + min-height: 45px; + } + .navbar.navbar-collapse .navbar-buttons { + min-height: 0; + padding-left: 0; + padding-right: 0; + border: 1px solid rgba(255, 255, 255, 0.4); + border-width: 1px 0 0; + width: 100%; + } + .navbar.navbar-collapse .navbar-buttons.in { + overflow: visible !important; + } + .navbar.navbar-collapse .navbar-buttons > .ace-nav { + display: block; + float: none !important; + text-align: center; + background-color: transparent !important; + border-width: 0; + letter-spacing: -3px; + } + .navbar.navbar-collapse .navbar-buttons > .ace-nav > li { + display: inline-block; + float: none !important; + text-align: left; + letter-spacing: normal; + } + .navbar.navbar-collapse .navbar-buttons > .ace-nav > li:first-child { + border-left: 1px solid rgba(255, 255, 255, 0.4); + } + .navbar.navbar-collapse .navbar-buttons > .ace-nav > li:last-child { + border-right: 1px solid rgba(255, 255, 255, 0.4); + } +} +.container > .navbar-buttons, +.container-fluid > .navbar-buttons { + padding-right: 0 !important; +} +@media only screen and (max-height: 400px) { + .navbar-fixed-top .navbar-collapse { + max-height: 280px; + } +} +@media only screen and (max-height: 360px) { + .navbar-fixed-top .navbar-collapse { + max-height: 240px; + } +} +@media only screen and (max-height: 320px) { + .navbar-fixed-top .navbar-collapse { + max-height: 200px; + } +} +@media only screen and (max-height: 280px) { + .navbar-fixed-top .navbar-collapse { + max-height: 160px; + } +} +@media only screen and (max-height: 240px) { + .navbar-fixed-top .navbar-collapse { + max-height: 120px; + } +} +.navbar .navbar-nav > li { + border: 1px solid rgba(0, 0, 0, 0.2); + border-width: 0 1px 0 0; +} +.navbar .navbar-nav > li:first-child { + border-width: 0 1px 0 1px; +} +.navbar .navbar-nav > li > a { + padding-top: 12px; + padding-bottom: 11px; + height: 45px; + background-color: transparent; + font-size: 13px; + color: #ffffff; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} +.navbar .navbar-nav > li > a:hover, +.navbar .navbar-nav > li > a:focus, +.navbar .navbar-nav > li.open > a { + background-color: rgba(0, 0, 0, 0.1) !important; + color: #ffffff !important; +} +.navbar .navbar-nav > li > .dropdown-menu > li > a { + line-height: 2; +} +.navbar-nav .dropdown-menu > li > a > .ace-icon { + display: inline-block; + width: 20px; +} +.navbar-nav > li > .dropdown-menu { + z-index: 1033; +} +@media only screen and (max-width: 991px) { + .navbar.navbar-collapse .navbar-menu { + float: none !important; + clear: both; + } + .navbar.navbar-collapse .navbar-menu .dropdown-menu:after, + .navbar.navbar-collapse .navbar-menu .dropdown-menu:before { + display: none !important; + } + .navbar .navbar-nav { + margin: 0 -6px; + } + .navbar .navbar-nav > li, + .navbar .navbar-nav > li:first-child { + border-width: 1px 0 0; + } + .navbar .navbar-nav .dropdown-menu { + float: none; + position: relative; + background-color: transparent; + box-shadow: none; + border-width: 0; + } + .navbar .navbar-nav .dropdown-menu > li > a { + color: #FFF !important; + } + .navbar .navbar-nav .dropdown-menu > li > a:hover { + background-color: rgba(0, 0, 0, 0.07) !important; + } + .navbar .navbar-nav .dropdown-menu > li > a > .ace-icon { + color: #FFF !important; + } + .navbar .navbar-nav .dropdown-hover > .dropdown-menu { + left: 32px !important; + right: auto !important; + top: auto !important; + width: 80% !important; + width: calc(100% - 32px); + } +} +.navbar-form.form-search { + margin-top: 9px; + margin-bottom: 0; +} +.navbar-form.form-search .form-group { + margin-bottom: 0; +} +.navbar-form.form-search input[type=text] { + width: 100px; +} +.navbar-form input[type=text] { + font-size: 13px; + line-height: 1.4; + padding-top: 4px; + padding-bottom: 4px; + border-width: 0; +} +@media only screen and (max-width: 991px) { + .navbar-form .form-group { + display: inline-block; + width: 50%; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form.form-search input[type=text] { + width: 100%; + } + .navbar-nav + .navbar-form { + margin-top: 0; + } + .navbar .navbar-collapse, + .navbar .navbar-form { + border-color: rgba(255, 255, 255, 0.4); + } + .navbar .navbar-nav > li:first-child { + border-top-width: 0; + } +} +@media only screen and (max-width: 480px) { + .navbar-form .form-group { + width: 80%; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-static-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + padding-left: 12px; + padding-right: 12px; +} +@media only screen and (min-width: 768px) and (max-width: 991px) { + .navbar.navbar-collapse { + background-color: transparent; + } + .navbar.navbar-collapse:before { + background: #438eb9; + content: ""; + display: block; + position: absolute; + min-height: inherit; + left: 0; + right: 0; + top: 0; + z-index: -1; + border-radius: inherit; + } + .navbar.navbar-collapse .navbar-container { + background-color: #438eb9; + } +} +.navbar .navbar-toggle { + border: 1px solid transparent; + width: 40px; + height: 35px; + line-height: 0; + padding: 0 0 1px; + text-align: center; +} +.navbar .navbar-toggle.pull-right { + margin: 5px 6px 4px 0; +} +.navbar .navbar-toggle.pull-left { + margin: 5px 0 4px 6px; +} +.navbar .navbar-toggle:active { + top: 1px; +} +.navbar .navbar-toggle.navbar-toggle-img { + width: auto; + height: auto; + overflow: hidden; + padding: 0; + border-width: 0; +} +.navbar .navbar-toggle.navbar-toggle-img > img { + border-radius: inherit; + max-height: 35px; + border-width: 0; +} +.navbar .navbar-toggle .icon-bar { + background-color: #FFF; + border-radius: 0; + width: 24px; + margin-left: 7px; +} +.sidebar { + width: 190px; + float: left; + position: static; + padding-left: 0; + padding-right: 0; +} +.sidebar:before { + content: ""; + display: block; + width: inherit; + position: absolute; + top: 0; + bottom: 0; + z-index: -1; + background-color: inherit; + border-style: inherit; + border-color: inherit; + border-width: inherit; +} +/**li .@{icon} { + & , .nav-list & { + width: auto; + } +}*/ +.nav-list { + margin: 0; + padding: 0; + list-style: none; +} +.nav-list > li, +.nav-list > li > a, +.nav-list .nav-header { + margin: 0; +} +.nav-list li > a:focus { + outline: none; +} +.nav-list > li { + display: block; + position: relative; + float: none; + padding: 0; + border-style: solid; + border-width: 1px 0 0; +} +.nav-list > li:last-child { + border-bottom-width: 1px; +} +.nav-list > li.active > a { + font-weight: bold; +} +.nav-list > li > a { + display: block; + height: 39px; + line-height: 17px; + padding-left: 7px; + text-shadow: none !important; + font-size: 13px; + text-decoration: none; +} +.nav-list > li > a > .menu-icon { + display: inline-block; + min-width: 30px; + margin-right: 2px; + vertical-align: sub; + text-align: center; + font-size: 18px; + font-weight: normal; +} +.nav-list > li:before { + display: none; + content: ""; + position: absolute; + top: -1px; + left: 0; + z-index: 1; + height: 41px; + width: 3px; + max-width: 3px; + overflow: hidden; + background-color: #629cc9; +} +@media only screen and (min-width: 992px) { + .main-container.container .sidebar:not(.h-sidebar) .nav-list > li:before { + left: -2px; + } +} +.main-container.container .sidebar.sidebar-fixed:not(.h-sidebar) .nav-list > li:before { + left: 0; +} +.nav-list > li:hover:before { + display: block; +} +.nav-list > li a > .arrow { + display: block; + width: 14px !important; + height: 14px; + line-height: 14px; + text-shadow: none; + font-size: 18px; + position: absolute; + right: 10px; + top: 12px; + padding: 0; + text-align: center; +} +.nav-list > li.separator { + height: 3px; + background-color: transparent; + position: static; + margin: 1px 0; + -webkit-box-shadow: none; + box-shadow: none; +} +.nav-list > li.active .submenu { + display: block; +} +.nav-list > li .submenu { + display: none; + list-style: none; + margin: 0; + padding: 0; + line-height: 1.5; + position: relative; +} +.nav-list > li .submenu > li { + margin-left: 0; + position: relative; +} +.nav-list > li .submenu > li > a { + display: block; + position: relative; + padding: 7px 0 9px 37px; + margin: 0; + border-top-width: 1px; + border-top-style: dotted; +} +.nav-list > li .submenu > li > a:hover { + text-decoration: none; +} +.nav-list > li .submenu > li a > .menu-icon { + display: none; + font-size: 12px; + font-weight: normal; + width: 18px; + height: auto; + line-height: 12px; + text-align: center; + position: absolute; + left: 10px; + top: 11px; + z-index: 1; + background-color: inherit; +} +.nav-list > li .submenu > li.active > a > .menu-icon, +.nav-list > li .submenu > li:hover > a > .menu-icon { + display: inline-block; +} +.nav-list > li > .submenu { + border-top: 1px solid; +} +.nav-list > li > .submenu > li:before { + content: ""; + display: block; + width: 7px; + position: absolute; + z-index: 1; + left: 20px; + top: 17px; + border: 1px dotted; + border-width: 1px 0 0; +} +.nav-list > li > .submenu:before { + content: ""; + display: block; + position: absolute; + z-index: 1; + left: 18px; + top: 0; + bottom: 0; + border: 1px dotted; + border-width: 0 0 0 1px; +} +.nav-list li:hover > a > .arrow, +.nav-list li.active > a > .arrow, +.nav-list li.open > a > .arrow { + color: inherit; +} +.nav-list li.open > .submenu { + display: block; +} +no_such_element:-o-prefocus, +.nav-list > li > a > .menu-icon { + vertical-align: middle; +} +.nav-list > li > .submenu li > .submenu { + display: none; +} +.nav-list > li > .submenu li.active > .submenu { + display: block; +} +.nav-list > li > .submenu a > .arrow { + right: 10px; + top: 10px; + font-size: 16px; +} +.nav-list > li > .submenu > li:first-child > a { + border-top-width: 0; +} +.nav-list > li > .submenu li > .submenu > li { + line-height: 18px; +} +.nav-list > li > .submenu li > .submenu > li:before { + display: none; +} +.nav-list > li > .submenu li > .submenu > li > a { + margin-left: 20px; + padding-left: 22px; +} +.nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: 20px; + padding-left: 38px; +} +.nav-list > li > .submenu li > .submenu > li a > .menu-icon { + display: inline-block; + width: auto; + position: static; + background-color: transparent; + margin-right: 4px; + color: inherit; +} +.nav-list > li > .submenu li > .submenu > li a .menu-icon, +.nav-list > li > .submenu li > .submenu > li a .arrow { + color: inherit; +} +.nav-list > li > .submenu li.open:not(.hover) > a > .menu-icon { + display: inline-block; +} +.nav-list a .badge, +.nav-list a .label { + position: absolute; + top: 9px; + right: 10px; + opacity: 0.88; + font-size: 12px; + padding-left: 6px; + padding-right: 6px; +} +.nav-list a .badge .ace-icon, +.nav-list a .label .ace-icon { + vertical-align: middle; + margin: 0; +} +.nav-list a.dropdown-toggle .badge, +.nav-list a.dropdown-toggle .label { + right: 26px; +} +.nav-list li:hover > a .badge, +.nav-list li:hover > a .label { + opacity: 1; +} +.nav-list .submenu .submenu a .badge, +.nav-list .submenu .submenu a .label { + top: 6px; +} +.sidebar.sidebar-fixed { + position: fixed; + top: auto; + float: none !important; + z-index: 1027; +} +.sidebar.sidebar-fixed:before { + height: 5000px; + top: auto; + bottom: auto; +} +body.mob-safari .sidebar.sidebar-fixed { + top: 45px; +} +@media (max-width: 479px) { + body.mob-safari .navbar-fixed-top:not(.navbar-collapse) + .main-container .sidebar-fixed { + top: 90px; + } +} +@media (max-width: 991px) { + body.mob-safari .navbar-fixed-top + .main-container .sidebar.responsive { + top: 45px; + } +} +@media (max-width: 479px) { + body.mob-safari .navbar-fixed-top + .main-container .sidebar.responsive { + top: 90px; + } +} +/** +//http://updates.html5rocks.com/2012/09/Stacking-Changes-Coming-to-position-fixed-elements +//webkit & Chrome22+ special case +//webkit is not following the standard specs as of Chrome22+ +@media screen and (-webkit-min-device-pixel-ratio:0) { + //like it happens in Firefox&IE, we expect when we set "z-index:auto" for fixed position .sidebar, + //the child .submenu elements "z-index" is independent + //and for example a "z-index:1031" .submenu appears on top of a fixed .navbar with "z-index:1030" + //and a "z-index:1010" .popover appears on top of ".sidebar" but below ".submenu" + //but webkit defines a new stacking context on "fixed" position elements(.sidebar here) + //and the above doesn't happen, in fact .submenu inside fixed .sidebar with "z-index:auto" will appear below everything + //so we set a good(?) "z-index" for .sidebar, but still it's not as good as standard specs (such as in Firefox) + //and we may need other workarounds! + //and you may change it based on your needs + + //it's possible have standard functionality in Chrome by going to: + //chrome://flags/#fixed-position-creates-stacking-context + //changing "Fixed position elements create stacking contexts" to "Disabled" + //and removing the following rules + //and assignning a higher "@submenu-zindex" + + .sidebar.sidebar-fixed { + z-index: @zindex-sidebar-fixed;//???! + + &::before { + height: 5000px; + top: auto; + bottom: auto; + } + } +} +*/ +@media only screen and (max-width: 991px) { + .responsive.sidebar-fixed { + left: auto; + margin-left: auto; + } + .navbar-fixed-top + .main-container > .responsive { + position: fixed; + left: auto; + margin-left: auto; + } + .navbar-fixed-top + .main-container > .menu-toggler + .responsive { + position: absolute; + left: 190px; + margin-left: -190px; + } + .navbar-fixed-top + .main-container > .menu-toggler + .responsive.sidebar-fixed { + position: fixed; + left: auto; + margin-left: auto; + } +} +@media only screen and (max-width: 991px) { + .sidebar.responsive.sidebar-fixed { + position: fixed; + left: auto; + margin-left: auto; + } + .main-container .menu-toggler.fixed { + position: fixed; + left: auto; + z-index: 1026; + } + .sidebar.sidebar-fixed.responsive-max { + position: fixed; + left: auto; + margin-left: auto; + } +} +.sidebar .sidebar-toggle { + border-style: solid; + border-width: 0 0 1px; + text-align: center; + padding: 3px 0; + position: relative; +} +.sidebar .sidebar-toggle > .ace-icon { + padding: 0 5px; + line-height: 18px; + cursor: pointer; + font-size: 14px; + border-radius: 100%; + border: 1px solid; + position: relative; +} +.sidebar .sidebar-toggle:before { + content: ""; + display: block; + height: 0; + border-top: 1px solid; + border-color: inherit; + position: absolute; + left: 15px; + right: 15px; + top: 13px; +} +.sidebar .sidebar-shortcuts { + text-align: center; + min-height: 40px; + margin-bottom: 0; + overflow: hidden; + position: relative; + border: 0 solid; +} +.sidebar .sidebar-shortcuts:empty { + display: none; +} +.sidebar .sidebar-shortcuts-large { + line-height: 37px; +} +.sidebar .sidebar-shortcuts-large > .btn { + text-align: center; + width: 41px; + line-height: 24px; + padding: 0; + border-width: 4px; +} +.sidebar .sidebar-shortcuts-large > .btn > .ace-icon { + margin: 0; +} +.sidebar .sidebar-shortcuts-mini { + display: none; + font-size: 0; + width: 42px; + padding-top: 2px; + padding-bottom: 2px; +} +.sidebar .sidebar-shortcuts-mini > .btn { + border-width: 0; + font-size: 0; + line-height: 0; + padding: 8px; + margin: 1px; + border-radius: 0; + opacity: 0.85; + filter: alpha(opacity=85); +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + .sidebar ::safari-only, + .sidebar .sidebar-shortcuts-mini > .btn { + margin: 0; + } +} +.nav-list li.active > a:after { + display: block; + content: ""; + position: absolute; + right: 0; + top: 4px; + border: 8px solid transparent; + border-width: 14px 10px; +} +.nav-list li.open > a:after { + display: none; +} +.nav-list li.active.no-active-child > a:after { + display: block; +} +.nav-list > li li.active > a:after { + top: 2px; + border-width: 14px 8px; +} +.nav-list li.active:not(.open) li.active > a:after { + display: none !important; +} +@media (min-width: 992px) { + .sidebar.compact, + .sidebar.compact.navbar-collapse { + width: 105px; + } + .sidebar.compact .sidebar-shortcuts { + max-height: 40px; + } + .sidebar.compact .nav-list > li:before { + height: auto; + bottom: -1px; + } + .sidebar.compact .nav-list > li > a { + height: auto; + line-height: 16px; + padding: 2px 0 8px; + text-align: center; + } + .sidebar.compact .nav-list > li > a > .menu-icon { + display: block; + margin: 0; + vertical-align: inherit; + line-height: 32px; + height: 32px; + font-size: 20px; + } + .sidebar.compact .nav-list > li > a > .arrow { + display: none; + } + .sidebar.compact .nav-list a .badge, + .sidebar.compact .nav-list a .label { + right: 12px; + } + .sidebar.compact .nav-list > li.active > .submenu, + .sidebar.compact .nav-list > li.open > .submenu { + display: none; + } + .sidebar.compact + .main-content { + margin-left: 105px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .sidebar.compact + .main-content { + margin-left: 0; + } + .sidebar.navbar-collapse.compact .nav-list > li > a { + text-align: left; + height: 39px; + line-height: 37px; + padding: 0 16px 0 7px; + } + .sidebar.navbar-collapse.compact .nav-list > li > a > .menu-icon { + display: inline-block; + vertical-align: sub; + height: auto; + line-height: inherit; + margin: 0 2px 0 0; + font-size: 18px; + } + .sidebar.navbar-collapse.compact .nav-list > li > a > .menu-text { + display: inline; + } + .sidebar.navbar-collapse.compact .nav-list > li > a > .arrow { + display: inline; + } + .sidebar.navbar-collapse.compact + .main-content { + margin-left: 0; + } +} +@media only screen and (min-width: 992px) { + .nav-list li.hover > .submenu { + position: absolute; + left: 100%; + margin-left: -2px; + top: -10px; + bottom: auto; + z-index: 1026; + width: 190px; + border: 1px solid; + display: none !important; + } + .nav-list li.hover:hover > .submenu, + .nav-list li.hover.hover-show > .submenu { + display: block !important; + } + .nav-list li.hover > .submenu:before, + .nav-list li.hover > .submenu > li:before { + display: none; + } + .nav-list li.hover.active > a:after { + display: block; + } + .nav-list li.hover.active:hover > a.dropdown-toggle:after, + .nav-list li.hover.active.hover-show > a.dropdown-toggle:after { + display: none; + } + .nav-list li.hover .submenu > li.active > a:after { + display: none !important; + } + .nav-list li.hover > .submenu.bottom { + top: auto; + bottom: -10px; + } + .nav-list li.hover > .submenu.bottom:before, + .nav-list li.hover > .submenu.bottom:after { + top: auto; + bottom: 18px; + } + .nav-list li.hover > .submenu { + padding: 0 2px; + } + .nav-list li.hover > .submenu > li > a { + margin-top: 2px; + margin-bottom: 2px; + padding-left: 18px; + border-top-width: 0; + } + .nav-list > li.hover > .submenu > li.active > a { + font-weight: bold; + } + .nav-list > li > .submenu li.hover > .submenu > li > a { + padding-left: 12px !important; + margin-left: auto !important; + } + .nav-list > li > .submenu li.hover > .submenu > li > a > .menu-icon { + margin-right: 2px; + } + .nav-list > li .submenu > li.hover > a { + padding-left: 22px; + } + .nav-list > li .submenu > li.hover > a > .menu-icon { + left: 4px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .sidebar.navbar-collapse .nav-list li.hover > .submenu { + position: relative; + left: auto; + top: auto; + z-index: auto; + margin: auto; + padding: 0; + width: auto; + -webkit-box-shadow: none; + box-shadow: none; + border-width: 0; + } + .sidebar.navbar-collapse .nav-list li.hover > .submenu > li:before, + .sidebar.navbar-collapse .nav-list li.hover > .submenu:before { + display: block; + } + .sidebar.navbar-collapse .nav-list li.hover > .submenu li > a { + padding-left: 37px; + } + .sidebar.navbar-collapse .nav-list > li.hover > .submenu { + border-top-width: 1px; + } + .sidebar.navbar-collapse .nav-list li.hover > .submenu > li > a > .menu-icon { + background-color: inherit; + margin-right: auto; + width: 18px; + position: absolute; + } + .sidebar.navbar-collapse .nav-list > li .submenu > li.hover > a > .menu-icon { + left: 10px; + } + .sidebar.navbar-collapse .nav-list li.hover > .submenu > li.active > a { + font-weight: normal; + } + .sidebar.navbar-collapse .nav-list li.hover > .submenu > li:hover > a > .menu-icon, + .sidebar.navbar-collapse .nav-list li.hover > .submenu > li.hover-show > a > .menu-icon, + .sidebar.navbar-collapse .nav-list li.hover > .submenu > li.active > a > .menu-icon { + display: inline-block; + } + .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu { + padding-left: 0; + padding-right: 0; + } + .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu > li > a { + padding-left: 22px !important; + margin-left: 20px !important; + } + .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu > li > a > .menu-icon { + display: inline-block; + width: auto; + position: static; + background-color: transparent; + margin-right: 4px; + } + .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li.hover > .submenu > li > a { + margin-left: 20px !important; + padding-left: 38px !important; + } + .sidebar.navbar-collapse .nav-list li.hover > .submenu > li > a { + border-top-width: 1px; + margin-top: 0; + margin-bottom: 0; + } + .sidebar.navbar-collapse .nav-list > li.hover > .submenu > li:first-child > a { + border-top-width: 0; + } + .sidebar.navbar-collapse .nav-list li.hover > .submenu, + .sidebar.navbar-collapse .nav-list li.hover:hover > .submenu, + .sidebar.navbar-collapse .nav-list li.hover.hover-show > .submenu, + .sidebar.navbar-collapse .nav-list li.hover > .arrow { + display: none !important; + } + .sidebar.navbar-collapse .nav-list li.hover.active > .submenu { + display: block !important; + } + .sidebar.navbar-collapse .nav-list li.hover > .submenu.nav-hide { + display: none !important; + } + .sidebar.navbar-collapse .nav-list li.hover > .submenu.nav-show { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .sidebar.navbar-collapse.compact .nav-list > li.hover.active > a:after { + display: none; + } +} +.nav-list li > .arrow { + display: none; + position: absolute; + top: 8px; + right: 1px; + z-index: 1027; +} +.nav-list li > .arrow:before, +.nav-list li > .arrow:after { + border: 1px solid transparent; + display: block; + height: 0; + width: 0; + position: absolute; + left: -20px; + top: 0; + right: auto; + bottom: auto; + content: ""; + border-width: 10px; +} +.nav-list li > .arrow:before { + z-index: 1; + left: -21px; +} +.nav-list li > .arrow:after { + z-index: 2; +} +.nav-list li:hover > a + .arrow, +.nav-list li.hover-show > a + .arrow { + display: none; +} +@media only screen and (min-width: 992px) { + .nav-list li.hover:hover > a.dropdown-toggle + .arrow, + .nav-list li.hover.hover-show > a.dropdown-toggle + .arrow { + display: block; + } +} +.sidebar.menu-min, +.sidebar.menu-min.compact, +.sidebar.menu-min.navbar-collapse { + width: 43px; +} +.sidebar.menu-min + .main-content { + margin-left: 43px; +} +.sidebar.menu-min .nav-list a .badge, +.sidebar.menu-min .nav-list a .label { + position: relative; + top: -1px; + right: auto; + left: 4px; +} +.sidebar.menu-min .nav-list .submenu .submenu a .badge, +.sidebar.menu-min .nav-list .submenu .submenu a .label { + top: 0; +} +.sidebar.menu-min .nav-list > li > a { + position: relative; + height: 39px; + line-height: 37px; + padding: 0; +} +.sidebar.menu-min .nav-list > li > a > .menu-icon { + font-size: 18px; + height: auto; + line-height: inherit; + display: inline-block; + vertical-align: sub; + margin-right: 0; + width: 44px; +} +.sidebar.menu-min .nav-list > li > a > .menu-text { + display: none; + text-align: left; + position: absolute; + top: -1px; + left: 42px; + z-index: 1025; + width: 176px; + height: 41px; + line-height: 38px; + padding-left: 12px; + border: 1px solid; +} +.sidebar.menu-min .nav-list > li > a.dropdown-toggle > .menu-text { + top: -1px; + border-width: 1px 1px 0; +} +.sidebar.menu-min .nav-list > li > a .arrow { + display: none; +} +.sidebar.menu-min .nav-list > li:hover > a > .menu-text, +.sidebar.menu-min .nav-list > li.hover-show > a > .menu-text { + display: block; +} +.sidebar.menu-min .nav-list > li.active > a:after { + border-width: 10px 6px; + top: 8px; +} +.sidebar.menu-min .nav-list > li.active.open > a:after { + display: block; +} +.sidebar.menu-min .nav-list > li.active.open li.active > a:after { + display: none; +} +.sidebar.menu-min .nav-list > li > .submenu { + position: absolute; + z-index: 1026; + left: 42px; + top: -1px; + margin-top: 40px; + padding-bottom: 2px; + width: 176px; + display: none !important; +} +.sidebar.menu-min .nav-list > li > .submenu:before { + display: none; +} +.sidebar.menu-min .nav-list > li > .submenu:after { + content: ""; + display: block; + height: 1px; + width: 1px; + position: absolute; + right: -1px; + top: -1px; + border-right: 1px solid; + border-right-color: inherit; +} +.sidebar.menu-min .nav-list > li > .submenu li:before { + display: none; +} +.sidebar.menu-min .nav-list > li > .submenu li > a { + margin-left: 0; + padding-left: 22px; +} +.sidebar.menu-min .nav-list > li > .submenu li > a > .menu-icon { + left: 4px; +} +.sidebar.menu-min .nav-list > li.hover > .submenu { + padding-bottom: 0; +} +.sidebar.menu-min .nav-list > li.open > .submenu { + display: none; +} +.sidebar.menu-min .nav-list > li:hover > .submenu, +.sidebar.menu-min .nav-list > li.hover-show > .submenu { + display: block !important; +} +.sidebar.menu-min .nav-list > li > .arrow { + top: 10px; +} +.sidebar.menu-min .nav-list > li > .arrow:after, +.sidebar.menu-min .nav-list > li > .arrow:before { + border-width: 8px; + left: -16px; +} +.sidebar.menu-min .nav-list > li > .arrow:before { + left: -17px; +} +.sidebar.menu-min .nav-list li > .arrow { + right: -1px; +} +.sidebar.menu-min .nav-list > li:hover > .arrow, +.sidebar.menu-min .nav-list > li.hover-show > .arrow { + display: block; +} +.sidebar.menu-min .nav-list > li.pull_up > .arrow { + z-index: 1027; +} +.sidebar.menu-min .nav-list > li.pull_up > .arrow:after, +.sidebar.menu-min .nav-list > li.pull_up > .arrow:before { + border-width: 10px; + left: -20px; +} +.sidebar.menu-min .nav-list > li.pull_up > .arrow:before { + left: -21px; +} +.sidebar.menu-min .sidebar-shortcuts { + position: relative; + overflow: visible; + z-index: 1; +} +.sidebar.menu-min .sidebar-shortcuts-mini { + display: block; +} +.sidebar.menu-min .sidebar-shortcuts-large { + display: none; + position: absolute; + top: 0; + left: 42px; + width: 182px; + padding: 0 2px 3px; + border: 1px solid; + border-top-width: 0; +} +.sidebar.menu-min .sidebar-shortcuts:hover .sidebar-shortcuts-large, +.sidebar.menu-min .sidebar-shortcuts.hover-show .sidebar-shortcuts-large { + display: block; +} +.sidebar.menu-min .sidebar-toggle:before { + left: 5px; + right: 5px; +} +.sidebar.menu-min .sidebar-toggle > .ace-icon { + font-size: 13px; + padding: 0 4px; + line-height: 15px; + border-width: 1px; +} +.sidebar.menu-min .nav-list > li > .submenu li > .submenu > li > a { + margin-left: 2px; + padding-left: 30px; +} +.sidebar.menu-min .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: 2px; + padding-left: 45px; +} +.sidebar.menu-min .nav-list > li > .submenu li.active > a:after { + display: none; +} +.sidebar.menu-min .nav-list li.active.open > .submenu > li.active > a:after { + display: none; +} +.sidebar.menu-min .nav-list > li.active:hover > a:after, +.sidebar.menu-min .nav-list > li.active.hover-show > a:after, +.sidebar.menu-min .nav-list > li.active.open:hover > a:after { + display: none; +} +.sidebar.menu-min .nav-list > li.active:hover:after { + display: none; +} +@media (min-width: 992px) { + .sidebar.menu-min .nav-list li.hover > .submenu { + margin-left: 0; + } + .sidebar.menu-min .nav-list > li > .submenu li.hover > .submenu > li > a, + .sidebar.menu-min .nav-list > li > .submenu li > .submenu > li.hover > .submenu > li > a { + margin-left: 0 !important; + } +} +@media (min-width: 992px) { + .sidebar.menu-min.compact .nav-list > li > a { + height: 39px; + line-height: 37px; + padding: 0 16px 0 7px; + position: relative; + } + .sidebar.menu-min.compact .nav-list > li > a > .menu-icon { + font-size: 18px; + height: auto; + line-height: inherit; + display: inline-block; + vertical-align: sub; + width: auto; + } +} +@media only screen and (min-width: 992px) { + .navbar.h-navbar { + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25); + } + .sidebar.h-sidebar { + position: relative; + float: none !important; + width: auto; + margin-top: 17px; + border-width: 0 !important; + box-shadow: none; + } + .sidebar.h-sidebar.menu-min, + .sidebar.h-sidebar.compact { + width: auto; + } + .sidebar.h-sidebar.sidebar-fixed { + position: fixed; + } + .sidebar.h-sidebar.no-gap { + margin-top: auto; + } + .sidebar.h-sidebar.no-gap .nav-list { + padding-top: 3px; + } + .sidebar.h-sidebar:before { + display: block; + position: absolute; + z-index: -1; + left: 0 !important; + right: 0 !important; + top: -17px; + bottom: auto; + height: 17px; + width: auto; + border-width: 0; + border-bottom: 1px solid; + border-bottom-color: inherit; + } + .sidebar.h-sidebar.lower-highlight .nav-list > li:before { + top: 0; + } + .main-content .sidebar.h-sidebar .nav-list > li:before { + top: 0; + } + .sidebar.h-sidebar .nav-list { + border-width: 0; + border-bottom: 2px solid #79b0ce; + } + .sidebar.h-sidebar .nav-list > li { + float: left; + border-width: 0 0 0 1px; + margin-left: 0; + } + .sidebar.h-sidebar .nav-list > li:last-child { + border-right-width: 1px; + } + .sidebar.h-sidebar .nav-list > li:before { + left: -1px; + right: -1px; + bottom: auto; + top: -2px; + max-width: none; + width: auto; + height: 2px; + border-width: 0; + } + .sidebar.h-sidebar .nav-list > li.active:before { + display: block; + } + .sidebar.h-sidebar .nav-list > li.active:after { + display: none; + } + .sidebar.h-sidebar .nav-list > li:first-child { + border-left-width: 0; + margin-left: 0; + } + .sidebar.h-sidebar .sidebar-shortcuts + .nav-list > li:first-child { + border-left-width: 1px; + margin-left: -1px; + } + .sidebar.h-sidebar .nav-list > li > a { + line-height: 22px; + height: auto; + padding: 10px 14px; + } + .sidebar.h-sidebar .nav-list > li > a > .menu-icon { + display: block; + margin: 1px 0 4px; + line-height: inherit; + width: auto; + } + .sidebar.h-sidebar .nav-list > li > a > .arrow { + display: none; + } + .sidebar.h-sidebar .nav-list > li.hover.pull_right { + float: none !important; + } + .sidebar.h-sidebar .nav-list > li.hover > .submenu { + top: 100%; + left: 1px; + margin-top: auto; + margin-left: -2px; + width: 190px; + z-index: 1026; + } + .sidebar.h-sidebar .nav-list > li.hover.pull_right > .submenu { + left: auto; + right: 1px; + } + .sidebar.h-sidebar .nav-list > li.hover > .arrow { + right: auto; + top: auto; + left: 24px; + bottom: 7px; + } + .sidebar.h-sidebar .nav-list > li.hover.pull_right > .arrow { + left: auto; + right: 24px; + } + .sidebar.h-sidebar .nav-list > li.hover > .arrow:before, + .sidebar.h-sidebar .nav-list > li.hover > .arrow:after { + border-width: 0 8px 8px !important; + } + .sidebar.h-sidebar .nav-list > li.hover > .arrow:after { + border-color: transparent; + border-left-color: transparent !important; + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + -moz-border-left-colors: none !important; + -moz-border-top-colors: none; + -moz-border-bottom-colors: none; + left: -10px !important; + right: auto !important; + } + .sidebar.h-sidebar .nav-list > li.hover > .arrow:before { + border-color: transparent; + border-left-color: transparent !important; + border-right-color: transparent !important; + -moz-border-right-colors: none !important; + -moz-border-left-colors: none !important; + -moz-border-top-colors: none; + -moz-border-bottom-colors: none; + right: auto !important; + left: -10px !important; + top: -1px !important; + } + .sidebar.h-sidebar .nav-list > li.hover:hover > a ~ .arrow, + .sidebar.h-sidebar .nav-list > li.hover.hover-show > a ~ .arrow { + display: none; + } + .sidebar.h-sidebar .nav-list > li.hover:hover > a.dropdown-toggle ~ .arrow, + .sidebar.h-sidebar .nav-list > li.hover.hover-show > a.dropdown-toggle ~ .arrow { + display: block; + } + .sidebar.h-sidebar .nav-list > li.hover-flip > .submenu { + left: auto; + right: 1px; + margin-left: auto; + margin-right: -2px; + } + .sidebar.h-sidebar .nav-list > li.hover-flip > .arrow { + left: auto; + right: 24px; + } + .sidebar.h-sidebar .nav-list li li.hover-flip > .submenu { + left: auto; + right: 100%; + margin-left: auto; + margin-right: -2px; + } + .sidebar.h-sidebar .nav-list li li.hover-flip > .arrow { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -moz-transform: scale(-1, 1); + -webkit-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); + left: 0; + right: auto; + } + .sidebar.h-sidebar .sidebar-shortcuts-large:before, + .sidebar.h-sidebar .sidebar-shortcuts-large:after { + display: block; + content: ""; + position: absolute; + left: 50%; + margin-left: -8px; + border: 1px solid transparent; + border-width: 0 8px 8px; + } + .sidebar.h-sidebar .sidebar-shortcuts-large:after { + border-right-color: transparent; + -moz-border-right-colors: none; + top: -8px; + } + .sidebar.h-sidebar .sidebar-shortcuts-large:before { + -moz-border-bottom-colors: #CCC; + border-bottom-color: #CCC; + top: -9px; + } + .sidebar.h-sidebar .sidebar-toggle { + position: absolute; + top: 12px; + right: 6px; + background-color: transparent; + border-width: 0; + } + .sidebar.h-sidebar .sidebar-shortcuts { + float: left; + display: block; + overflow: visible; + position: relative; + margin: 0; + padding: 12px 8px 9px; + max-height: none !important; + background-color: transparent; + } + .sidebar.h-sidebar .sidebar-shortcuts:hover .sidebar-shortcuts-large, + .sidebar.h-sidebar .sidebar-shortcuts.hover-show .sidebar-shortcuts-large { + display: block; + } + .sidebar.h-sidebar .sidebar-shortcuts-large { + display: none; + width: 52px; + height: auto; + position: absolute; + z-index: 1025; + top: 100%; + margin-top: -5px; + left: 10px; + padding: 3px 2px; + border: 1px solid; + } + .sidebar.h-sidebar .sidebar-shortcuts-mini { + width: auto; + max-width: 52px; + display: block; + background-color: transparent; + padding-top: 3px; + padding-bottom: 5px; + } + .sidebar.h-sidebar .sidebar-shortcuts-mini > .btn { + padding: 9px; + } + .sidebar.h-sidebar .nav-list a .badge, + .sidebar.h-sidebar .nav-list a .label { + position: absolute; + top: 11px; + right: auto !important; + left: 50%; + margin-left: 10px; + } + .sidebar.h-sidebar + .main-content { + margin-left: 0; + } + .sidebar.h-sidebar + .main-content .breadcrumbs { + margin: 6px 9px; + border: 1px solid; + border-color: #E5E5E5; + } + .h-sidebar.sidebar-fixed { + top: auto; + width: 100%; + left: 0; + right: 0; + } + .h-sidebar.sidebar-fixed:before { + z-index: auto; + } + .h-sidebar.sidebar-fixed, + .h-sidebar.sidebar-fixed .nav-list { + border-right-width: 0; + border-left-width: 0; + } + .h-sidebar.sidebar-fixed .sidebar-shortcuts { + border-width: 0; + } + .h-sidebar.sidebar-fixed + .main-content { + padding-top: 88px; + } + .h-sidebar.sidebar-fixed.no-gap + .main-content { + padding-top: 74px; + } + .h-sidebar.sidebar-fixed.menu-min + .main-content { + padding-top: 63px; + } + .h-sidebar.sidebar-fixed.menu-min.no-gap + .main-content { + padding-top: 49px; + } +} +@media only screen and (min-width: 992px) and (max-width: 991px) { + .sidebar.h-sidebar + .main-content .breadcrumbs { + margin: 0; + border-width: 0 0 1px; + } +} +.main-container.container .h-sidebar.sidebar-fixed { + left: 0; + right: 0; + width: auto; +} +@media (min-width: 768px) { + .main-container.container .h-sidebar.sidebar-fixed { + left: auto !important; + right: auto !important; + width: 744px; + } +} +@media (min-width: 992px) { + .main-container.container .h-sidebar.sidebar-fixed { + width: 964px; + } +} +@media (min-width: 1200px) { + .main-container.container .h-sidebar.sidebar-fixed { + width: 1164px; + } +} +/** + @media (min-width: @screen-sm-min) and (max-width: @grid-float-breakpoint-max) { + .main-container.container .sidebar.sidebar-fixed + { + left: auto;// !important; + right: auto;// !important; + width: @container-sm;// !important; + } + } + + + @media (max-width: @grid-float-breakpoint-max) { + .main-container.container .sidebar.sidebar-fixed { + .sidebar-shortcuts { + max-height: none; + border-bottom-width: 0; + } + } + } + */ +@media (min-width: 992px) { + .sidebar.h-sidebar.menu-min .nav.nav-list > li > a, + .sidebar.h-sidebar.menu-min.compact .nav.nav-list > li > a { + padding: 9px 12px; + } + .sidebar.h-sidebar.menu-min .nav-list > li > a > .menu-text { + left: -1px; + top: 100%; + width: 190px; + } + .sidebar.h-sidebar.menu-min .nav-list > li > a > .menu-icon { + margin: 2px 0; + } + .sidebar.h-sidebar.menu-min .nav-list > li.hover > .submenu { + top: 100%; + margin-top: 41px; + } + .sidebar.h-sidebar.menu-min .nav-list > li.hover:hover > a ~ .arrow, + .sidebar.h-sidebar.menu-min .nav-list > li.hover.hover-show > a ~ .arrow { + display: block; + } + .sidebar.h-sidebar.menu-min .sidebar-toggle { + top: 6px; + } + .sidebar.h-sidebar.menu-min .sidebar-shortcuts { + padding: 0; + } + .sidebar.h-sidebar.menu-min .sidebar-shortcuts-mini { + padding-bottom: 4px; + padding-top: 4px; + } + .sidebar.h-sidebar.menu-min .sidebar-shortcuts-mini > .btn { + padding: 8px; + } + .sidebar.h-sidebar.menu-min .sidebar-shortcuts-large { + left: 1px; + margin-top: 4px; + } + .sidebar.h-sidebar.compact .nav-list > li > a > .menu-icon { + font-size: 18px; + height: auto; + } + .sidebar.h-sidebar.compact.menu-min .nav-list > li > a { + height: auto; + line-height: 22px; + } +} +/** +@media only screen and (max-width: @grid-float-breakpoint-max) { + .menu-toggler + .sidebar.h-sidebar { + margin-top: (@breadcrumb-height - 1) !important; + } + .sidebar.h-sidebar.responsive-min , .sidebar.h-sidebar.navbar-collapse { + margin-top: auto !important; + } +} +*/ +.main-container .menu-toggler { + display: none; +} +@media only screen and (max-width: 991px) { + .sidebar.responsive:before { + display: none; + } + .sidebar.responsive { + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.15); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.15); + z-index: 1027; + overflow: hidden; + max-height: 0; + -moz-transform: translateX(-200px); + -webkit-transform: translateX(-200px); + -o-transform: translateX(-200px); + -ms-transform: translateX(-200px); + transform: translateX(-200px); + -webkit-transition: -webkit-transform 0.2s linear 0s, max-height 0s linear 0.2s; + -moz-transition: -moz-transform 0.2s linear 0s, max-height 0s linear 0.2s; + -o-transition: -o-transform 0.2s linear 0s, max-height 0s linear 0.2s; + transition: transform 0.2s linear 0s, max-height 0s linear 0.2s; + position: relative; + bottom: auto; + left: 190px; + margin-left: -190px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .sidebar.responsive.compact { + -moz-transform: translateX(-115px); + -webkit-transform: translateX(-115px); + -o-transform: translateX(-115px); + -ms-transform: translateX(-115px); + transform: translateX(-115px); + } + .sidebar.responsive.compact.push_away.display + .main-content { + -moz-transform: translateX(105px); + -webkit-transform: translateX(105px); + -o-transform: translateX(105px); + -ms-transform: translateX(105px); + transform: translateX(105px); + } + .navbar.navbar-fixed-top + .main-container .sidebar.responsive.compact.push_away.display ~ .footer .footer-inner { + -moz-transform: translateX(105px); + -webkit-transform: translateX(105px); + -o-transform: translateX(105px); + -ms-transform: translateX(105px); + transform: translateX(105px); + } +} +@media only screen and (max-width: 991px) { + .sidebar.responsive.menu-min { + -moz-transform: translateX(-53px); + -webkit-transform: translateX(-53px); + -o-transform: translateX(-53px); + -ms-transform: translateX(-53px); + transform: translateX(-53px); + } + .sidebar.responsive.display { + -moz-transform: none !important; + -webkit-transform: none !important; + -o-transform: none !important; + -ms-transform: none !important; + transform: none !important; + overflow: visible; + max-height: 2000px; + -webkit-transition-delay: 0s; + -moz-transition-delay: 0s; + -o-transition-delay: 0s; + transition-delay: 0s; + } + .sidebar.responsive.push_away { + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + .sidebar.responsive.push_away:before { + display: block !important; + } + .sidebar.responsive.push_away + .main-content { + -webkit-transition: -webkit-transform 0.2s linear 0s; + -moz-transition: -moz-transform 0.2s linear 0s; + -o-transition: -o-transform 0.2s linear 0s; + transition: transform 0.2s linear 0s; + } + .sidebar.responsive.push_away.display + .main-content { + -moz-transform: translateX(190px); + -webkit-transform: translateX(190px); + -o-transform: translateX(190px); + -ms-transform: translateX(190px); + transform: translateX(190px); + } + .sidebar.responsive.push_away.display.menu-min + .main-content { + -moz-transform: translateX(43px); + -webkit-transform: translateX(43px); + -o-transform: translateX(43px); + -ms-transform: translateX(43px); + transform: translateX(43px); + } + .navbar.navbar-fixed-top + .main-container .sidebar.responsive.push_away:before { + height: 5000px; + } + .navbar.navbar-fixed-top + .main-container .sidebar.responsive.push_away ~ .footer .footer-inner { + -webkit-transition: -webkit-transform 0.2s linear 0s; + -moz-transition: -moz-transform 0.2s linear 0s; + -o-transition: -o-transform 0.2s linear 0s; + transition: transform 0.2s linear 0s; + } + .navbar.navbar-fixed-top + .main-container .sidebar.responsive.push_away.display ~ .footer .footer-inner { + -moz-transform: translateX(190px); + -webkit-transform: translateX(190px); + -o-transform: translateX(190px); + -ms-transform: translateX(190px); + transform: translateX(190px); + } + .navbar.navbar-fixed-top + .main-container .sidebar.responsive.push_away.display.menu-min ~ .footer .footer-inner { + -moz-transform: translateX(43px); + -webkit-transform: translateX(43px); + -o-transform: translateX(43px); + -ms-transform: translateX(43px); + transform: translateX(43px); + } + .sidebar.responsive + .main-content { + margin-left: 0 !important; + margin-right: 0 !important; + } +} +@media only screen and (min-width: 768px) and (max-width: 991px) { + .main-container.container .sidebar.responsive { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + display: none; + } + .main-container.container .sidebar.responsive:before { + display: none !important; + } + .main-container.container .sidebar.responsive.display { + display: block; + } + .main-container.container .sidebar.responsive.push_away + .main-content, + .main-container.container .sidebar.responsive.push_away ~ .footer .footer-inner { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + transition: none !important; + -moz-transform: none !important; + -webkit-transform: none !important; + -o-transform: none !important; + -ms-transform: none !important; + transform: none !important; + } +} +@media only screen and (max-width: 991px) { + .responsive.sidebar-fixed { + position: fixed; + } + .main-container .menu-toggler.fixed { + position: fixed; + left: auto; + z-index: 1026; + -moz-backface-visibility: hidden; + } +} +@media only screen and (max-width: 991px) { + .menu-toggler + .sidebar.responsive { + margin-top: 40px; + } + .main-container .menu-toggler { + display: block; + position: absolute; + z-index: 1026; + width: 52px; + height: 32px; + margin-right: 2px; + line-height: normal; + padding-left: 33px; + padding-top: 7px; + padding-bottom: 1px; + font-size: 13px; + font-weight: bold; + text-transform: uppercase; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } + .main-container .menu-toggler:hover { + text-decoration: none; + } + .main-container .menu-toggler:focus { + outline: none; + } + .main-container .menu-toggler:before { + border-top: 1px solid #87b87f; + border-bottom: 1px solid #6fb3e0; + height: 2px; + width: 24px; + content: ""; + position: absolute; + z-index: 1; + top: 13px; + left: 4px; + -webkit-transition: all 0.1s ease; + -o-transition: all 0.1s ease; + transition: all 0.1s ease; + -o-transition: none; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } + .main-container .menu-toggler:after { + border-top: 1px solid #ffa24d; + border-bottom: 1px solid #d15b47; + content: ""; + height: 2px; + width: 24px; + position: absolute; + top: 19px; + left: 4px; + -webkit-transition: all 0.1s ease; + -o-transition: all 0.1s ease; + transition: all 0.1s ease; + -o-transition: none; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } + .main-container .menu-toggler.display:before { + height: 4px; + top: 8px; + border-width: 2px; + } + .main-container .menu-toggler.display:after { + height: 4px; + top: 20px; + border-width: 2px; + } + .main-container .menu-toggler > .toggler-text { + display: block; + position: absolute; + bottom: -9px; + left: 0; + border: 1px solid transparent; + border-width: 9px 42px 0; + border-top-color: #444444; + -moz-border-top-colors: #444444; + } + .main-container .menu-toggler > .toggler-text:after { + display: block; + content: "MENU"; + color: #ffffff; + position: absolute; + left: -8px; + top: -41px; + } + .menu-toggler + .responsive.sidebar-scroll .nav-wrap { + overflow: hidden; + } +} +@media only screen and (max-width: 320px) { + .main-container .menu-toggler { + width: 0; + } + .main-container .menu-toggler > .toggler-text { + border-width: 7px 16px; + bottom: -14px; + } + .main-container .menu-toggler > .toggler-text:after { + font-size: 9px; + font-weight: normal; + color: #FFF; + position: absolute; + left: -13px; + top: -42px; + } + .main-container .menu-toggler:before, + .main-container .menu-toggler:after { + margin-top: 8px; + } + .main-container .menu-toggler.display:before, + .main-container .menu-toggler.display:after { + height: 2px; + border-width: 1px; + } + .main-container .menu-toggler.display:before { + top: 13px; + } + .main-container .menu-toggler.display:after { + top: 19px; + } +} +.sidebar-toggle.sidebar-expand { + display: none; +} +@media (max-width: 991px) { + .menu-toggler.invisible { + position: fixed; + z-index: -999; + visibility: hidden; + opacity: 0; + width: 1px; + height: 1px; + } + .sidebar.responsive-min, + .sidebar.responsive-min.compact, + .sidebar.responsive-min.navbar-collapse { + width: 43px; + } + .sidebar.responsive-min + .main-content { + margin-left: 43px; + } + .sidebar.responsive-min .nav-list a .badge, + .sidebar.responsive-min .nav-list a .label { + position: relative; + top: -1px; + right: auto; + left: 4px; + } + .sidebar.responsive-min .nav-list .submenu .submenu a .badge, + .sidebar.responsive-min .nav-list .submenu .submenu a .label { + top: 0; + } + .sidebar.responsive-min .nav-list > li > a { + position: relative; + height: 39px; + line-height: 37px; + padding: 0; + } + .sidebar.responsive-min .nav-list > li > a > .menu-icon { + font-size: 18px; + height: auto; + line-height: inherit; + display: inline-block; + vertical-align: sub; + margin-right: 0; + width: 44px; + } + .sidebar.responsive-min .nav-list > li > a > .menu-text { + display: none; + text-align: left; + position: absolute; + top: -1px; + left: 42px; + z-index: 1025; + width: 176px; + height: 41px; + line-height: 38px; + padding-left: 12px; + border: 1px solid; + } + .sidebar.responsive-min .nav-list > li > a.dropdown-toggle > .menu-text { + top: -1px; + border-width: 1px 1px 0; + } + .sidebar.responsive-min .nav-list > li > a .arrow { + display: none; + } + .sidebar.responsive-min .nav-list > li:hover > a > .menu-text, + .sidebar.responsive-min .nav-list > li.hover-show > a > .menu-text { + display: block; + } + .sidebar.responsive-min .nav-list > li.active > a:after { + border-width: 10px 6px; + top: 8px; + } + .sidebar.responsive-min .nav-list > li.active.open > a:after { + display: block; + } + .sidebar.responsive-min .nav-list > li.active.open li.active > a:after { + display: none; + } + .sidebar.responsive-min .nav-list > li > .submenu { + position: absolute; + z-index: 1026; + left: 42px; + top: -1px; + margin-top: 40px; + padding-bottom: 2px; + width: 176px; + display: none !important; + } + .sidebar.responsive-min .nav-list > li > .submenu:before { + display: none; + } + .sidebar.responsive-min .nav-list > li > .submenu:after { + content: ""; + display: block; + height: 1px; + width: 1px; + position: absolute; + right: -1px; + top: -1px; + border-right: 1px solid; + border-right-color: inherit; + } + .sidebar.responsive-min .nav-list > li > .submenu li:before { + display: none; + } + .sidebar.responsive-min .nav-list > li > .submenu li > a { + margin-left: 0; + padding-left: 22px; + } + .sidebar.responsive-min .nav-list > li > .submenu li > a > .menu-icon { + left: 4px; + } + .sidebar.responsive-min .nav-list > li.hover > .submenu { + padding-bottom: 0; + } + .sidebar.responsive-min .nav-list > li.open > .submenu { + display: none; + } + .sidebar.responsive-min .nav-list > li:hover > .submenu, + .sidebar.responsive-min .nav-list > li.hover-show > .submenu { + display: block !important; + } + .sidebar.responsive-min .nav-list > li > .arrow { + top: 10px; + } + .sidebar.responsive-min .nav-list > li > .arrow:after, + .sidebar.responsive-min .nav-list > li > .arrow:before { + border-width: 8px; + left: -16px; + } + .sidebar.responsive-min .nav-list > li > .arrow:before { + left: -17px; + } + .sidebar.responsive-min .nav-list li > .arrow { + right: -1px; + } + .sidebar.responsive-min .nav-list > li:hover > .arrow, + .sidebar.responsive-min .nav-list > li.hover-show > .arrow { + display: block; + } + .sidebar.responsive-min .nav-list > li.pull_up > .arrow { + z-index: 1027; + } + .sidebar.responsive-min .nav-list > li.pull_up > .arrow:after, + .sidebar.responsive-min .nav-list > li.pull_up > .arrow:before { + border-width: 10px; + left: -20px; + } + .sidebar.responsive-min .nav-list > li.pull_up > .arrow:before { + left: -21px; + } + .sidebar.responsive-min .sidebar-shortcuts { + position: relative; + overflow: visible; + z-index: 1; + } + .sidebar.responsive-min .sidebar-shortcuts-mini { + display: block; + } + .sidebar.responsive-min .sidebar-shortcuts-large { + display: none; + position: absolute; + top: 0; + left: 42px; + width: 182px; + padding: 0 2px 3px; + border: 1px solid; + border-top-width: 0; + } + .sidebar.responsive-min .sidebar-shortcuts:hover .sidebar-shortcuts-large, + .sidebar.responsive-min .sidebar-shortcuts.hover-show .sidebar-shortcuts-large { + display: block; + } + .sidebar.responsive-min .sidebar-toggle:before { + left: 5px; + right: 5px; + } + .sidebar.responsive-min .sidebar-toggle > .ace-icon { + font-size: 13px; + padding: 0 4px; + line-height: 15px; + border-width: 1px; + } + .sidebar.responsive-min .nav-list > li > .submenu li > .submenu > li > a { + margin-left: 2px; + padding-left: 30px; + } + .sidebar.responsive-min .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: 2px; + padding-left: 45px; + } + .sidebar.responsive-min .nav-list > li > .submenu li.active > a:after { + display: none; + } + .sidebar.responsive-min .nav-list li.active.open > .submenu > li.active > a:after { + display: none; + } + .sidebar.responsive-min .nav-list > li.active:hover > a:after, + .sidebar.responsive-min .nav-list > li.active.hover-show > a:after, + .sidebar.responsive-min .nav-list > li.active.open:hover > a:after { + display: none; + } + .sidebar.responsive-min .nav-list > li.active:hover:after { + display: none; + } + .sidebar.responsive-min:before { + display: block; + } + .sidebar.responsive-min .sidebar-toggle.sidebar-collapse { + display: none; + } + .sidebar.responsive-min .sidebar-toggle.sidebar-expand { + display: block; + } + .sidebar.responsive-min + .main-content { + margin-left: 43px !important; + } + .rtl .sidebar.responsive-min + .main-content { + margin-left: auto !important; + margin-right: 43px !important; + } + .sidebar.responsive-min + .main-content .breadcrumb { + margin-left: 12px; + } + .sidebar.responsive-max { + display: block; + position: relative; + left: 190px; + margin-left: -190px; + z-index: 1027; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.15); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.15); + } + .sidebar.responsive-max:before { + display: none; + } + .sidebar.responsive-max .sidebar-toggle.sidebar-collapse { + display: none; + } + .sidebar.responsive-max .sidebar-toggle.sidebar-expand { + display: block; + z-index: 1; + } + .sidebar.responsive-max + .main-content { + margin-left: 43px !important; + } + .sidebar.responsive-max + .main-content .breadcrumb { + margin-left: 12px; + } +} +@media only screen and (min-width: 992px) { + .sidebar.navbar-collapse { + max-height: none; + } +} +@media only screen and (max-width: 991px) { + .sidebar.navbar-collapse { + position: relative; + float: none !important; + margin-top: auto !important; + z-index: 1; + width: 100% !important; + max-height: 340px; + margin-left: 0; + margin-right: 0; + } + .sidebar.navbar-collapse:before { + display: none; + } + .sidebar.navbar-collapse .nav-list > li:last-child { + border-bottom-width: 0; + } + .sidebar.navbar-collapse .nav-list > li > a { + padding-top: 10px !important; + padding-bottom: 10px !important; + line-height: 20px; + height: 41px; + } + .sidebar.navbar-collapse .nav-list > li:before { + height: 43px; + } + .sidebar.navbar-collapse .nav-list > li.active:after { + display: none; + } + .sidebar.navbar-collapse li > .arrow { + display: none !important; + } + .sidebar.navbar-collapse .nav-list li > .submenu { + border-left-width: 0; + } + .sidebar.navbar-collapse .sidebar-toggle { + display: none; + } + .sidebar.navbar-collapse .sidebar-shortcuts { + padding: 3px 0 6px; + max-height: none; + border-bottom-width: 0; + } + .sidebar.navbar-collapse + .main-content { + margin-left: 0 !important; + margin-right: 0 !important; + } + .sidebar.navbar-collapse + .main-content .breadcrumb { + margin-left: 12px; + } + .sidebar.navbar-collapse .nav-wrap + .ace-scroll { + display: none; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu { + position: relative; + left: auto; + top: auto; + width: auto; + z-index: auto; + margin-top: auto; + padding-top: 0; + padding-bottom: 0; + border-width: 1px 0 0 0 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu:before { + display: block; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu > li:before { + display: block; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > a > .menu-icon { + left: 10px; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu:after { + display: none; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > a { + padding: 7px 0 9px 37px; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > .submenu > li > a { + margin-left: 20px; + padding-left: 22px; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu li > .submenu > li > .submenu > li > a { + margin-left: 20px; + padding-left: 38px; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > a:hover:before { + width: 3px; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > a { + text-align: left; + padding-left: 7px; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > a > .menu-icon { + display: inline-block; + width: auto; + margin-right: 2px; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > a > .menu-text { + position: relative; + display: inline; + line-height: normal; + padding-left: 0; + height: auto; + top: auto; + left: auto; + z-index: auto; + width: auto; + border-width: 0 !important; + background-color: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + .sidebar.navbar-collapse.menu-min .nav-list a > .arrow { + display: block; + } + .sidebar.navbar-collapse.menu-min .nav-list > li:hover > .submenu { + display: none !important; + } + .sidebar.navbar-collapse.menu-min .nav-list > li.active > .submenu { + display: block !important; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu.nav-show { + display: block !important; + } + .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu.nav-hide { + display: none !important; + } + .sidebar.navbar-collapse.menu-min .sidebar-shortcuts-large { + display: block; + position: static; + -webkit-box-shadow: none !important; + box-shadow: none !important; + border-width: 0 !important; + background-color: transparent !important; + width: auto; + padding: 0; + } + .sidebar.navbar-collapse.menu-min .sidebar-shortcuts-mini { + display: none; + } + .sidebar.navbar-collapse .nav-list a .badge, + .sidebar.navbar-collapse .nav-list a .label { + position: relative; + top: -1px; + right: auto; + left: 4px; + } + .sidebar.navbar-collapse .nav-list > li.active:after, + .sidebar.navbar-collapse .nav-list li.active > a:before, + .sidebar.navbar-collapse .nav-list li.active > a:after { + display: none !important; + } + .sidebar.navbar-collapse .nav-list > li.highlight.active > a:before, + .sidebar.navbar-collapse .nav-list > li.highlight.active > a:after { + display: none !important; + } +} +@media (max-width: 991px) and (max-height: 400px) { + .sidebar.navbar-collapse { + max-height: 300px; + } +} +@media (max-width: 991px) and (max-height: 350px) { + .sidebar.navbar-collapse { + max-height: 250px; + } +} +@media (max-width: 991px) and (max-height: 300px) { + .sidebar.navbar-collapse { + max-height: 200px; + } +} +@media (max-width: 991px) and (max-height: 250px) { + .sidebar.navbar-collapse { + max-height: 150px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .sidebar.navbar-collapse .nav-list > li > .submenu li.hover > .submenu > li > a, + .sidebar.navbar-collapse .nav-list > li > .submenu li > .submenu > li.hover > .submenu > li > a { + margin-left: 20px !important; + } +} +@media (max-width: 991px) { + .navbar-fixed-top + .main-container .sidebar.navbar-collapse { + position: fixed; + z-index: 1027; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .navbar-fixed-top + .main-container.container .sidebar.navbar-collapse { + width: 744px !important; + } +} +.main-content-inner { + float: left; + width: 100%; +} +.main-content .sidebar:before { + top: 150px; +} +@media only screen and (min-width: 992px) { + body.mob-safari .sidebar.h-sidebar + .main-content .sidebar.sidebar-fixed:not(.h-sidebar) { + top: 131px; + } + body.mob-safari .sidebar.h-sidebar.no-gap + .main-content .sidebar.sidebar-fixed:not(.h-sidebar) { + top: 114px; + } + body.mob-safari .sidebar.h-sidebar.menu-min + .main-content .sidebar.sidebar-fixed:not(.h-sidebar) { + top: 106px; + } + body.mob-safari .sidebar.h-sidebar.menu-min.no-gap + .main-content .sidebar.sidebar-fixed:not(.h-sidebar) { + top: 89px; + } +} +@media only screen and (min-width: 992px) { + .h-navbar.navbar-fixed-top + .main-container .sidebar:not(.h-sidebar):before { + top: 150px; + } + .h-navbar.navbar-fixed-top + .main-container .sidebar:not(.h-sidebar) .nav-list { + padding-top: 3px; + } + .h-navbar.navbar-fixed-top + .main-container .sidebar:not(.h-sidebar) .sidebar-shortcuts ~ .nav-list, + .h-navbar.navbar-fixed-top + .main-container .sidebar:not(.h-sidebar) .sidebar-shortcuts ~ .nav-wrap-up .nav-list { + padding-top: 0; + } + .h-navbar.navbar-fixed-top + .main-container .sidebar:not(.h-sidebar) .sidebar-shortcuts { + padding-top: 3px; + min-height: 43px; + } + .h-navbar.navbar-fixed-top + .main-container .sidebar:not(.h-sidebar).menu-min .sidebar-shortcuts-large { + line-height: 40px; + } + .h-navbar.navbar-fixed-top + .main-container .main-content .sidebar:not(.h-sidebar) .nav-list { + padding-top: 0; + } + .h-navbar.navbar-fixed-top + .main-container .main-content .sidebar.sidebar-fixed { + z-index: 1026; + } + .main-content .h-sidebar { + padding-top: 1px; + margin-top: 0; + } + .main-content .h-sidebar:before { + display: none; + } + .main-content .h-sidebar + .page-content { + margin-left: auto; + } + .main-content .h-sidebar.sidebar-fixed { + left: 190px; + } + .main-content .h-sidebar.sidebar-fixed + .page-content { + margin-top: 74px; + } + .main-content .h-sidebar.sidebar-fixed.menu-min + .page-content { + margin-top: 49px; + } + .main-content .h-sidebar.menu-min .nav-list > li > a { + padding: 8px 12px 7px; + } + .sidebar.compact + .main-content .h-sidebar.sidebar-fixed { + left: 105px; + } + .sidebar.menu-min + .main-content .h-sidebar.sidebar-fixed { + left: 43px; + } + .navbar.navbar-fixed-top + .main-container .main-content .h-sidebar.sidebar-fixed { + padding-top: 3px; + } +} +.container.main-container .sidebar + .main-content .h-sidebar.sidebar-fixed { + left: auto; + right: auto; +} +@media (min-width: 992px) { + .container.main-container .sidebar.compact + .main-content .h-sidebar.sidebar-fixed { + width: 639px; + } +} +@media (min-width: 992px) { + .container.main-container .main-content .h-sidebar.sidebar-fixed { + width: 744px; + } + .container.main-container .sidebar + .main-content .h-sidebar.sidebar-fixed { + width: 554px; + } + .container.main-container .sidebar.menu-min + .main-content .h-sidebar.sidebar-fixed { + width: 701px; + } +} +@media (min-width: 992px) { + .container.main-container .sidebar.compact + .main-content .h-sidebar.sidebar-fixed { + width: 859px; + } +} +@media (min-width: 992px) { + .container.main-container .main-content .h-sidebar.sidebar-fixed { + width: 964px; + } + .container.main-container .sidebar + .main-content .h-sidebar.sidebar-fixed { + width: 774px; + } + .container.main-container .sidebar.menu-min + .main-content .h-sidebar.sidebar-fixed { + width: 921px; + } +} +@media (min-width: 1200px) { + .container.main-container .sidebar.compact + .main-content .h-sidebar.sidebar-fixed { + width: 1059px; + } +} +@media (min-width: 1200px) { + .container.main-container .main-content .h-sidebar.sidebar-fixed { + width: 1164px; + } + .container.main-container .sidebar + .main-content .h-sidebar.sidebar-fixed { + width: 974px; + } + .container.main-container .sidebar.menu-min + .main-content .h-sidebar.sidebar-fixed { + width: 1121px; + } +} +@media only screen and (max-width: 991px) { + .main-container .main-content .sidebar.sidebar-fixed { + z-index: 1026; + } + .navbar-fixed-top + .main-container .main-content .sidebar { + position: fixed; + z-index: 1026; + } +} +.sidebar-scroll .sidebar-shortcuts { + min-height: 41px; + border-bottom: 1px solid; +} +.sidebar-scroll .sidebar-toggle { + border-top: 1px solid; +} +.sidebar-scroll .nav-list > li:first-child { + border-top-width: 0; +} +.sidebar-scroll .nav-list > li:last-child { + border-bottom-width: 0; +} +.sidebar-scroll .nav-wrap .sidebar-shortcuts { + min-height: 40px; + border-bottom-width: 0; +} +.sidebar-scroll .nav-wrap .sidebar-shortcuts + .nav-list > li:first-child, +.sidebar-scroll .nav-wrap .sidebar-shortcuts + .nav-wrap-up .nav-list > li:first-child { + border-top-width: 1px; +} +.sidebar-scroll .nav-wrap-t .sidebar-toggle { + border-top-width: 0; +} +.sidebar-scroll .nav-wrap-t .nav-list > li:last-child { + border-bottom-width: 1px; +} +.sidebar .nav-wrap + .ace-scroll { + position: absolute; + right: 0; + top: 0; + z-index: 1; +} +.sidebar .nav-wrap + .scrollout { + right: -8px; +} +.sidebar .submenu.sub-scroll { + overflow-y: scroll; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; +} +.ace-scroll { + overflow: hidden; +} +.scroll-content { + position: static; + overflow: hidden; +} +.scroll-disabled.ace-scroll, +.scroll-disabled.ace-scroll .scroll-content { + overflow: visible; +} +.scroll-track { + position: absolute; + top: auto; + bottom: auto; + right: 0; + height: auto; + background-color: #E7E7E7; + z-index: 99; + width: 0; + opacity: 0; +} +.scroll-bar { + position: absolute; + top: 0; + left: 0; + width: inherit; + background-color: #ACE; + background: #bbd4e5; +} +.scroll-track.scroll-hz { + top: auto; + left: auto; + right: auto; + bottom: 0; + height: 8px; + width: auto; +} +.scroll-hz .scroll-bar { + height: inherit; + width: auto; +} +.scroll-track.scroll-active { + -webkit-transition: width 0.25s ease 0.75s, opacity 0.25s ease 0.75s; + -o-transition: width 0.25s ease 0.75s, opacity 0.25s ease 0.75s; + transition: width 0.25s ease 0.75s, opacity 0.25s ease 0.75s; +} +.ace-scroll:hover .scroll-active, +.scroll-active.scroll-track:hover, +.scroll-active.scroll-track.scroll-hover, +.scroll-active.scroll-track.active, +.scroll-active.scroll-track:active { + width: 8px; + opacity: 1; + -webkit-transition-duration: 0.15s; + transition-duration: 0.15s; + -webkit-transition-delay: 0s; + transition-delay: 0s; +} +.scroll-track.active > .scroll-bar { + transition-property: none !important; + transition-duration: 0s !important; +} +.scroll-track.scroll-margin { + margin-left: -1px; +} +.scroll-track.scroll-left { + right: auto; + left: 0; +} +.scroll-track.scroll-left.scroll-margin { + margin-left: 1px; +} +.scroll-track.scroll-top { + bottom: auto; + top: 0; +} +.scroll-track.scroll-top.scroll-margin { + top: 1px; +} +.scroll-dark .scroll-bar { + background-color: transparent; + background-color: rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40000000', endColorstr='#40000000',GradientType=0 ); +} +.scroll-track.scroll-dark { + background-color: transparent; + background-color: rgba(0, 0, 0, 0.15); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#26000000', endColorstr='#26000000',GradientType=0 ); +} +.scroll-light .scroll-bar { + background-color: transparent; + background-color: rgba(0, 0, 0, 0.14); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#24000000', endColorstr='#24000000',GradientType=0 ); +} +.scroll-track.scroll-light { + background-color: transparent; + background-color: rgba(0, 0, 0, 0.07); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#12000000', endColorstr='#12000000',GradientType=0 ); +} +.scroll-white .scroll-bar { + background-color: transparent; + background-color: rgba(255, 255, 255, 0.33); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#55FFFFFF', endColorstr='#55FFFFFF',GradientType=0 ); +} +.scroll-track.scroll-white { + background-color: transparent; + background-color: rgba(255, 255, 255, 0.2); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33FFFFFF', endColorstr='#33FFFFFF',GradientType=0 ); +} +.no-track.scroll-track { + background-color: transparent; + filter: progid:DXImageTransform.Microsoft.gradient( enabled=false ); +} +.scroll-track.scroll-visible { + opacity: 1; + width: 8px; +} +.scroll-hz.scroll-visible { + height: 8px; + width: auto; +} +.scroll-thin.scroll-track:hover, +.scroll-thin.scroll-track.scroll-hover, +.scroll-thin.scroll-track:active, +.scroll-thin.scroll-track.active, +.scroll-thin.scroll-track.scroll-visible { + width: 6px; +} +.ace-scroll:hover .scroll-thin.scroll-track { + width: 6px; +} +.scroll-thin.scroll-hz:hover, +.scroll-thin.scroll-hz.scroll-hover, +.scroll-thin.scroll-hz:active, +.scroll-thin.scroll-hz.active, +.scroll-thin.scroll-hz.scroll-visible { + width: auto; + height: 6px; +} +.ace-scroll:hover .scroll-thin.scroll-hz { + width: auto; + height: 6px; +} +.scroll-chrome.scroll-active .scroll-bar { + background-color: transparent; + width: 11px; +} +.scroll-chrome.scroll-active .scroll-bar:before { + display: block; + content: ""; + position: absolute; + top: 1px; + bottom: 3px; + left: 1px; + right: 1px; + background-color: #D9D9D9; + border: 1px solid #BBB; + border-radius: 1px; +} +.scroll-chrome.scroll-active .scroll-track { + width: 12px; + background-color: #F2F2F2; + border: 1px solid; + border-width: 1px 0 1px 1px; + border-color: #E6E6E6 transparent #E6E6E6 #DBDBDB; +} +.scroll-chrome.scroll-active .scroll-track:hover .scroll-bar:before { + background-color: #C0C0C0; + border-color: #A6A6A6; +} +.scroll-chrome.scroll-active .scroll-track.active .scroll-bar:before { + background-color: #A9A9A9; + border-color: #8B8B8B; +} +.scroll-active.scroll-track.idle-hide { + opacity: 0; + filter: alpha(opacity=0); + width: 8px; +} +.scroll-active.scroll-track.idle-hide.not-idle { + width: 8px; + opacity: 1; + filter: alpha(opacity=100); +} +.scroll-active.scroll-thin.scroll-track.idle-hide { + width: 6px; +} +.scroll-active.scroll-chrome .scroll-track.idle-hide { + width: 12px; +} +.nav-wrap + .scroll-active .scroll-track { + width: 8px; +} +.nav-scroll.scroll-active .scroll-track { + width: 8px; + right: 0; +} +.nav-wrap:hover + .scroll-active .scroll-track, +.nav-scroll.scroll-active:hover .scroll-track { + width: 8px; + opacity: 1; + -webkit-transition-duration: 0.15s; + transition-duration: 0.15s; + -webkit-transition-delay: 0s; + transition-delay: 0s; +} +.nav-scroll.scroll-active:hover .scroll-track { + width: 8px; +} +.nav-scroll.ace-scroll, +.nav-scroll.ace-scroll .scroll-content { + overflow: hidden; +} +.nav-scroll.ace-scroll.scroll-disabled, +.nav-scroll.ace-scroll.scroll-disabled .scroll-content { + overflow: visible; +} +.scroll-track.scroll-detached { + position: absolute; + z-index: 1029; + bottom: auto; + right: auto; +} +.modal-content { + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; +} +.modal-footer { + padding-top: 12px; + padding-bottom: 14px; + border-top-color: #e4e9ee; + -webkit-box-shadow: none; + box-shadow: none; + background-color: #eff3f8; +} +.modal-header .close { + font-size: 32px; +} +.modal.aside-dark .modal-content { + background-color: rgba(0, 0, 0, 0.85); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#D8000000', endColorstr='#D8000000',GradientType=0 ); +} +.modal.aside { + z-index: 999; + position: absolute; +} +.navbar-fixed-top ~ .modal.aside-vc { + z-index: 1025; +} +.modal.aside-fixed.aside-hz, +.navbar-fixed-top ~ .modal.aside-hz, +.navbar-fixed-bottom ~ .modal.aside-hz { + position: fixed; + z-index: 1039; +} +.modal.aside-fixed.aside-vc { + position: fixed; +} +.modal.aside.in { + z-index: 1040; + position: fixed; +} +.aside.aside-contained { + position: fixed; +} +.modal.aside-vc { + margin: auto; + width: 0; + left: auto; + right: auto; + top: 0; + bottom: 0; + display: block !important; + overflow: visible; +} +.modal.in.aside-vc { + width: 100%; +} +.modal.aside-vc .modal-dialog { + margin: inherit; + overflow: inherit; + width: 250px; + max-width: 66%; + height: inherit; + position: inherit; + right: inherit; + top: inherit; + bottom: inherit; + left: inherit; + opacity: 1; + transition: transform 0.3s ease-out 0s; + -webkit-transition: -webkit-transform 0.3s ease-out 0s; +} +@media only screen and (max-width: 319px) { + .modal.aside-vc .modal-dialog { + max-width: none; + width: 200px; + } + .aside-contained.aside-vc .modal-dialog { + width: 180px; + } +} +@media only screen and (max-width: 240px) { + .modal.aside-vc .modal-dialog { + max-width: none; + width: 160px; + } + .aside-contained.aside-vc .modal-dialog { + width: 140px; + } +} +.modal.aside-vc .modal-content { + height: 100%; + overflow: hidden; +} +.modal.in.aside-vc .modal-dialog { + transform: none; + -webkit-transform: none; + height: auto; +} +.modal.aside-vc .aside-trigger { + position: absolute; + top: 155px; + right: auto; + left: auto; + bottom: auto; + margin-top: -1px; + width: 37px; + outline: none; +} +.modal.aside-vc .aside-trigger.ace-settings-btn { + width: 42px; +} +.modal.in.aside-vc .aside-trigger { + z-index: -1; +} +.aside.modal.in .modal-backdrop.in + .modal-dialog .aside-trigger { + z-index: auto; +} +@media only screen and (max-height: 240px) { + .modal.aside-vc .aside-trigger { + top: 130px; + } +} +.modal.aside-vc.navbar-offset .modal-dialog { + top: 45px; +} +.modal.aside-vc.navbar-offset .modal-dialog .aside-trigger { + top: 110px; +} +@media (max-width: 479px) { + .navbar:not(.navbar-collapse) ~ .modal.aside-vc.navbar-offset .modal-dialog { + top: 90px; + } +} +.modal.aside-right { + right: 0; +} +.modal.aside-right .modal-content { + border-width: 0 0 0 1px; + box-shadow: -2px 1px 2px 0 rgba(0, 0, 0, 0.15); +} +.modal.aside-right .aside-trigger { + right: 100%; +} +.modal.aside-right .modal-dialog { + transform: translateX(100%); + -webkit-transform: translateX(100%); +} +.modal.aside-left { + left: 0; +} +.modal.aside-left .modal-content { + border-width: 0 1px 0 0; + box-shadow: 2px -1px 2px 0 rgba(0, 0, 0, 0.15); +} +.modal.aside-left .aside-trigger { + left: 100%; +} +.modal.aside-right .aside-trigger.btn.ace-settings-btn { + border-radius: 6px 0 0 6px; +} +.modal.aside-left .aside-trigger.btn.ace-settings-btn { + border-radius: 0 6px 6px 0; +} +.modal.aside-left .modal-dialog { + transform: translateX(-100%); + -webkit-transform: translateX(-100%); +} +.modal.aside-hz { + margin: auto; + height: 0; + left: 0; + right: 0; + top: auto; + bottom: auto; + display: block !important; + overflow: visible; +} +.modal.in.aside-hz { + height: 100%; +} +.modal.aside-hz .modal-dialog { + margin: inherit; + height: auto; + overflow: inherit; + max-height: 50%; + width: inherit; + position: inherit; + right: inherit; + top: inherit; + bottom: inherit; + left: inherit; + opacity: 1; + transition: transform 0.3s ease-out 0s; + -webkit-transition: -webkit-transform 0.3s ease-out 0s; +} +@media only screen and (max-height: 320px) { + .modal.aside-hz .modal-dialog { + max-height: 66%; + } +} +.modal.aside-hz .modal-content { + width: 100%; + overflow: hidden; +} +.modal.in.aside-hz .modal-dialog { + transform: none; + -webkit-transform: none; + height: auto; +} +.modal.aside-hz .aside-trigger { + position: absolute; + top: auto; + right: auto; + bottom: auto; + margin-top: -1px; + z-index: auto; + outline: none; + margin-left: -15px; + left: 50%; +} +.modal.aside-hz .aside-trigger.ace-settings-btn { + margin-left: -20px; +} +.modal.in.aside-hz .aside-trigger { + z-index: -1; +} +.modal.aside-top { + top: 0; +} +.modal.aside-top .modal-dialog { + transform: translateY(-100%); + -webkit-transform: translateY(-100%); +} +.modal.aside-top .modal-content { + border-width: 0; + box-shadow: 1px 2px 2px 0 rgba(0, 0, 0, 0.15); +} +.modal.aside-bottom { + bottom: 0; +} +.modal.aside-bottom .modal-dialog { + transform: translateY(100%); + -webkit-transform: translateY(100%); +} +.modal.aside-bottom .modal-content { + border-width: 0; + box-shadow: -1px 2px 2px 0 rgba(0, 0, 0, 0.15); +} +.modal.aside-bottom .aside-trigger { + bottom: 100%; + margin-top: auto; + margin-bottom: -1px; +} +.modal.aside-top .aside-trigger.ace-settings-btn { + border-radius: 0 0 6px 6px !important; +} +.modal.aside-bottom .aside-trigger.ace-settings-btn { + border-radius: 6px 6px 0 0 !important; +} +.aside.aside-hidden .modal-content { + display: none; +} +@media only screen and (min-width: 768px) { + .container.main-container ~ .modal.aside-vc .modal-dialog { + transition: none; + -webkit-transition: none; + } + .container.main-container ~ .modal.aside-vc:not(.in) .modal-content { + display: none; + } +} +.aside-vc.in.no-backdrop { + width: auto; +} +.aside-hz.in.no-backdrop { + height: auto; +} +.modal.aside .modal-backdrop { + position: fixed; + bottom: 0; + height: auto !important; +} +.modal.aside-hz .aside-trigger.align-left { + left: 15px; + margin-left: auto; + text-align: center; +} +.modal.aside-hz .aside-trigger.align-right { + text-align: center; + left: auto; + margin-left: auto; + right: 15px; +} +.modal.transition-off .modal-dialog { + transition: none; + -webkit-transition: none; +} +.breadcrumbs { + position: relative; + z-index: auto; + border-bottom: 1px solid #e5e5e5; + background-color: #f5f5f5; + min-height: 41px; + line-height: 40px; + padding: 0 12px 0 0; +} +.breadcrumb { + background-color: transparent; + display: inline-block; + line-height: 20px; + margin: 6px 22px 0 12px; + padding: 0; + font-size: 13px; + color: #333; + border-radius: 0; +} +.breadcrumb > li, +.breadcrumb > li.active { + color: #555555; + padding: 0 3px 0 3px; +} +.breadcrumb > li > a { + display: inline-block; + color: #4c8fbd; +} +.breadcrumb > li + li:before { + font-family: FontAwesome; + font-size: 14px; + content: "\f105"; + color: #b2b6bf; + padding: 0; + margin: 0 8px 0 0; + position: relative; + top: 1px; +} +.breadcrumb .home-icon { + font-size: 20px; + margin-left: 2px; + margin-right: 2px; + vertical-align: top; +} +@media only screen and (max-width: 480px) { + .breadcrumb > li > a { + padding: 0 1px; + } +} +@media only screen and (max-width: 991px) { + .menu-toggler + .sidebar.responsive + .main-content .breadcrumb { + margin-left: 90px; + } +} +@media only screen and (max-width: 320px) { + .breadcrumb { + margin-left: 8px; + } + .menu-toggler + .sidebar.responsive + .main-content .breadcrumb { + margin-left: 36px; + } +} +@media (min-width: 992px) { + .breadcrumbs-fixed { + position: fixed; + right: 0; + left: 0; + top: auto; + z-index: 1024; + } + .breadcrumbs-fixed + .page-content { + padding-top: 49px; + } + .sidebar + .main-content .breadcrumbs-fixed { + left: 190px; + } + body.mob-safari { + /** + //not needed because breadcrumbs is not fixed at this point + media (max-width: @screen-topbar-down) { + .navbar-fixed-top:not(.navbar-collapse) + .main-container .breadcrumbs-fixed { + top: (@navbar-min-height * 2); + } + }*/ + } + body.mob-safari .breadcrumbs-fixed { + top: 45px; + } +} +@media (min-width: 992px) { + .sidebar.compact + .main-content .breadcrumbs-fixed { + left: 105px; + } +} +@media (min-width: 992px) { + .sidebar.menu-min + .main-content .breadcrumbs-fixed { + left: 43px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .breadcrumbs-fixed, + .sidebar.menu-min + .main-content .breadcrumbs-fixed { + left: 0; + } + .sidebar.responsive-min + .main-content .breadcrumbs-fixed, + .sidebar.responsive-max + .main-content .breadcrumbs-fixed { + left: 43px; + } +} +@media (min-width: 992px) { + .container.main-container .breadcrumbs-fixed { + left: auto; + right: auto; + width: 744px; + } + .container.main-container .sidebar + .main-content .breadcrumbs-fixed { + left: auto; + right: auto; + width: 554px; + } + .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 639px; + } + .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + left: auto; + right: auto; + width: 701px; + } +} +@media (min-width: 992px) { + .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 859px; + } +} +@media (min-width: 992px) { + .container.main-container .breadcrumbs-fixed { + width: 964px; + } + .container.main-container .sidebar + .main-content .breadcrumbs-fixed { + width: 774px; + } + .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + width: 921px; + } +} +@media (min-width: 1200px) { + .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 1059px; + } +} +@media (min-width: 1200px) { + .container.main-container .breadcrumbs-fixed { + width: 1164px; + } + .container.main-container .sidebar + .main-content .breadcrumbs-fixed { + width: 974px; + } + .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + width: 1121px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .container.main-container .sidebar.compact + .main-content .breadcrumbs-fixed { + width: 744px; + } +} +@media (min-width: 992px) and (max-width: 991px) { + .container.main-container .breadcrumbs-fixed, + .container.main-container .sidebar.menu-min + .main-content .breadcrumbs-fixed { + width: 744px; + } + .container.main-container .sidebar.responsive-min + .main-content .breadcrumbs-fixed, + .container.main-container .sidebar.responsive-max + .main-content .breadcrumbs-fixed { + left: auto; + right: auto; + width: 701px; + } +} +/** +@media (max-width: @grid-float-breakpoint-max) { + .breadcrumbs-fixed { + position: relative; + left: auto !important; + right: auto !important; + top: auto !important; + width: auto !important; + + + .page-content { + padding-top: @page-content-padding-top; + } + } +} +*/ +@media (min-width: 992px) { + .h-sidebar + .main-content .breadcrumbs.breadcrumbs-fixed { + position: relative; + top: auto; + left: auto; + z-index: auto; + width: auto; + } + .h-sidebar + .main-content .page-content { + padding-top: 12px; + } +} +.nav-search { + position: absolute; + right: 22px; + line-height: 24px; +} +.breadcrumbs .nav-search { + top: 6px; +} +.nav-search .form-search { + margin-bottom: 0; +} +.nav-search .nav-search-input { + border: 1px solid #6fb3e0; + width: 152px; + height: 28px !important; + padding-top: 2px; + padding-bottom: 2px; + border-radius: 4px !important; + font-size: 13px; + line-height: 1.3; + color: #666666 !important; + z-index: 11; + -webkit-transition: width ease .15s; + -o-transition: width ease .15s; + transition: width ease .15s; +} +.nav-search .nav-search-input + .dropdown-menu { + min-width: 0; + left: 0; + right: 0; +} +.nav-search .nav-search-input:focus, +.nav-search .nav-search-input:hover { + border-color: #6fb3e0; +} +.nav-search .nav-search-icon { + color: #6fb3e0 !important; + font-size: 14px !important; + line-height: 24px !important; + background-color: transparent; +} +.nav-search.minimized .nav-search-input { + width: 0; + opacity: 0; + filter: alpha(opacity=0); + max-width: 0; +} +.nav-search.minimized:hover .nav-search-input, +.nav-search.minimized .nav-search-btn:active + .nav-search-input, +.nav-search.minimized .nav-search-input:focus, +.nav-search.minimized .nav-search-input:hover, +.nav-search.minimized .nav-search-input:active { + opacity: 1; + filter: alpha(opacity=100); + width: 152px; + max-width: 152px; +} +.nav-search.minimized .nav-search-icon { + border: 1px solid; + border-radius: 100%; + background-color: #FFF; + padding: 0 5px !important; +} +.nav-search.minimized:hover .nav-search-icon, +.nav-search.minimized .nav-search-input:focus ~ .nav-search-icon, +.nav-search.minimized .nav-search-input:hover ~ .nav-search-icon, +.nav-search.minimized .nav-search-input:active ~ .nav-search-icon { + border: none; + border-radius: 0; + padding: 0 3px !important; +} +.nav-search-icon { + border: none; + border-radius: 0; + padding: 0 3px !important; +} +.sidebar > .nav-search { + position: static; + background-color: #FAFAFA; + border-bottom: 1px solid #DDD; + text-align: center; + height: 35px; + padding-top: 6px; +} +.sidebar > .nav-search .nav-search-input { + width: 162px !important; + border-radius: 0 !important; + max-width: 162px !important; + opacity: 1 !important; + filter: alpha(opacity=100) !important; +} +.sidebar > .nav-search .nav-search-input + .dropdown-menu { + text-align: left; +} +.sidebar.menu-min .nav-search .form-search { + position: absolute; + left: 5px; + z-index: 14; +} +.sidebar.menu-min .nav-search .nav-search-input { + width: 0 !important; + max-width: 0 !important; + opacity: 0 !important; + filter: alpha(opacity=0) !important; +} +.sidebar.menu-min .nav-search .nav-search-input:hover, +.sidebar.menu-min .nav-search .nav-search-input:focus, +.sidebar.menu-min .nav-search .nav-search-input:active { + width: 162px !important; + max-width: 162px !important; + opacity: 1 !important; + filter: alpha(opacity=100) !important; +} +.sidebar.menu-min .nav-search .nav-search-input:hover ~ #nav-search-icon, +.sidebar.menu-min .nav-search .nav-search-input:focus ~ #nav-search-icon, +.sidebar.menu-min .nav-search .nav-search-input:active ~ #nav-search-icon { + border: none; + border-radius: 0; + padding: 0 3px !important; +} +.sidebar.menu-min .nav-search:hover .nav-search-input { + width: 162px !important; + max-width: 162px !important; + opacity: 1 !important; + filter: alpha(opacity=100) !important; +} +.sidebar.menu-min .nav-search:hover .nav-search-input ~ .nav-search-icon { + border: none; + border-radius: 0; + padding: 0 3px !important; +} +.sidebar.menu-min .nav-search .nav-search-icon { + /* inside minimized sidebar */ + border: 1px solid; + border-radius: 32px; + background-color: #FFF; + padding: 0 5px !important; +} +@media (max-width: 991px) { + .sidebar.responsive-min .nav-search .form-search { + position: absolute; + left: 5px; + z-index: 14; + } + .sidebar.responsive-min .nav-search .nav-search-input { + width: 0 !important; + max-width: 0 !important; + opacity: 0 !important; + filter: alpha(opacity=0) !important; + } + .sidebar.responsive-min .nav-search .nav-search-input:hover, + .sidebar.responsive-min .nav-search .nav-search-input:focus, + .sidebar.responsive-min .nav-search .nav-search-input:active { + width: 162px !important; + max-width: 162px !important; + opacity: 1 !important; + filter: alpha(opacity=100) !important; + } + .sidebar.responsive-min .nav-search .nav-search-input:hover ~ #nav-search-icon, + .sidebar.responsive-min .nav-search .nav-search-input:focus ~ #nav-search-icon, + .sidebar.responsive-min .nav-search .nav-search-input:active ~ #nav-search-icon { + border: none; + border-radius: 0; + padding: 0 3px !important; + } + .sidebar.responsive-min .nav-search:hover .nav-search-input { + width: 162px !important; + max-width: 162px !important; + opacity: 1 !important; + filter: alpha(opacity=100) !important; + } + .sidebar.responsive-min .nav-search:hover .nav-search-input ~ .nav-search-icon { + border: none; + border-radius: 0; + padding: 0 3px !important; + } + .sidebar.responsive-min .nav-search .nav-search-icon { + /* inside minimized sidebar */ + border: 1px solid; + border-radius: 32px; + background-color: #FFF; + padding: 0 5px !important; + } +} +@media only screen and (max-width: 991px) { + .nav-search { + right: 10px; + } + .nav-search .nav-search-input { + width: 105px; + } + .nav-search:hover .nav-search-input, + .nav-search .nav-search-btn:active + .nav-search-input, + .nav-search .nav-search-input:focus, + .nav-search .nav-search-input:hover, + .nav-search .nav-search-input:active { + width: 145px; + } +} +@media only screen and (max-width: 767px) { + .nav-search .nav-search-input { + width: 0; + opacity: 0; + filter: alpha(opacity=0); + max-width: 0; + } + .nav-search:hover .nav-search-input, + .nav-search .nav-search-btn:active + .nav-search-input, + .nav-search .nav-search-input:focus, + .nav-search .nav-search-input:hover, + .nav-search .nav-search-input:active { + opacity: 1; + filter: alpha(opacity=100); + width: 152px; + max-width: 152px; + } + .nav-search .nav-search-icon { + border: 1px solid; + border-radius: 100%; + background-color: #FFF; + padding: 0 5px !important; + } + .nav-search:hover .nav-search-icon, + .nav-search .nav-search-input:focus ~ .nav-search-icon, + .nav-search .nav-search-input:hover ~ .nav-search-icon, + .nav-search .nav-search-input:active ~ .nav-search-icon { + border: none; + border-radius: 0; + padding: 0 3px !important; + } +} +.footer { + padding-top: 75px; + height: 0; + width: 0; +} +.footer .footer-inner { + text-align: center; + position: absolute; + z-index: auto; + left: 0; + right: 0; + bottom: 0; +} +.sidebar ~ .footer .footer-inner { + left: 190px; +} +@media (min-width: 992px) { + .sidebar.compact ~ .footer .footer-inner { + left: 105px; + } +} +.sidebar.menu-min ~ .footer .footer-inner { + left: 43px; +} +@media (min-width: 992px) { + .sidebar.h-sidebar ~ .footer .footer-inner { + left: 0; + } +} +@media (max-width: 991px) { + .footer .footer-inner, + .sidebar ~ .footer .footer-inner, + .sidebar.compact ~ .footer .footer-inner, + .sidebar.menu-min ~ .footer .footer-inner { + left: 0; + } + .sidebar.responsive-min ~ .footer .footer-inner { + left: 43px; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .container.main-container .footer .footer-inner { + left: auto !important; + right: auto !important; + margin-left: auto; + width: 744px; + } +} +@media (min-width: 992px) { + .container.main-container .footer .footer-inner { + left: auto !important; + right: auto !important; + width: 964px; + } +} +@media (min-width: 1200px) { + .container.main-container .footer .footer-inner { + width: 1164px; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .container.main-container .sidebar ~ .footer .footer-inner { + left: auto !important; + right: auto !important; + margin-left: auto; + width: 744px; + } +} +@media (min-width: 992px) { + .container.main-container .sidebar ~ .footer .footer-inner { + left: auto !important; + right: auto !important; + margin-left: 190px; + width: 774px; + } +} +@media (min-width: 1200px) { + .container.main-container .sidebar ~ .footer .footer-inner { + margin-left: 190px; + width: 974px; + } +} +@media (min-width: 992px) { + .container.main-container .sidebar.compact ~ .footer .footer-inner { + margin-left: 105px; + width: 859px; + } +} +@media (min-width: 1200px) { + .container.main-container .sidebar.compact ~ .footer .footer-inner { + margin-left: 105px; + width: 1059px; + } +} +@media (min-width: 992px) { + .container.main-container .sidebar.menu-min ~ .footer .footer-inner { + margin-left: 43px; + width: 921px; + } +} +@media (min-width: 1200px) { + .container.main-container .sidebar.menu-min ~ .footer .footer-inner { + margin-left: 43px; + width: 1121px; + } +} +@media (min-width: 992px) { + .container.main-container .sidebar.h-sidebar ~ .footer .footer-inner { + margin-left: 0; + width: 964px; + } +} +@media (min-width: 992px) { + .container.main-container .sidebar.h-sidebar ~ .footer .footer-inner { + margin-left: 0; + width: 964px; + } +} +@media (min-width: 1200px) { + .container.main-container .sidebar.h-sidebar ~ .footer .footer-inner { + margin-left: 0; + width: 1164px; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .container.main-container .sidebar.responsive-min ~ .footer .footer-inner { + margin-left: 43px; + width: 701px; + } +} +.footer .footer-inner .footer-content { + position: absolute; + left: 12px; + right: 12px; + bottom: 4px; + padding: 8px; + line-height: 36px; + border-top: 3px double #E5E5E5; +} +.footer.footer-fixed .footer-inner { + position: fixed; + z-index: 999; + bottom: 0; +} +.footer.footer-fixed .footer-inner .footer-content { + left: 2px; + right: 2px; + bottom: 2px; + border: 1px solid #DDD; + background-color: #F2F2F2; +} +.footer.footer-fixed + .btn-scroll-up { + z-index: 999; +} +.btn { + display: inline-block; + color: #FFF !important; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-image: none !important; + border: 5px solid #FFF; + border-radius: 0; + box-shadow: none !important; + -webkit-transition: background-color 0.15s, border-color 0.15s, opacity 0.15s; + -o-transition: background-color 0.15s, border-color 0.15s, opacity 0.15s; + transition: background-color 0.15s, border-color 0.15s, opacity 0.15s; + cursor: pointer; + vertical-align: middle; + margin: 0; + position: relative; + /** + &:hover, &:focus, &.focus, .open > &.dropdown-toggle { + color: #FFF; + box-shadow: none; + } + */ +} +.btn.active, +.open > .btn.active.dropdown-toggle { + box-shadow: none; +} +.btn-lg, +.btn-group-lg > .btn { + border-width: 5px; + line-height: 1.4; + padding: 5px 16px 6px; +} +.btn-xlg, +.btn-group-xlg > .btn { + border-width: 5px; + line-height: 1.35; + padding: 7px 16px; + font-size: 18px; +} +.btn-sm, +.btn-group-sm > .btn { + border-width: 4px; + font-size: 13px; + padding: 4px 9px; + line-height: 1.38; +} +.btn-xs, +.btn-group-xs > .btn { + padding-top: 3px; + padding-bottom: 3px; + border-width: 3px; +} +.btn-mini, +.btn-group-mini > .btn { + padding: 1px 5px; + border-width: 3px; + font-size: 12px; + line-height: 1.5; +} +.btn-minier, +.btn-group-minier > .btn { + padding: 0 4px; + line-height: 18px; + border-width: 2px; + font-size: 12px; +} +button.btn:active { + top: 1px; +} +.btn, +.btn-default, +.btn:focus, +.btn-default:focus { + background-color: #abbac3 !important; + border-color: #abbac3; +} +.btn:hover, +.btn-default:hover, +.btn:active, +.btn-default:active, +.open > .btn.dropdown-toggle, +.open > .btn-default.dropdown-toggle { + background-color: #8b9aa3 !important; + border-color: #abbac3; +} +.btn.no-border:hover, +.btn-default.no-border:hover, +.btn.no-border:active, +.btn-default.no-border:active { + border-color: #8b9aa3; +} +.btn.no-hover:hover, +.btn-default.no-hover:hover, +.btn.no-hover:active, +.btn-default.no-hover:active { + background-color: #abbac3 !important; +} +.btn.active, +.btn-default.active { + background-color: #9baab3 !important; + border-color: #8799a4; +} +.btn.no-border.active, +.btn-default.no-border.active { + background-color: #92a3ac !important; + border-color: #92a3ac; +} +.btn.disabled, +.btn-default.disabled, +.btn[disabled], +.btn-default[disabled], +fieldset[disabled] .btn, +fieldset[disabled] .btn-default, +.btn.disabled:hover, +.btn-default.disabled:hover, +.btn[disabled]:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn:hover, +fieldset[disabled] .btn-default:hover, +.btn.disabled:focus, +.btn-default.disabled:focus, +.btn[disabled]:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn:focus, +fieldset[disabled] .btn-default:focus, +.btn.disabled:active, +.btn-default.disabled:active, +.btn[disabled]:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn:active, +fieldset[disabled] .btn-default:active, +.btn.disabled.active, +.btn-default.disabled.active, +.btn[disabled].active, +.btn-default[disabled].active, +fieldset[disabled] .btn.active, +fieldset[disabled] .btn-default.active { + background-color: #abbac3 !important; + border-color: #abbac3; +} +.btn-primary, +.btn-primary:focus { + background-color: #428bca !important; + border-color: #428bca; +} +.btn-primary:hover, +.btn-primary:active, +.open > .btn-primary.dropdown-toggle { + background-color: #1b6aaa !important; + border-color: #428bca; +} +.btn-primary.no-border:hover, +.btn-primary.no-border:active { + border-color: #1b6aaa; +} +.btn-primary.no-hover:hover, +.btn-primary.no-hover:active { + background-color: #428bca !important; +} +.btn-primary.active { + background-color: #2f7bba !important; + border-color: #27689d; +} +.btn-primary.no-border.active { + background-color: #2b72ae !important; + border-color: #2b72ae; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca !important; + border-color: #428bca; +} +.btn-info, +.btn-info:focus { + background-color: #6fb3e0 !important; + border-color: #6fb3e0; +} +.btn-info:hover, +.btn-info:active, +.open > .btn-info.dropdown-toggle { + background-color: #4f99c6 !important; + border-color: #6fb3e0; +} +.btn-info.no-border:hover, +.btn-info.no-border:active { + border-color: #4f99c6; +} +.btn-info.no-hover:hover, +.btn-info.no-hover:active { + background-color: #6fb3e0 !important; +} +.btn-info.active { + background-color: #5fa6d3 !important; + border-color: #4396cb; +} +.btn-info.no-border.active { + background-color: #539fd0 !important; + border-color: #539fd0; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #6fb3e0 !important; + border-color: #6fb3e0; +} +.btn-info2, +.btn-info2:focus { + background-color: #95c6e5 !important; + border-color: #95c6e5; +} +.btn-info2:hover, +.btn-info2:active, +.open > .btn-info2.dropdown-toggle { + background-color: #67a6ce !important; + border-color: #95c6e5; +} +.btn-info2.no-border:hover, +.btn-info2.no-border:active { + border-color: #67a6ce; +} +.btn-info2.no-hover:hover, +.btn-info2.no-hover:active { + background-color: #95c6e5 !important; +} +.btn-info2.active { + background-color: #7eb6da !important; + border-color: #62a6d1; +} +.btn-info2.no-border.active { + background-color: #72afd6 !important; + border-color: #72afd6; +} +.btn-info2.disabled, +.btn-info2[disabled], +fieldset[disabled] .btn-info2, +.btn-info2.disabled:hover, +.btn-info2[disabled]:hover, +fieldset[disabled] .btn-info2:hover, +.btn-info2.disabled:focus, +.btn-info2[disabled]:focus, +fieldset[disabled] .btn-info2:focus, +.btn-info2.disabled:active, +.btn-info2[disabled]:active, +fieldset[disabled] .btn-info2:active, +.btn-info2.disabled.active, +.btn-info2[disabled].active, +fieldset[disabled] .btn-info2.active { + background-color: #95c6e5 !important; + border-color: #95c6e5; +} +.btn-success, +.btn-success:focus { + background-color: #87b87f !important; + border-color: #87b87f; +} +.btn-success:hover, +.btn-success:active, +.open > .btn-success.dropdown-toggle { + background-color: #629b58 !important; + border-color: #87b87f; +} +.btn-success.no-border:hover, +.btn-success.no-border:active { + border-color: #629b58; +} +.btn-success.no-hover:hover, +.btn-success.no-hover:active { + background-color: #87b87f !important; +} +.btn-success.active { + background-color: #75aa6c !important; + border-color: #629959; +} +.btn-success.no-border.active { + background-color: #6ba462 !important; + border-color: #6ba462; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #87b87f !important; + border-color: #87b87f; +} +.btn-warning, +.btn-warning:focus { + background-color: #ffb752 !important; + border-color: #ffb752; +} +.btn-warning:hover, +.btn-warning:active, +.open > .btn-warning.dropdown-toggle { + background-color: #e59729 !important; + border-color: #ffb752; +} +.btn-warning.no-border:hover, +.btn-warning.no-border:active { + border-color: #e59729; +} +.btn-warning.no-hover:hover, +.btn-warning.no-hover:active { + background-color: #ffb752 !important; +} +.btn-warning.active { + background-color: #f2a73e !important; + border-color: #f0981c; +} +.btn-warning.no-border.active { + background-color: #f1a02f !important; + border-color: #f1a02f; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #ffb752 !important; + border-color: #ffb752; +} +.btn-danger, +.btn-danger:focus { + background-color: #d15b47 !important; + border-color: #d15b47; +} +.btn-danger:hover, +.btn-danger:active, +.open > .btn-danger.dropdown-toggle { + background-color: #b74635 !important; + border-color: #d15b47; +} +.btn-danger.no-border:hover, +.btn-danger.no-border:active { + border-color: #b74635; +} +.btn-danger.no-hover:hover, +.btn-danger.no-hover:active { + background-color: #d15b47 !important; +} +.btn-danger.active { + background-color: #c4513e !important; + border-color: #aa4434; +} +.btn-danger.no-border.active { + background-color: #ba4b39 !important; + border-color: #ba4b39; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d15b47 !important; + border-color: #d15b47; +} +.btn-inverse, +.btn-inverse:focus { + background-color: #555555 !important; + border-color: #555555; +} +.btn-inverse:hover, +.btn-inverse:active, +.open > .btn-inverse.dropdown-toggle { + background-color: #303030 !important; + border-color: #555555; +} +.btn-inverse.no-border:hover, +.btn-inverse.no-border:active { + border-color: #303030; +} +.btn-inverse.no-hover:hover, +.btn-inverse.no-hover:active { + background-color: #555555 !important; +} +.btn-inverse.active { + background-color: #434343 !important; + border-color: #313131; +} +.btn-inverse.no-border.active { + background-color: #3b3b3b !important; + border-color: #3b3b3b; +} +.btn-inverse.disabled, +.btn-inverse[disabled], +fieldset[disabled] .btn-inverse, +.btn-inverse.disabled:hover, +.btn-inverse[disabled]:hover, +fieldset[disabled] .btn-inverse:hover, +.btn-inverse.disabled:focus, +.btn-inverse[disabled]:focus, +fieldset[disabled] .btn-inverse:focus, +.btn-inverse.disabled:active, +.btn-inverse[disabled]:active, +fieldset[disabled] .btn-inverse:active, +.btn-inverse.disabled.active, +.btn-inverse[disabled].active, +fieldset[disabled] .btn-inverse.active { + background-color: #555555 !important; + border-color: #555555; +} +.btn-pink, +.btn-pink:focus { + background-color: #d6487e !important; + border-color: #d6487e; +} +.btn-pink:hover, +.btn-pink:active, +.open > .btn-pink.dropdown-toggle { + background-color: #b73766 !important; + border-color: #d6487e; +} +.btn-pink.no-border:hover, +.btn-pink.no-border:active { + border-color: #b73766; +} +.btn-pink.no-hover:hover, +.btn-pink.no-hover:active { + background-color: #d6487e !important; +} +.btn-pink.active { + background-color: #c74072 !important; + border-color: #af3462; +} +.btn-pink.no-border.active { + background-color: #be386a !important; + border-color: #be386a; +} +.btn-pink.disabled, +.btn-pink[disabled], +fieldset[disabled] .btn-pink, +.btn-pink.disabled:hover, +.btn-pink[disabled]:hover, +fieldset[disabled] .btn-pink:hover, +.btn-pink.disabled:focus, +.btn-pink[disabled]:focus, +fieldset[disabled] .btn-pink:focus, +.btn-pink.disabled:active, +.btn-pink[disabled]:active, +fieldset[disabled] .btn-pink:active, +.btn-pink.disabled.active, +.btn-pink[disabled].active, +fieldset[disabled] .btn-pink.active { + background-color: #d6487e !important; + border-color: #d6487e; +} +.btn-purple, +.btn-purple:focus { + background-color: #9585bf !important; + border-color: #9585bf; +} +.btn-purple:hover, +.btn-purple:active, +.open > .btn-purple.dropdown-toggle { + background-color: #7461aa !important; + border-color: #9585bf; +} +.btn-purple.no-border:hover, +.btn-purple.no-border:active { + border-color: #7461aa; +} +.btn-purple.no-hover:hover, +.btn-purple.no-hover:active { + background-color: #9585bf !important; +} +.btn-purple.active { + background-color: #8573b5 !important; + border-color: #705ca8; +} +.btn-purple.no-border.active { + background-color: #7c69af !important; + border-color: #7c69af; +} +.btn-purple.disabled, +.btn-purple[disabled], +fieldset[disabled] .btn-purple, +.btn-purple.disabled:hover, +.btn-purple[disabled]:hover, +fieldset[disabled] .btn-purple:hover, +.btn-purple.disabled:focus, +.btn-purple[disabled]:focus, +fieldset[disabled] .btn-purple:focus, +.btn-purple.disabled:active, +.btn-purple[disabled]:active, +fieldset[disabled] .btn-purple:active, +.btn-purple.disabled.active, +.btn-purple[disabled].active, +fieldset[disabled] .btn-purple.active { + background-color: #9585bf !important; + border-color: #9585bf; +} +.btn-grey, +.btn-grey:focus { + background-color: #a0a0a0 !important; + border-color: #a0a0a0; +} +.btn-grey:hover, +.btn-grey:active, +.open > .btn-grey.dropdown-toggle { + background-color: #888888 !important; + border-color: #a0a0a0; +} +.btn-grey.no-border:hover, +.btn-grey.no-border:active { + border-color: #888888; +} +.btn-grey.no-hover:hover, +.btn-grey.no-hover:active { + background-color: #a0a0a0 !important; +} +.btn-grey.active { + background-color: #949494 !important; + border-color: #828282; +} +.btn-grey.no-border.active { + background-color: #8c8c8c !important; + border-color: #8c8c8c; +} +.btn-grey.disabled, +.btn-grey[disabled], +fieldset[disabled] .btn-grey, +.btn-grey.disabled:hover, +.btn-grey[disabled]:hover, +fieldset[disabled] .btn-grey:hover, +.btn-grey.disabled:focus, +.btn-grey[disabled]:focus, +fieldset[disabled] .btn-grey:focus, +.btn-grey.disabled:active, +.btn-grey[disabled]:active, +fieldset[disabled] .btn-grey:active, +.btn-grey.disabled.active, +.btn-grey[disabled].active, +fieldset[disabled] .btn-grey.active { + background-color: #a0a0a0 !important; + border-color: #a0a0a0; +} +.btn-yellow { + color: #996633 !important; + text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.4) !important; +} +.btn-yellow, +.btn-yellow:focus { + background-color: #fee188 !important; + border-color: #fee188; +} +.btn-yellow:hover, +.btn-yellow:active, +.open > .btn-yellow.dropdown-toggle { + background-color: #f7d05b !important; + border-color: #fee188; +} +.btn-yellow.no-border:hover, +.btn-yellow.no-border:active { + border-color: #f7d05b; +} +.btn-yellow.no-hover:hover, +.btn-yellow.no-hover:active { + background-color: #fee188 !important; +} +.btn-yellow.active { + background-color: #fbd972 !important; + border-color: #f9cf4f; +} +.btn-yellow.no-border.active { + background-color: #fad463 !important; + border-color: #fad463; +} +.btn-yellow.disabled, +.btn-yellow[disabled], +fieldset[disabled] .btn-yellow, +.btn-yellow.disabled:hover, +.btn-yellow[disabled]:hover, +fieldset[disabled] .btn-yellow:hover, +.btn-yellow.disabled:focus, +.btn-yellow[disabled]:focus, +fieldset[disabled] .btn-yellow:focus, +.btn-yellow.disabled:active, +.btn-yellow[disabled]:active, +fieldset[disabled] .btn-yellow:active, +.btn-yellow.disabled.active, +.btn-yellow[disabled].active, +fieldset[disabled] .btn-yellow.active { + background-color: #fee188 !important; + border-color: #fee188; +} +.btn-yellow:hover, +.btn-yellow:focus, +.btn-yellow.focus, +.open > .btn-yellow.dropdown-toggle, +.btn-yellow.active, +.open > .btn-yellow.active.dropdown-toggle { + color: #996633; +} +.btn-light { + color: #888888 !important; + text-shadow: 0 -1px 0 rgba(250, 250, 250, 0.25) !important; +} +.btn-light, +.btn-light:focus { + background-color: #e7e7e7 !important; + border-color: #e7e7e7; +} +.btn-light:hover, +.btn-light:active, +.open > .btn-light.dropdown-toggle { + background-color: #d9d9d9 !important; + border-color: #e7e7e7; +} +.btn-light.no-border:hover, +.btn-light.no-border:active { + border-color: #d9d9d9; +} +.btn-light.no-hover:hover, +.btn-light.no-hover:active { + background-color: #e7e7e7 !important; +} +.btn-light.active { + background-color: #e0e0e0 !important; + border-color: #cecece; +} +.btn-light.no-border.active { + background-color: #d8d8d8 !important; + border-color: #d8d8d8; +} +.btn-light.disabled, +.btn-light[disabled], +fieldset[disabled] .btn-light, +.btn-light.disabled:hover, +.btn-light[disabled]:hover, +fieldset[disabled] .btn-light:hover, +.btn-light.disabled:focus, +.btn-light[disabled]:focus, +fieldset[disabled] .btn-light:focus, +.btn-light.disabled:active, +.btn-light[disabled]:active, +fieldset[disabled] .btn-light:active, +.btn-light.disabled.active, +.btn-light[disabled].active, +fieldset[disabled] .btn-light.active { + background-color: #e7e7e7 !important; + border-color: #e7e7e7; +} +.btn-light:hover, +.btn-light:focus, +.btn-light.focus, +.open > .btn-light.dropdown-toggle, +.btn-light.active, +.open > .btn-light.active.dropdown-toggle { + color: #888888; +} +.btn-light.btn-xs:after, +.btn-light.btn-mini:after { + left: -2px; + right: -2px; + top: -2px; + bottom: -2px; +} +.btn-light.btn-sm:after { + left: -4px; + right: -4px; + top: -4px; + bottom: -4px; +} +.btn-light .btn-lg:after { + left: -6px; + right: -6px; + top: -6px; + bottom: -6px; +} +.btn.btn-white { + text-shadow: none !important; + background-color: #FFF !important; +} +.btn.btn-white.no-hover:hover, +.btn.btn-white.no-hover:active { + background-color: #FFF !important; +} +.btn.btn-white:focus, +.btn.btn-white.active { + box-shadow: inset 1px 1px 2px 0 rgba(0, 0, 0, 0.1) !important; +} +.btn.btn-white:focus.btn-bold, +.btn.btn-white.active.btn-bold { + box-shadow: inset 1px 1px 3px 0 rgba(0, 0, 0, 0.15) !important; +} +.btn.btn-white.active:after { + display: none; +} +.btn.btn-white { + border-color: #cccccc; + color: #444444 !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn.btn-white:hover, +.btn.btn-white:focus, +.btn.btn-white.active, +.btn.btn-white:active, +.open > .btn.btn-white.dropdown-toggle, +.open > .btn.btn-white.active.dropdown-toggle { + background-color: #ebebeb !important; + border-color: #cccccc; + color: #3a3434 !important; +} +.btn.btn-white:hover.no-border, +.btn.btn-white:focus.no-border, +.btn.btn-white.active.no-border, +.btn.btn-white:active.no-border, +.open > .btn.btn-white.dropdown-toggle.no-border, +.open > .btn.btn-white.active.dropdown-toggle.no-border { + border-color: #cccccc; +} +.btn.btn-white.disabled, +.btn.btn-white[disabled], +fieldset[disabled] .btn.btn-white, +.btn.btn-white.disabled:hover, +.btn.btn-white[disabled]:hover, +fieldset[disabled] .btn.btn-white:hover, +.btn.btn-white.disabled:focus, +.btn.btn-white[disabled]:focus, +fieldset[disabled] .btn.btn-white:focus, +.btn.btn-white.disabled:active, +.btn.btn-white[disabled]:active, +fieldset[disabled] .btn.btn-white:active, +.btn.btn-white.disabled.active, +.btn.btn-white[disabled].active, +fieldset[disabled] .btn.btn-white.active { + border-color: #cccccc; +} +.btn-white.btn-default { + border-color: #abbac3; + color: #80909a !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-default:hover, +.btn-white.btn-default:focus, +.btn-white.btn-default.active, +.btn-white.btn-default:active, +.open > .btn-white.btn-default.dropdown-toggle, +.open > .btn-white.btn-default.active.dropdown-toggle { + background-color: #eff2f4 !important; + border-color: #abbac3; + color: #6b8595 !important; +} +.btn-white.btn-default:hover.no-border, +.btn-white.btn-default:focus.no-border, +.btn-white.btn-default.active.no-border, +.btn-white.btn-default:active.no-border, +.open > .btn-white.btn-default.dropdown-toggle.no-border, +.open > .btn-white.btn-default.active.dropdown-toggle.no-border { + border-color: #abbac3; +} +.btn-white.btn-default.disabled, +.btn-white.btn-default[disabled], +fieldset[disabled] .btn-white.btn-default, +.btn-white.btn-default.disabled:hover, +.btn-white.btn-default[disabled]:hover, +fieldset[disabled] .btn-white.btn-default:hover, +.btn-white.btn-default.disabled:focus, +.btn-white.btn-default[disabled]:focus, +fieldset[disabled] .btn-white.btn-default:focus, +.btn-white.btn-default.disabled:active, +.btn-white.btn-default[disabled]:active, +fieldset[disabled] .btn-white.btn-default:active, +.btn-white.btn-default.disabled.active, +.btn-white.btn-default[disabled].active, +fieldset[disabled] .btn-white.btn-default.active { + border-color: #abbac3; +} +.btn-white.btn-primary { + border-color: #8aafce; + color: #6688a6 !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-primary:hover, +.btn-white.btn-primary:focus, +.btn-white.btn-primary.active, +.btn-white.btn-primary:active, +.open > .btn-white.btn-primary.dropdown-toggle, +.open > .btn-white.btn-primary.active.dropdown-toggle { + background-color: #eaf2f8 !important; + border-color: #8aafce; + color: #537c9f !important; +} +.btn-white.btn-primary:hover.no-border, +.btn-white.btn-primary:focus.no-border, +.btn-white.btn-primary.active.no-border, +.btn-white.btn-primary:active.no-border, +.open > .btn-white.btn-primary.dropdown-toggle.no-border, +.open > .btn-white.btn-primary.active.dropdown-toggle.no-border { + border-color: #8aafce; +} +.btn-white.btn-primary.disabled, +.btn-white.btn-primary[disabled], +fieldset[disabled] .btn-white.btn-primary, +.btn-white.btn-primary.disabled:hover, +.btn-white.btn-primary[disabled]:hover, +fieldset[disabled] .btn-white.btn-primary:hover, +.btn-white.btn-primary.disabled:focus, +.btn-white.btn-primary[disabled]:focus, +fieldset[disabled] .btn-white.btn-primary:focus, +.btn-white.btn-primary.disabled:active, +.btn-white.btn-primary[disabled]:active, +fieldset[disabled] .btn-white.btn-primary:active, +.btn-white.btn-primary.disabled.active, +.btn-white.btn-primary[disabled].active, +fieldset[disabled] .btn-white.btn-primary.active { + border-color: #8aafce; +} +.btn-white.btn-success { + border-color: #a7c9a1; + color: #81a87b !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-success:hover, +.btn-white.btn-success:focus, +.btn-white.btn-success.active, +.btn-white.btn-success:active, +.open > .btn-white.btn-success.dropdown-toggle, +.open > .btn-white.btn-success.active.dropdown-toggle { + background-color: #edf4eb !important; + border-color: #a7c9a1; + color: #6ea465 !important; +} +.btn-white.btn-success:hover.no-border, +.btn-white.btn-success:focus.no-border, +.btn-white.btn-success.active.no-border, +.btn-white.btn-success:active.no-border, +.open > .btn-white.btn-success.dropdown-toggle.no-border, +.open > .btn-white.btn-success.active.dropdown-toggle.no-border { + border-color: #a7c9a1; +} +.btn-white.btn-success.disabled, +.btn-white.btn-success[disabled], +fieldset[disabled] .btn-white.btn-success, +.btn-white.btn-success.disabled:hover, +.btn-white.btn-success[disabled]:hover, +fieldset[disabled] .btn-white.btn-success:hover, +.btn-white.btn-success.disabled:focus, +.btn-white.btn-success[disabled]:focus, +fieldset[disabled] .btn-white.btn-success:focus, +.btn-white.btn-success.disabled:active, +.btn-white.btn-success[disabled]:active, +fieldset[disabled] .btn-white.btn-success:active, +.btn-white.btn-success.disabled.active, +.btn-white.btn-success[disabled].active, +fieldset[disabled] .btn-white.btn-success.active { + border-color: #a7c9a1; +} +.btn-white.btn-danger { + border-color: #d7a59d; + color: #b7837a !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-danger:hover, +.btn-white.btn-danger:focus, +.btn-white.btn-danger.active, +.btn-white.btn-danger:active, +.open > .btn-white.btn-danger.dropdown-toggle, +.open > .btn-white.btn-danger.active.dropdown-toggle { + background-color: #fbf4f3 !important; + border-color: #d7a59d; + color: #b46f64 !important; +} +.btn-white.btn-danger:hover.no-border, +.btn-white.btn-danger:focus.no-border, +.btn-white.btn-danger.active.no-border, +.btn-white.btn-danger:active.no-border, +.open > .btn-white.btn-danger.dropdown-toggle.no-border, +.open > .btn-white.btn-danger.active.dropdown-toggle.no-border { + border-color: #d7a59d; +} +.btn-white.btn-danger.disabled, +.btn-white.btn-danger[disabled], +fieldset[disabled] .btn-white.btn-danger, +.btn-white.btn-danger.disabled:hover, +.btn-white.btn-danger[disabled]:hover, +fieldset[disabled] .btn-white.btn-danger:hover, +.btn-white.btn-danger.disabled:focus, +.btn-white.btn-danger[disabled]:focus, +fieldset[disabled] .btn-white.btn-danger:focus, +.btn-white.btn-danger.disabled:active, +.btn-white.btn-danger[disabled]:active, +fieldset[disabled] .btn-white.btn-danger:active, +.btn-white.btn-danger.disabled.active, +.btn-white.btn-danger[disabled].active, +fieldset[disabled] .btn-white.btn-danger.active { + border-color: #d7a59d; +} +.btn-white.btn-warning { + border-color: #e7b979; + color: #daa458 !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-warning:hover, +.btn-white.btn-warning:focus, +.btn-white.btn-warning.active, +.btn-white.btn-warning:active, +.open > .btn-white.btn-warning.dropdown-toggle, +.open > .btn-white.btn-warning.active.dropdown-toggle { + background-color: #fef7ec !important; + border-color: #e7b979; + color: #db9a3d !important; +} +.btn-white.btn-warning:hover.no-border, +.btn-white.btn-warning:focus.no-border, +.btn-white.btn-warning.active.no-border, +.btn-white.btn-warning:active.no-border, +.open > .btn-white.btn-warning.dropdown-toggle.no-border, +.open > .btn-white.btn-warning.active.dropdown-toggle.no-border { + border-color: #e7b979; +} +.btn-white.btn-warning.disabled, +.btn-white.btn-warning[disabled], +fieldset[disabled] .btn-white.btn-warning, +.btn-white.btn-warning.disabled:hover, +.btn-white.btn-warning[disabled]:hover, +fieldset[disabled] .btn-white.btn-warning:hover, +.btn-white.btn-warning.disabled:focus, +.btn-white.btn-warning[disabled]:focus, +fieldset[disabled] .btn-white.btn-warning:focus, +.btn-white.btn-warning.disabled:active, +.btn-white.btn-warning[disabled]:active, +fieldset[disabled] .btn-white.btn-warning:active, +.btn-white.btn-warning.disabled.active, +.btn-white.btn-warning[disabled].active, +fieldset[disabled] .btn-white.btn-warning.active { + border-color: #e7b979; +} +.btn-white.btn-info { + border-color: #8fbcd9; + color: #70a0c1 !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-info:hover, +.btn-white.btn-info:focus, +.btn-white.btn-info.active, +.btn-white.btn-info:active, +.open > .btn-white.btn-info.dropdown-toggle, +.open > .btn-white.btn-info.active.dropdown-toggle { + background-color: #eef5fa !important; + border-color: #8fbcd9; + color: #5896bf !important; +} +.btn-white.btn-info:hover.no-border, +.btn-white.btn-info:focus.no-border, +.btn-white.btn-info.active.no-border, +.btn-white.btn-info:active.no-border, +.open > .btn-white.btn-info.dropdown-toggle.no-border, +.open > .btn-white.btn-info.active.dropdown-toggle.no-border { + border-color: #8fbcd9; +} +.btn-white.btn-info.disabled, +.btn-white.btn-info[disabled], +fieldset[disabled] .btn-white.btn-info, +.btn-white.btn-info.disabled:hover, +.btn-white.btn-info[disabled]:hover, +fieldset[disabled] .btn-white.btn-info:hover, +.btn-white.btn-info.disabled:focus, +.btn-white.btn-info[disabled]:focus, +fieldset[disabled] .btn-white.btn-info:focus, +.btn-white.btn-info.disabled:active, +.btn-white.btn-info[disabled]:active, +fieldset[disabled] .btn-white.btn-info:active, +.btn-white.btn-info.disabled.active, +.btn-white.btn-info[disabled].active, +fieldset[disabled] .btn-white.btn-info.active { + border-color: #8fbcd9; +} +.btn-white.btn-inverse { + border-color: #959595; + color: #555555 !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-inverse:hover, +.btn-white.btn-inverse:focus, +.btn-white.btn-inverse.active, +.btn-white.btn-inverse:active, +.open > .btn-white.btn-inverse.dropdown-toggle, +.open > .btn-white.btn-inverse.active.dropdown-toggle { + background-color: #e4e4e4 !important; + border-color: #959595; + color: #4c4545 !important; +} +.btn-white.btn-inverse:hover.no-border, +.btn-white.btn-inverse:focus.no-border, +.btn-white.btn-inverse.active.no-border, +.btn-white.btn-inverse:active.no-border, +.open > .btn-white.btn-inverse.dropdown-toggle.no-border, +.open > .btn-white.btn-inverse.active.dropdown-toggle.no-border { + border-color: #959595; +} +.btn-white.btn-inverse.disabled, +.btn-white.btn-inverse[disabled], +fieldset[disabled] .btn-white.btn-inverse, +.btn-white.btn-inverse.disabled:hover, +.btn-white.btn-inverse[disabled]:hover, +fieldset[disabled] .btn-white.btn-inverse:hover, +.btn-white.btn-inverse.disabled:focus, +.btn-white.btn-inverse[disabled]:focus, +fieldset[disabled] .btn-white.btn-inverse:focus, +.btn-white.btn-inverse.disabled:active, +.btn-white.btn-inverse[disabled]:active, +fieldset[disabled] .btn-white.btn-inverse:active, +.btn-white.btn-inverse.disabled.active, +.btn-white.btn-inverse[disabled].active, +fieldset[disabled] .btn-white.btn-inverse.active { + border-color: #959595; +} +.btn-white.btn-pink { + border-color: #d299ae; + color: #af6f87 !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-pink:hover, +.btn-white.btn-pink:focus, +.btn-white.btn-pink.active, +.btn-white.btn-pink:active, +.open > .btn-white.btn-pink.dropdown-toggle, +.open > .btn-white.btn-pink.active.dropdown-toggle { + background-color: #fbeff4 !important; + border-color: #d299ae; + color: #ac5978 !important; +} +.btn-white.btn-pink:hover.no-border, +.btn-white.btn-pink:focus.no-border, +.btn-white.btn-pink.active.no-border, +.btn-white.btn-pink:active.no-border, +.open > .btn-white.btn-pink.dropdown-toggle.no-border, +.open > .btn-white.btn-pink.active.dropdown-toggle.no-border { + border-color: #d299ae; +} +.btn-white.btn-pink.disabled, +.btn-white.btn-pink[disabled], +fieldset[disabled] .btn-white.btn-pink, +.btn-white.btn-pink.disabled:hover, +.btn-white.btn-pink[disabled]:hover, +fieldset[disabled] .btn-white.btn-pink:hover, +.btn-white.btn-pink.disabled:focus, +.btn-white.btn-pink[disabled]:focus, +fieldset[disabled] .btn-white.btn-pink:focus, +.btn-white.btn-pink.disabled:active, +.btn-white.btn-pink[disabled]:active, +fieldset[disabled] .btn-white.btn-pink:active, +.btn-white.btn-pink.disabled.active, +.btn-white.btn-pink[disabled].active, +fieldset[disabled] .btn-white.btn-pink.active { + border-color: #d299ae; +} +.btn-white.btn-purple { + border-color: #b7b1c6; + color: #7d6fa2 !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-purple:hover, +.btn-white.btn-purple:focus, +.btn-white.btn-purple.active, +.btn-white.btn-purple:active, +.open > .btn-white.btn-purple.dropdown-toggle, +.open > .btn-white.btn-purple.active.dropdown-toggle { + background-color: #efedf5 !important; + border-color: #b7b1c6; + color: #6d5b9c !important; +} +.btn-white.btn-purple:hover.no-border, +.btn-white.btn-purple:focus.no-border, +.btn-white.btn-purple.active.no-border, +.btn-white.btn-purple:active.no-border, +.open > .btn-white.btn-purple.dropdown-toggle.no-border, +.open > .btn-white.btn-purple.active.dropdown-toggle.no-border { + border-color: #b7b1c6; +} +.btn-white.btn-purple.disabled, +.btn-white.btn-purple[disabled], +fieldset[disabled] .btn-white.btn-purple, +.btn-white.btn-purple.disabled:hover, +.btn-white.btn-purple[disabled]:hover, +fieldset[disabled] .btn-white.btn-purple:hover, +.btn-white.btn-purple.disabled:focus, +.btn-white.btn-purple[disabled]:focus, +fieldset[disabled] .btn-white.btn-purple:focus, +.btn-white.btn-purple.disabled:active, +.btn-white.btn-purple[disabled]:active, +fieldset[disabled] .btn-white.btn-purple:active, +.btn-white.btn-purple.disabled.active, +.btn-white.btn-purple[disabled].active, +fieldset[disabled] .btn-white.btn-purple.active { + border-color: #b7b1c6; +} +.btn-white.btn-yellow { + border-color: #ecd181; + color: #d3a61a !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-yellow:hover, +.btn-white.btn-yellow:focus, +.btn-white.btn-yellow.active, +.btn-white.btn-yellow:active, +.open > .btn-white.btn-yellow.dropdown-toggle, +.open > .btn-white.btn-yellow.active.dropdown-toggle { + background-color: #fdf7e4 !important; + border-color: #ecd181; + color: #c29712 !important; +} +.btn-white.btn-yellow:hover.no-border, +.btn-white.btn-yellow:focus.no-border, +.btn-white.btn-yellow.active.no-border, +.btn-white.btn-yellow:active.no-border, +.open > .btn-white.btn-yellow.dropdown-toggle.no-border, +.open > .btn-white.btn-yellow.active.dropdown-toggle.no-border { + border-color: #ecd181; +} +.btn-white.btn-yellow.disabled, +.btn-white.btn-yellow[disabled], +fieldset[disabled] .btn-white.btn-yellow, +.btn-white.btn-yellow.disabled:hover, +.btn-white.btn-yellow[disabled]:hover, +fieldset[disabled] .btn-white.btn-yellow:hover, +.btn-white.btn-yellow.disabled:focus, +.btn-white.btn-yellow[disabled]:focus, +fieldset[disabled] .btn-white.btn-yellow:focus, +.btn-white.btn-yellow.disabled:active, +.btn-white.btn-yellow[disabled]:active, +fieldset[disabled] .btn-white.btn-yellow:active, +.btn-white.btn-yellow.disabled.active, +.btn-white.btn-yellow[disabled].active, +fieldset[disabled] .btn-white.btn-yellow.active { + border-color: #ecd181; +} +.btn-white.btn-grey { + border-color: #c6c6c6; + color: #8c8c8c !important; + /** + //&:hover, &:focus, &.focus, .open > &.dropdown-toggle { + //color: saturate(darken(@txt-color , 5%) , 5%) !important; + //} + //&.no-border:hover , &.no-border:active { + //border-color: @border-color; + //} + */ +} +.btn-white.btn-grey:hover, +.btn-white.btn-grey:focus, +.btn-white.btn-grey.active, +.btn-white.btn-grey:active, +.open > .btn-white.btn-grey.dropdown-toggle, +.open > .btn-white.btn-grey.active.dropdown-toggle { + background-color: #ededed !important; + border-color: #c6c6c6; + color: #857979 !important; +} +.btn-white.btn-grey:hover.no-border, +.btn-white.btn-grey:focus.no-border, +.btn-white.btn-grey.active.no-border, +.btn-white.btn-grey:active.no-border, +.open > .btn-white.btn-grey.dropdown-toggle.no-border, +.open > .btn-white.btn-grey.active.dropdown-toggle.no-border { + border-color: #c6c6c6; +} +.btn-white.btn-grey.disabled, +.btn-white.btn-grey[disabled], +fieldset[disabled] .btn-white.btn-grey, +.btn-white.btn-grey.disabled:hover, +.btn-white.btn-grey[disabled]:hover, +fieldset[disabled] .btn-white.btn-grey:hover, +.btn-white.btn-grey.disabled:focus, +.btn-white.btn-grey[disabled]:focus, +fieldset[disabled] .btn-white.btn-grey:focus, +.btn-white.btn-grey.disabled:active, +.btn-white.btn-grey[disabled]:active, +fieldset[disabled] .btn-white.btn-grey:active, +.btn-white.btn-grey.disabled.active, +.btn-white.btn-grey[disabled].active, +fieldset[disabled] .btn-white.btn-grey.active { + border-color: #c6c6c6; +} +.btn.disabled.active, +.btn[disabled].active, +.btn.disabled:focus, +.btn[disabled]:focus, +.btn.disabled:active, +.btn[disabled]:active { + outline: none; +} +.btn.disabled:active, +.btn[disabled]:active { + top: 0; + left: 0; +} +.btn.active:after { + display: inline-block; + content: ""; + position: absolute; + border-bottom: 1px solid #efe5b5; + left: -4px; + right: -4px; + bottom: -4px; +} +.btn.active.btn-sm:after { + left: -3px; + right: -3px; + bottom: -3px; +} +.btn.active.btn-lg:after { + left: -5px; + right: -5px; + bottom: -5px; +} +.btn.active.btn-xs:after, +.btn.active.btn-mini:after, +.btn.active.btn-minier:after { + left: -1px; + right: -1px; + bottom: -2px; +} +.btn.active.btn-minier:after { + bottom: -1px; +} +.btn.active.btn-yellow:after { + border-bottom-color: #c96338; +} +.btn.active.btn-light { + color: #515151; +} +.btn.active.btn-light:after { + border-bottom-color: #B5B5B5; +} +.btn > .ace-icon { + margin-right: 4px; +} +.btn > .ace-icon.icon-on-right { + margin-right: 0; + margin-left: 4px; +} +.btn > .icon-only.ace-icon { + margin: 0 !important; + text-align: center; + padding: 0; +} +.btn-lg > .ace-icon { + margin-right: 6px; +} +.btn-lg > .ace-icon.icon-on-right { + margin-right: 0; + margin-left: 6px; +} +.btn-sm > .ace-icon { + margin-right: 3px; +} +.btn-sm > .ace-icon.icon-on-right { + margin-right: 0; + margin-left: 3px; +} +.btn-xs > .ace-icon, +.btn-mini > .ace-icon, +.btn-minier > .ace-icon { + margin-right: 2px; +} +.btn-xs > .ace-icon.icon-on-right, +.btn-mini > .ace-icon.icon-on-right, +.btn-minier > .ace-icon.icon-on-right { + margin-right: 0; + margin-left: 2px; +} +.btn.btn-link { + border-width: 0 !important; + background: transparent none !important; + color: #0088cc !important; + text-shadow: none !important; + padding: 4px 12px !important; + line-height: 20px !important; +} +.btn.btn-link:hover { + background: none !important; + text-shadow: none !important; +} +.btn.btn-link.active { + background: none !important; + text-decoration: underline; + color: #009ceb !important; +} +.btn.btn-link.active:after { + display: none; +} +.btn.btn-link.disabled, +.btn.btn-link[disabled] { + background: transparent none !important; + opacity: 0.65; + filter: alpha(opacity=65); + text-decoration: none !important; +} +.btn.btn-no-border { + border-width: 0 !important; +} +.btn-group:first-child { + margin-left: 0; +} +.btn-group > .btn, +.btn-group > .btn + .btn { + margin: 0 1px 0 0; +} +.btn-group > .btn:first-child { + margin: 0 1px 0 0; +} +.btn-group > .btn > .caret { + margin-top: 15px; + margin-left: 1px; + border-width: 5px; + border-top-color: #FFF; +} +.btn-group > .btn.btn-sm > .caret { + margin-top: 10px; + border-width: 4px; +} +.btn-group > .btn.btn-lg > .caret { + margin-top: 18px; + border-width: 6px; +} +.btn-group > .btn.btn-xs > .caret, +.btn-group > .btn.btn-mini > .caret { + margin-top: 9px; + border-width: 4px; +} +.btn-group > .btn.btn-minier > .caret { + margin-top: 7px; + border-width: 3px; +} +.btn-group > .btn + .btn.dropdown-toggle { + padding-right: 3px; + padding-left: 3px; +} +.btn-group > .btn + .btn-lg.dropdown-toggle { + padding-right: 4px; + padding-left: 4px; +} +.btn-group .dropdown-toggle { + border-radius: 0; +} +.btn-group > .btn, +.btn-group + .btn { + margin: 0 1px 0 0; + border-width: 3px; + /* the border under an active button in button groups */ +} +.btn-group > .btn.active:after, +.btn-group + .btn.active:after { + left: -2px; + right: -2px; + bottom: -2px; + border-bottom-width: 1px; +} +.btn-group > .btn-lg, +.btn-group + .btn-lg { + border-width: 4px; + /* the border under an active button in button groups */ +} +.btn-group > .btn-lg.active:after, +.btn-group + .btn-lg.active:after { + left: -3px; + right: -3px; + bottom: -3px; + border-bottom-width: 1px; +} +.btn-group > .btn-sm, +.btn-group + .btn-sm { + border-width: 2px; + /* the border under an active button in button groups */ +} +.btn-group > .btn-sm.active:after, +.btn-group + .btn-sm.active:after { + left: -1px; + right: -1px; + bottom: -1px; + border-bottom-width: 1px; +} +.btn-group > .btn-xs, +.btn-group + .btn-xs, +.btn-group > .btn-mini, +.btn-group + .btn-mini { + border-width: 1px; + /* the border under an active button in button groups */ +} +.btn-group > .btn-xs.active:after, +.btn-group + .btn-xs.active:after, +.btn-group > .btn-mini.active:after, +.btn-group + .btn-mini.active:after { + left: 0px; + right: 0px; + bottom: 0px; + border-bottom-width: 1px; +} +.btn-group > .btn-minier, +.btn-group + .btn-minier { + border-width: 1px; + /* the border under an active button in button groups */ +} +.btn-group > .btn-minier.active:after, +.btn-group + .btn-minier.active:after { + left: 0px; + right: 0px; + bottom: 0px; + border-bottom-width: 1px; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-radius: 0; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn + .btn { + margin: 1px 0 0; +} +.btn-group-vertical > .btn:first-child { + margin-top: 0; +} +.btn-group.btn-overlap > .btn { + margin-right: -1px; +} +.btn-group.btn-corner > .btn:first-child { + border-bottom-left-radius: 8px; + border-top-left-radius: 8px; +} +.btn-group.btn-corner > .btn:last-child { + border-bottom-right-radius: 8px; + border-top-right-radius: 8px; +} +.btn-group.btn-corner > .btn.btn-sm:first-child { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.btn-group.btn-corner > .btn.btn-sm:last-child { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.btn-group.btn-corner > .btn.btn-xs:first-child, +.btn-group.btn-corner > .btn.btn-mini:first-child { + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.btn-group.btn-corner > .btn.btn-xs:last-child, +.btn-group.btn-corner > .btn.btn-mini:last-child { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.btn.btn-white { + border-width: 1px; +} +.btn.btn-bold { + border-bottom-width: 2px; +} +.btn.btn-round { + border-bottom-width: 2px; + border-radius: 4px !important; +} +.btn.btn-app { + display: inline-block; + width: 100px; + font-size: 18px; + font-weight: normal; + color: #FFF; + text-align: center; + text-shadow: 0 -1px -1px rgba(0, 0, 0, 0.2) !important; + border: none; + border-radius: 12px; + padding: 12px 0 8px; + margin: 2px; + line-height: 1.7; + position: relative; +} +.btn-app, +.btn-app.btn-default, +.btn-app.no-hover:hover, +.btn-app.btn-default.no-hover:hover, +.btn-app.disabled:hover, +.btn-app.btn-default.disabled:hover { + background: #b4c2cc !important; + background-image: -webkit-linear-gradient(top, #bcc9d5 0%, #abbac3 100%) !important; + background-image: -o-linear-gradient(top, #bcc9d5 0%, #abbac3 100%) !important; + background-image: linear-gradient(to bottom, #bcc9d5 0%, #abbac3 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbcc9d5', endColorstr='#ffabbac3', GradientType=0) !important; +} +.btn-app:hover, +.btn-app.btn-default:hover { + background: #9baebc !important; + background-image: -webkit-linear-gradient(top, #a3b5c5 0%, #93a6b2 100%) !important; + background-image: -o-linear-gradient(top, #a3b5c5 0%, #93a6b2 100%) !important; + background-image: linear-gradient(to bottom, #a3b5c5 0%, #93a6b2 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa3b5c5', endColorstr='#ff93a6b2', GradientType=0) !important; +} +.btn-app.btn-primary, +.btn-app.btn-primary.no-hover:hover, +.btn-app.btn-primary.disabled:hover { + background: #2a8bcb !important; + background-image: -webkit-linear-gradient(top, #3b98d6 0%, #197ec1 100%) !important; + background-image: -o-linear-gradient(top, #3b98d6 0%, #197ec1 100%) !important; + background-image: linear-gradient(to bottom, #3b98d6 0%, #197ec1 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3b98d6', endColorstr='#ff197ec1', GradientType=0) !important; +} +.btn-app.btn-primary:hover { + background: #1d6fa6 !important; + background-image: -webkit-linear-gradient(top, #267eb8 0%, #136194 100%) !important; + background-image: -o-linear-gradient(top, #267eb8 0%, #136194 100%) !important; + background-image: linear-gradient(to bottom, #267eb8 0%, #136194 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff267eb8', endColorstr='#ff136194', GradientType=0) !important; +} +.btn-app.btn-info, +.btn-app.btn-info.no-hover:hover, +.btn-app.btn-info.disabled:hover { + background: #68adde !important; + background-image: -webkit-linear-gradient(top, #75b5e6 0%, #5ba4d5 100%) !important; + background-image: -o-linear-gradient(top, #75b5e6 0%, #5ba4d5 100%) !important; + background-image: linear-gradient(to bottom, #75b5e6 0%, #5ba4d5 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff75b5e6', endColorstr='#ff5ba4d5', GradientType=0) !important; +} +.btn-app.btn-info:hover { + background: #3f96d4 !important; + background-image: -webkit-linear-gradient(top, #4a9ede 0%, #348dc9 100%) !important; + background-image: -o-linear-gradient(top, #4a9ede 0%, #348dc9 100%) !important; + background-image: linear-gradient(to bottom, #4a9ede 0%, #348dc9 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4a9ede', endColorstr='#ff348dc9', GradientType=0) !important; +} +.btn-app.btn-success, +.btn-app.btn-success.no-hover:hover, +.btn-app.btn-success.disabled:hover { + background: #85b558 !important; + background-image: -webkit-linear-gradient(top, #8ebf60 0%, #7daa50 100%) !important; + background-image: -o-linear-gradient(top, #8ebf60 0%, #7daa50 100%) !important; + background-image: linear-gradient(to bottom, #8ebf60 0%, #7daa50 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ebf60', endColorstr='#ff7daa50', GradientType=0) !important; +} +.btn-app.btn-success:hover { + background: #6c9842 !important; + background-image: -webkit-linear-gradient(top, #74a844 0%, #648740 100%) !important; + background-image: -o-linear-gradient(top, #74a844 0%, #648740 100%) !important; + background-image: linear-gradient(to bottom, #74a844 0%, #648740 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff74a844', endColorstr='#ff648740', GradientType=0) !important; +} +.btn-app.btn-danger, +.btn-app.btn-danger.no-hover:hover, +.btn-app.btn-danger.disabled:hover { + background: #d3413b !important; + background-image: -webkit-linear-gradient(top, #d55b52 0%, #d12723 100%) !important; + background-image: -o-linear-gradient(top, #d55b52 0%, #d12723 100%) !important; + background-image: linear-gradient(to bottom, #d55b52 0%, #d12723 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd55b52', endColorstr='#ffd12723', GradientType=0) !important; +} +.btn-app.btn-danger:hover { + background: #b52c26 !important; + background-image: -webkit-linear-gradient(top, #c43a30 0%, #a51f1c 100%) !important; + background-image: -o-linear-gradient(top, #c43a30 0%, #a51f1c 100%) !important; + background-image: linear-gradient(to bottom, #c43a30 0%, #a51f1c 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc43a30', endColorstr='#ffa51f1c', GradientType=0) !important; +} +.btn-app.btn-warning, +.btn-app.btn-warning.no-hover:hover, +.btn-app.btn-warning.disabled:hover { + background: #ffb44b !important; + background-image: -webkit-linear-gradient(top, #ffbf66 0%, #ffa830 100%) !important; + background-image: -o-linear-gradient(top, #ffbf66 0%, #ffa830 100%) !important; + background-image: linear-gradient(to bottom, #ffbf66 0%, #ffa830 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffbf66', endColorstr='#ffffa830', GradientType=0) !important; +} +.btn-app.btn-warning:hover { + background: #fe9e19 !important; + background-image: -webkit-linear-gradient(top, #ffaa33 0%, #fc9200 100%) !important; + background-image: -o-linear-gradient(top, #ffaa33 0%, #fc9200 100%) !important; + background-image: linear-gradient(to bottom, #ffaa33 0%, #fc9200 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffaa33', endColorstr='#fffc9200', GradientType=0) !important; +} +.btn-app.btn-purple, +.btn-app.btn-purple.no-hover:hover, +.btn-app.btn-purple.disabled:hover { + background: #9889c1 !important; + background-image: -webkit-linear-gradient(top, #a696ce 0%, #8a7cb4 100%) !important; + background-image: -o-linear-gradient(top, #a696ce 0%, #8a7cb4 100%) !important; + background-image: linear-gradient(to bottom, #a696ce 0%, #8a7cb4 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa696ce', endColorstr='#ff8a7cb4', GradientType=0) !important; +} +.btn-app.btn-purple:hover { + background: #7b68af !important; + background-image: -webkit-linear-gradient(top, #8973be 0%, #6d5ca1 100%) !important; + background-image: -o-linear-gradient(top, #8973be 0%, #6d5ca1 100%) !important; + background-image: linear-gradient(to bottom, #8973be 0%, #6d5ca1 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8973be', endColorstr='#ff6d5ca1', GradientType=0) !important; +} +.btn-app.btn-pink, +.btn-app.btn-pink.no-hover:hover, +.btn-app.btn-pink.disabled:hover { + background: #d54c7e !important; + background-image: -webkit-linear-gradient(top, #db5e8c 0%, #ce3970 100%) !important; + background-image: -o-linear-gradient(top, #db5e8c 0%, #ce3970 100%) !important; + background-image: linear-gradient(to bottom, #db5e8c 0%, #ce3970 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdb5e8c', endColorstr='#ffce3970', GradientType=0) !important; +} +.btn-app.btn-pink:hover { + background: #be2f64 !important; + background-image: -webkit-linear-gradient(top, #d2346e 0%, #aa2a59 100%) !important; + background-image: -o-linear-gradient(top, #d2346e 0%, #aa2a59 100%) !important; + background-image: linear-gradient(to bottom, #d2346e 0%, #aa2a59 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd2346e', endColorstr='#ffaa2a59', GradientType=0) !important; +} +.btn-app.btn-inverse, +.btn-app.btn-inverse.no-hover:hover, +.btn-app.btn-inverse.disabled:hover { + background: #444444 !important; + background-image: -webkit-linear-gradient(top, #555555 0%, #333333 100%) !important; + background-image: -o-linear-gradient(top, #555555 0%, #333333 100%) !important; + background-image: linear-gradient(to bottom, #555555 0%, #333333 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=0) !important; +} +.btn-app.btn-inverse:hover { + background: #2b2b2b !important; + background-image: -webkit-linear-gradient(top, #3b3b3b 0%, #1a1a1a 100%) !important; + background-image: -o-linear-gradient(top, #3b3b3b 0%, #1a1a1a 100%) !important; + background-image: linear-gradient(to bottom, #3b3b3b 0%, #1a1a1a 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3b3b3b', endColorstr='#ff1a1a1a', GradientType=0) !important; +} +.btn-app.btn-grey, +.btn-app.btn-grey.no-hover:hover, +.btn-app.btn-grey.disabled:hover { + background: #797979 !important; + background-image: -webkit-linear-gradient(top, #898989 0%, #696969 100%) !important; + background-image: -o-linear-gradient(top, #898989 0%, #696969 100%) !important; + background-image: linear-gradient(to bottom, #898989 0%, #696969 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff898989', endColorstr='#ff696969', GradientType=0) !important; +} +.btn-app.btn-grey:hover { + background: #6c6c6c !important; + background-image: -webkit-linear-gradient(top, #7c7c7c 0%, #5c5c5c 100%) !important; + background-image: -o-linear-gradient(top, #7c7c7c 0%, #5c5c5c 100%) !important; + background-image: linear-gradient(to bottom, #7c7c7c 0%, #5c5c5c 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7c7c7c', endColorstr='#ff5c5c5c', GradientType=0) !important; +} +.btn.btn-app.btn-light { + color: #5a5a5a !important; + text-shadow: 0 1px 1px #EEE !important; +} +.btn.btn-app.btn-light, +.btn.btn-app.btn-light.no-hover:hover, +.btn.btn-app.btn-light.disabled:hover { + background: #ededed !important; + background-image: -webkit-linear-gradient(top, #f4f4f4 0%, #e6e6e6 100%) !important; + background-image: -o-linear-gradient(top, #f4f4f4 0%, #e6e6e6 100%) !important; + background-image: linear-gradient(to bottom, #f4f4f4 0%, #e6e6e6 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe6e6e6', GradientType=0) !important; +} +.btn.btn-app.btn-light:hover { + background: #e0e0e0 !important; + background-image: -webkit-linear-gradient(top, #e7e7e7 0%, #d9d9d9 100%) !important; + background-image: -o-linear-gradient(top, #e7e7e7 0%, #d9d9d9 100%) !important; + background-image: linear-gradient(to bottom, #e7e7e7 0%, #d9d9d9 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe7e7e7', endColorstr='#ffd9d9d9', GradientType=0) !important; +} +.btn.btn-app.btn-yellow { + color: #996633 !important; + text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.4) !important; +} +.btn.btn-app.btn-yellow, +.btn.btn-app.btn-yellow.no-hover:hover, +.btn.btn-app.btn-yellow.disabled:hover { + background: #fee088 !important; + background-image: -webkit-linear-gradient(top, #ffe8a5 0%, #fcd76a 100%) !important; + background-image: -o-linear-gradient(top, #ffe8a5 0%, #fcd76a 100%) !important; + background-image: linear-gradient(to bottom, #ffe8a5 0%, #fcd76a 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffe8a5', endColorstr='#fffcd76a', GradientType=0) !important; +} +.btn.btn-app.btn-yellow:hover { + background: #fdd96e !important; + background-image: -webkit-linear-gradient(top, #ffe18b 0%, #fbd051 100%) !important; + background-image: -o-linear-gradient(top, #ffe18b 0%, #fbd051 100%) !important; + background-image: linear-gradient(to bottom, #ffe18b 0%, #fbd051 100%) !important; + background-repeat: repeat-x !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffe18b', endColorstr='#fffbd051', GradientType=0) !important; +} +.btn.btn-app > .ace-icon { + opacity: 0.88; +} +.btn.btn-app:hover > .ace-icon { + opacity: 1; +} +.btn.btn-app.btn-sm { + width: 80px; + font-size: 16px; + border-radius: 10px; + line-height: 1.5; +} +.btn.btn-app.btn-xs { + width: 64px; + font-size: 15px; + border-radius: 8px; + padding-bottom: 7px; + padding-top: 8px; + line-height: 1.45; +} +.btn.btn-app > .ace-icon { + display: block; + font-size: 42px; + margin: 0 0 4px; + line-height: 36px; + min-width: 0; + padding: 0; +} +.btn.btn-app.btn-sm > .ace-icon { + display: block; + font-size: 32px; + line-height: 30px; + margin: 0 0 3px; +} +.btn.btn-app.btn-xs > .ace-icon { + display: block; + font-size: 24px; + line-height: 24px; + margin: 0; +} +.btn.btn-app.no-radius { + border-radius: 0; +} +.btn.btn-app.radius-4 { + border-radius: 4px; +} +.btn.btn-app > .badge, +.btn.btn-app > .label { + position: absolute !important; + top: -2px; + right: -2px; + padding: 1px 3px; + text-align: center; + font-size: 12px; + color: #FFF; +} +.btn.btn-app > .badge.badge-left, +.btn.btn-app > .label.badge-left, +.btn.btn-app > .badge.label-left, +.btn.btn-app > .label.label-left { + right: auto; + left: -2px; +} +.btn.btn-app > .badge-yellow, +.btn.btn-app > .label-yellow { + color: #996633; +} +.btn.btn-app > .badge-light, +.btn.btn-app > .label-light { + color: #888888; +} +.btn.btn-app > .label { + padding: 1px 6px 3px; + font-size: 13px; +} +.btn.btn-app.radius-4 > .badge, +.btn.btn-app.no-radius > .badge { + border-radius: 3px; +} +.btn.btn-app.radius-4 > .badge.no-radius, +.btn.btn-app.no-radius > .badge.no-radius { + border-radius: 0; +} +.btn.btn-app.active { + color: #ffffff; +} +.btn.btn-app.active:after { + display: none; +} +.btn.btn-app.active.btn-yellow { + color: #996633; + border-color: #fee188; +} +.btn.btn-app.active.btn-light { + color: #515151; +} +.btn-group > .btn-app:first-child:not(:last-child):not(.dropdown-toggle) { + margin-right: 24px; +} +.btn-group > .btn-app + .btn-app.dropdown-toggle { + position: absolute; + width: auto; + height: 100%; + padding-left: 6px; + padding-right: 6px; + margin-left: -23px; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + right: 0; +} +.btn.btn-app.btn-light, +.btn.btn-app.btn-yellow { + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08) inset !important; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08) inset !important; +} +.label { + border-radius: 0; + text-shadow: none; + font-weight: normal; + color: #ffffff; + display: inline-block; + background-color: #abbac3; +} +.label[class*="col-"][class*="arrow"] { + min-height: 0; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + ::safari-only, + .label:empty { + display: inline-block; + } + ::safari-only, + .badge:empty { + display: inline-block; + } +} +.badge { + text-shadow: none; + font-size: 12px; + padding-top: 1px; + padding-bottom: 3px; + font-weight: normal; + line-height: 15px; + background-color: #abbac3; +} +.badge.no-radius { + border-radius: 0; +} +.badge.radius-1 { + border-radius: 1px; +} +.badge.radius-2 { + border-radius: 2px; +} +.badge.radius-3 { + border-radius: 3px; +} +.badge.radius-4 { + border-radius: 4px; +} +.badge.radius-5 { + border-radius: 5px; +} +.badge.radius-6 { + border-radius: 6px; +} +.label.label-transparent, +.label-transparent, +.badge.badge-transparent, +.badge-transparent { + background-color: transparent; +} +.label-grey, +.label.label-grey, +.badge.badge-grey, +.badge-grey { + background-color: #a0a0a0; +} +.label-info, +.label.label-info, +.badge.badge-info, +.badge-info { + background-color: #3a87ad; +} +.label-primary, +.label.label-primary, +.badge.badge-primary, +.badge-primary { + background-color: #428bca; +} +.label-success, +.label.label-success, +.badge.badge-success, +.badge-success { + background-color: #82af6f; +} +.label-danger, +.label.label-danger, +.badge.badge-danger, +.badge-danger { + background-color: #d15b47; +} +.label-important, +.label.label-important, +.badge.badge-important, +.badge-important { + background-color: #d15b47; +} +.label-inverse, +.label.label-inverse, +.badge.badge-inverse, +.badge-inverse { + background-color: #333333; +} +.label-warning, +.label.label-warning, +.badge.badge-warning, +.badge-warning { + background-color: #f89406; +} +.label-pink, +.label.label-pink, +.badge.badge-pink, +.badge-pink { + background-color: #d6487e; +} +.label-purple, +.label.label-purple, +.badge.badge-purple, +.badge-purple { + background-color: #9585bf; +} +.label-yellow, +.label.label-yellow, +.badge.badge-yellow, +.badge-yellow { + background-color: #fee188; +} +.label-light, +.label.label-light, +.badge.badge-light, +.badge-light { + background-color: #e7e7e7; +} +.badge-yellow, +.label-yellow { + color: #996633; + border-color: #fee188; +} +.badge-light, +.label-light { + color: #888888; +} +.label.arrowed, +.label.arrowed-in { + position: relative; + z-index: 1; +} +.label.arrowed:before, +.label.arrowed-in:before { + display: inline-block; + content: ""; + position: absolute; + top: 0; + z-index: -1; + border: 1px solid transparent; + border-right-color: #abbac3; + -moz-border-right-colors: #abbac3; +} +.label.arrowed-in:before { + border-color: #abbac3; + border-left-color: transparent; + -moz-border-left-colors: none; +} +.label.arrowed-right, +.label.arrowed-in-right { + position: relative; + z-index: 1; +} +.label.arrowed-right:after, +.label.arrowed-in-right:after { + display: inline-block; + content: ""; + position: absolute; + top: 0; + z-index: -1; + border: 1px solid transparent; + border-left-color: #abbac3; + -moz-border-left-colors: #abbac3; +} +.label.arrowed-in-right:after { + border-color: #abbac3; + border-right-color: transparent; + -moz-border-right-colors: none; +} +.label-info.arrowed:before { + border-right-color: #3a87ad; + -moz-border-right-colors: #3a87ad; +} +.label-info.arrowed-in:before { + border-color: #3a87ad #3a87ad #3a87ad transparent; + -moz-border-right-colors: #3a87ad; +} +.label-info.arrowed-right:after { + border-left-color: #3a87ad; + -moz-border-left-colors: #3a87ad; +} +.label-info.arrowed-in-right:after { + border-color: #3a87ad transparent #3a87ad #3a87ad; + -moz-border-left-colors: #3a87ad; +} +.label-primary.arrowed:before { + border-right-color: #428bca; + -moz-border-right-colors: #428bca; +} +.label-primary.arrowed-in:before { + border-color: #428bca #428bca #428bca transparent; + -moz-border-right-colors: #428bca; +} +.label-primary.arrowed-right:after { + border-left-color: #428bca; + -moz-border-left-colors: #428bca; +} +.label-primary.arrowed-in-right:after { + border-color: #428bca transparent #428bca #428bca; + -moz-border-left-colors: #428bca; +} +.label-success.arrowed:before { + border-right-color: #82af6f; + -moz-border-right-colors: #82af6f; +} +.label-success.arrowed-in:before { + border-color: #82af6f #82af6f #82af6f transparent; + -moz-border-right-colors: #82af6f; +} +.label-success.arrowed-right:after { + border-left-color: #82af6f; + -moz-border-left-colors: #82af6f; +} +.label-success.arrowed-in-right:after { + border-color: #82af6f transparent #82af6f #82af6f; + -moz-border-left-colors: #82af6f; +} +.label-warning.arrowed:before { + border-right-color: #f89406; + -moz-border-right-colors: #f89406; +} +.label-warning.arrowed-in:before { + border-color: #f89406 #f89406 #f89406 transparent; + -moz-border-right-colors: #f89406; +} +.label-warning.arrowed-right:after { + border-left-color: #f89406; + -moz-border-left-colors: #f89406; +} +.label-warning.arrowed-in-right:after { + border-color: #f89406 transparent #f89406 #f89406; + -moz-border-left-colors: #f89406; +} +.label-important.arrowed:before { + border-right-color: #d15b47; + -moz-border-right-colors: #d15b47; +} +.label-important.arrowed-in:before { + border-color: #d15b47 #d15b47 #d15b47 transparent; + -moz-border-right-colors: #d15b47; +} +.label-important.arrowed-right:after { + border-left-color: #d15b47; + -moz-border-left-colors: #d15b47; +} +.label-important.arrowed-in-right:after { + border-color: #d15b47 transparent #d15b47 #d15b47; + -moz-border-left-colors: #d15b47; +} +.label-danger.arrowed:before { + border-right-color: #d15b47; + -moz-border-right-colors: #d15b47; +} +.label-danger.arrowed-in:before { + border-color: #d15b47 #d15b47 #d15b47 transparent; + -moz-border-right-colors: #d15b47; +} +.label-danger.arrowed-right:after { + border-left-color: #d15b47; + -moz-border-left-colors: #d15b47; +} +.label-danger.arrowed-in-right:after { + border-color: #d15b47 transparent #d15b47 #d15b47; + -moz-border-left-colors: #d15b47; +} +.label-inverse.arrowed:before { + border-right-color: #333333; + -moz-border-right-colors: #333333; +} +.label-inverse.arrowed-in:before { + border-color: #333333 #333333 #333333 transparent; + -moz-border-right-colors: #333333; +} +.label-inverse.arrowed-right:after { + border-left-color: #333333; + -moz-border-left-colors: #333333; +} +.label-inverse.arrowed-in-right:after { + border-color: #333333 transparent #333333 #333333; + -moz-border-left-colors: #333333; +} +.label-pink.arrowed:before { + border-right-color: #d6487e; + -moz-border-right-colors: #d6487e; +} +.label-pink.arrowed-in:before { + border-color: #d6487e #d6487e #d6487e transparent; + -moz-border-right-colors: #d6487e; +} +.label-pink.arrowed-right:after { + border-left-color: #d6487e; + -moz-border-left-colors: #d6487e; +} +.label-pink.arrowed-in-right:after { + border-color: #d6487e transparent #d6487e #d6487e; + -moz-border-left-colors: #d6487e; +} +.label-purple.arrowed:before { + border-right-color: #9585bf; + -moz-border-right-colors: #9585bf; +} +.label-purple.arrowed-in:before { + border-color: #9585bf #9585bf #9585bf transparent; + -moz-border-right-colors: #9585bf; +} +.label-purple.arrowed-right:after { + border-left-color: #9585bf; + -moz-border-left-colors: #9585bf; +} +.label-purple.arrowed-in-right:after { + border-color: #9585bf transparent #9585bf #9585bf; + -moz-border-left-colors: #9585bf; +} +.label-yellow.arrowed:before { + border-right-color: #fee188; + -moz-border-right-colors: #fee188; +} +.label-yellow.arrowed-in:before { + border-color: #fee188 #fee188 #fee188 transparent; + -moz-border-right-colors: #fee188; +} +.label-yellow.arrowed-right:after { + border-left-color: #fee188; + -moz-border-left-colors: #fee188; +} +.label-yellow.arrowed-in-right:after { + border-color: #fee188 transparent #fee188 #fee188; + -moz-border-left-colors: #fee188; +} +.label-light.arrowed:before { + border-right-color: #e7e7e7; + -moz-border-right-colors: #e7e7e7; +} +.label-light.arrowed-in:before { + border-color: #e7e7e7 #e7e7e7 #e7e7e7 transparent; + -moz-border-right-colors: #e7e7e7; +} +.label-light.arrowed-right:after { + border-left-color: #e7e7e7; + -moz-border-left-colors: #e7e7e7; +} +.label-light.arrowed-in-right:after { + border-color: #e7e7e7 transparent #e7e7e7 #e7e7e7; + -moz-border-left-colors: #e7e7e7; +} +.label-grey.arrowed:before { + border-right-color: #a0a0a0; + -moz-border-right-colors: #a0a0a0; +} +.label-grey.arrowed-in:before { + border-color: #a0a0a0 #a0a0a0 #a0a0a0 transparent; + -moz-border-right-colors: #a0a0a0; +} +.label-grey.arrowed-right:after { + border-left-color: #a0a0a0; + -moz-border-left-colors: #a0a0a0; +} +.label-grey.arrowed-in-right:after { + border-color: #a0a0a0 transparent #a0a0a0 #a0a0a0; + -moz-border-left-colors: #a0a0a0; +} +.label { + font-size: 12px; + line-height: 1.15; + height: 20px; +} +.label.arrowed { + margin-left: 5px; +} +.label.arrowed:before { + left: -10px; + border-width: 10px 5px; +} +.label.arrowed-in { + margin-left: 5px; +} +.label.arrowed-in:before { + left: -5px; + border-width: 10px 5px; +} +.label.arrowed-right { + margin-right: 5px; +} +.label.arrowed-right:after { + right: -10px; + border-width: 10px 5px; +} +.label.arrowed-in-right { + margin-right: 5px; +} +.label.arrowed-in-right:after { + right: -5px; + border-width: 10px 5px; +} +.label-lg { + padding: 0.3em 0.6em 0.4em; + font-size: 13px; + line-height: 1.1; + height: 24px; +} +.label-lg.arrowed { + margin-left: 6px; +} +.label-lg.arrowed:before { + left: -12px; + border-width: 12px 6px; +} +.label-lg.arrowed-in { + margin-left: 6px; +} +.label-lg.arrowed-in:before { + left: -6px; + border-width: 12px 6px; +} +.label-lg.arrowed-right { + margin-right: 6px; +} +.label-lg.arrowed-right:after { + right: -12px; + border-width: 12px 6px; +} +.label-lg.arrowed-in-right { + margin-right: 6px; +} +.label-lg.arrowed-in-right:after { + right: -6px; + border-width: 12px 6px; +} +.label-xlg { + padding: 0.3em 0.7em 0.4em; + font-size: 14px; + line-height: 1.3; + height: 28px; +} +.label-xlg.arrowed { + margin-left: 7px; +} +.label-xlg.arrowed:before { + left: -14px; + border-width: 14px 7px; +} +.label-xlg.arrowed-in { + margin-left: 7px; +} +.label-xlg.arrowed-in:before { + left: -7px; + border-width: 14px 7px; +} +.label-xlg.arrowed-right { + margin-right: 7px; +} +.label-xlg.arrowed-right:after { + right: -14px; + border-width: 14px 7px; +} +.label-xlg.arrowed-in-right { + margin-right: 7px; +} +.label-xlg.arrowed-in-right:after { + right: -7px; + border-width: 14px 7px; +} +.label-sm { + padding: 0.2em 0.4em 0.3em; + font-size: 11px; + line-height: 1; + height: 18px; +} +.label-sm.arrowed { + margin-left: 4px; +} +.label-sm.arrowed:before { + left: -8px; + border-width: 9px 4px; +} +.label-sm.arrowed-in { + margin-left: 4px; +} +.label-sm.arrowed-in:before { + left: -4px; + border-width: 9px 4px; +} +.label-sm.arrowed-right { + margin-right: 4px; +} +.label-sm.arrowed-right:after { + right: -8px; + border-width: 9px 4px; +} +.label-sm.arrowed-in-right { + margin-right: 4px; +} +.label-sm.arrowed-in-right:after { + right: -4px; + border-width: 9px 4px; +} +.label > span, +.label > .ace-icon { + line-height: 1; + vertical-align: bottom; +} +.label.label-white { + color: #879da9; + border: 1px solid #abbac3; + background-color: #f2f5f6; + border-right-width: 1px; + border-left-width: 2px; +} +.label-white.label-success { + color: #7b9e6c; + border-color: #9fbf92; + background-color: #edf3ea; +} +.label-white.label-warning { + color: #d9993e; + border-color: #e4ae62; + background-color: #fef6eb; +} +.label-white.label-primary { + color: #6688a6; + border-color: #8aafce; + background-color: #eaf2f8; +} +.label-white.label-danger { + color: #bd7f75; + border-color: #d28679; + background-color: #fcf4f2; +} +.label-white.label-info { + color: #4e7a8f; + border-color: #7aa1b4; + background-color: #eaf3f7; +} +.label-white.label-inverse { + color: #404040; + border-color: #737373; + background-color: #ededed; +} +.label-white.label-pink { + color: #af6f87; + border-color: #d299ae; + background-color: #fbeff4; +} +.label-white.label-purple { + color: #7d6fa2; + border-color: #b7b1c6; + background-color: #efedf5; +} +.label-white.label-yellow { + color: #cfa114; + border-color: #ecd181; + background-color: #fdf7e4; +} +.label-white.label-grey { + color: #878787; + border-color: #cecece; + background-color: #ededed; +} +@media screen and (-webkit-min-device-pixel-ratio: 1.08) and (-webkit-max-device-pixel-ratio: 1.15), screen and (min--moz-device-pixel-ratio: 1.08) and (max--moz-device-pixel-ratio: 1.15) { + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed:before { + border-width: 10.5px 6px; + left: -11px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-right:after { + border-width: 10.5px 6px; + right: -11px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in:before { + border-width: 10.5px 5px 10px; + left: -6px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in-right:after { + border-width: 10.5px 5px 10px; + right: -6px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.3) and (-webkit-max-device-pixel-ratio: 1.4), screen and (min--moz-device-pixel-ratio: 1.3) and (max--moz-device-pixel-ratio: 1.4) { + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed:before { + border-width: 10px 6px 10px; + left: -12px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-right:after { + border-width: 10px 6px 10px; + right: -12px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in:before { + border-width: 10px 5px 10px; + left: -6px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in-right:after { + border-width: 10px 5px 10px; + right: -6px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 1.6), screen and (min--moz-device-pixel-ratio: 1.5) and (max--moz-device-pixel-ratio: 1.6) { + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed:before { + border-width: 10px 6px; + left: -12px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-right:after { + border-width: 10px 6px; + right: -12px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.7) and (-webkit-max-device-pixel-ratio: 1.8), screen and (min--moz-device-pixel-ratio: 1.7) and (max--moz-device-pixel-ratio: 1.8) { + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed:before { + border-width: 10px 6px; + left: -11.5px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-right:after { + border-width: 10px 6px; + right: -11.5px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in:before { + border-width: 10px 5px; + left: -6px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in-right:after { + border-width: 10px 5px; + right: -6px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 0.8) and (-webkit-max-device-pixel-ratio: 0.9), screen and (min--moz-device-pixel-ratio: 0.8) and (max--moz-device-pixel-ratio: 0.9) { + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed:before { + border-width: 11px 6px; + left: -11.5px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-right:after { + border-width: 11px 6px; + right: -11.5px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in:before { + border-width: 11px 5px; + left: -6px; + } + .label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in-right:after { + border-width: 11px 5px; + right: -6px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.08) and (-webkit-max-device-pixel-ratio: 1.15), screen and (min--moz-device-pixel-ratio: 1.08) and (max--moz-device-pixel-ratio: 1.15) { + .label-lg.arrowed:before { + left: -11px; + } + .label-lg.arrowed-right:after { + right: -11px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.7) and (-webkit-max-device-pixel-ratio: 1.8), screen and (min--moz-device-pixel-ratio: 1.7) and (max--moz-device-pixel-ratio: 1.8) { + .label-lg.arrowed:before { + left: -11.5px; + } + .label-lg.arrowed-right:after { + right: -11.5px; + } + .label-lg.arrowed-in:before { + border-width: 12.5px 6px 12px; + left: -6px; + } + .label-lg.arrowed-in-right:after { + border-width: 12.5px 6px 12px; + right: -6px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.08) and (-webkit-max-device-pixel-ratio: 1.15), screen and (min--moz-device-pixel-ratio: 1.08) and (max--moz-device-pixel-ratio: 1.15) { + .label-xlg.arrowed:before { + left: -13px; + } + .label-xlg.arrowed-right:after { + right: -13px; + } + .label-xlg.arrowed-in:before { + border-width: 14px 7px 14.5px; + } + .label-xlg.arrowed-in-right:after { + border-width: 14px 7px 14.5px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.2) and (-webkit-max-device-pixel-ratio: 1.3), screen and (min--moz-device-pixel-ratio: 1.2) and (max--moz-device-pixel-ratio: 1.3) { + .label-xlg.arrowed:before { + border-width: 14.5px 7px; + left: -13.5px; + } + .label-xlg.arrowed-right:after { + border-width: 14.5px 7px; + right: -13.5px; + } + .label-xlg.arrowed-in:before { + border-width: 14.5px 7px 14.5px; + } + .label-xlg.arrowed-in-right:after { + border-width: 14.5px 7px 14.5px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.3) and (-webkit-max-device-pixel-ratio: 1.4), screen and (-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 1.6), screen and (min--moz-device-pixel-ratio: 1.3) and (max--moz-device-pixel-ratio: 1.4), screen and (min--moz-device-pixel-ratio: 1.5) and (max--moz-device-pixel-ratio: 1.6) { + .label-xlg.arrowed:before { + border-width: 14.5px 7.5px; + left: -14.5px; + } + .label-xlg.arrowed-right:after { + border-width: 14.5px 7.5px; + right: -14.5px; + } + .label-xlg.arrowed-in:before { + border-width: 14.5px 7px; + } + .label-xlg.arrowed-in-right:after { + border-width: 14.5px 7px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.08) and (-webkit-max-device-pixel-ratio: 1.15), screen and (min--moz-device-pixel-ratio: 1.08) and (max--moz-device-pixel-ratio: 1.15) { + .label-sm.arrowed:before { + border-width: 9px 5px; + left: -9px; + } + .label-sm.arrowed-right:after { + border-width: 9px 5px; + right: -9px; + } + .label-sm.arrowed-in:before { + border-width: 10px 4px; + } + .label-sm.arrowed-in-right:after { + border-width: 10px 4px; + } +} +@media screen and (-webkit-min-device-pixel-ratio: 1.2) and (-webkit-max-device-pixel-ratio: 1.3), screen and (min--moz-device-pixel-ratio: 1.2) and (max--moz-device-pixel-ratio: 1.3) { + .label-sm.arrowed:before { + border-width: 9.5px 5px; + left: -10px; + } + .label-sm.arrowed-right:after { + border-width: 9.5px 5px; + right: -10px; + } + .label-sm.arrowed-in:before { + border-width: 9.5px 4px; + } + .label-sm.arrowed-in-right:after { + border-width: 9.5px 4px; + } +} +.icon-white, +.nav-pills > .active > a > .ace-icon, +.nav-list > .active > a > .ace-icon, +.navbar-inverse .nav > .active > a > .ace-icon, +.dropdown-menu > li > a:hover > .ace-icon, +.dropdown-menu > li > a:focus > .ace-icon, +.dropdown-menu > .active > a > .ace-icon, +.dropdown-submenu:hover > a > .ace-icon, +.dropdown-submenu:focus > a > .ace-icon { + background-image: none; +} +.dropdown-menu { + border-radius: 0 !important; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.dropdown-menu > li > a { + font-size: 13px; + padding-left: 11px; + padding-right: 11px; + padding-bottom: 4px; + margin-bottom: 1px; + margin-top: 1px; +} +.dropdown-menu.dropdown-only-icon { + min-width: 50px; +} +.dropdown-menu.dropdown-only-icon > li { + margin: 0 4px; +} +.dropdown-menu.dropdown-only-icon > li > a .ace-icon { + width: 18px; + display: inline-block; + text-align: center; +} +.dropdown-menu.dropdown-only-icon > li > a .icon-2x { + width: 36px; +} +.dropdown-menu > li:hover > a, +.dropdown-menu > li > a:focus, +.dropdown-menu > li > a:active, +.dropdown-menu > li.active > a, +.dropdown-menu > li.active:hover > a { + background: #4f99c6; + color: #ffffff; +} +.dropdown-default > li:hover > a, +.dropdown-default > li > a:focus, +.dropdown-default > li > a:active, +.dropdown-default > li.active > a, +.dropdown-default > li.active:hover > a { + background: #abbac3; + color: #ffffff; +} +.dropdown-info > li:hover > a, +.dropdown-info > li > a:focus, +.dropdown-info > li > a:active, +.dropdown-info > li.active > a, +.dropdown-info > li.active:hover > a { + background: #6fb3e0; + color: #ffffff; +} +.dropdown-primary > li:hover > a, +.dropdown-primary > li > a:focus, +.dropdown-primary > li > a:active, +.dropdown-primary > li.active > a, +.dropdown-primary > li.active:hover > a { + background: #428bca; + color: #ffffff; +} +.dropdown-success > li:hover > a, +.dropdown-success > li > a:focus, +.dropdown-success > li > a:active, +.dropdown-success > li.active > a, +.dropdown-success > li.active:hover > a { + background: #87b87f; + color: #ffffff; +} +.dropdown-warning > li:hover > a, +.dropdown-warning > li > a:focus, +.dropdown-warning > li > a:active, +.dropdown-warning > li.active > a, +.dropdown-warning > li.active:hover > a { + background: #ffa24d; + color: #ffffff; +} +.dropdown-danger > li:hover > a, +.dropdown-danger > li > a:focus, +.dropdown-danger > li > a:active, +.dropdown-danger > li.active > a, +.dropdown-danger > li.active:hover > a { + background: #d15b47; + color: #ffffff; +} +.dropdown-inverse > li:hover > a, +.dropdown-inverse > li > a:focus, +.dropdown-inverse > li > a:active, +.dropdown-inverse > li.active > a, +.dropdown-inverse > li.active:hover > a { + background: #555555; + color: #ffffff; +} +.dropdown-purple > li:hover > a, +.dropdown-purple > li > a:focus, +.dropdown-purple > li > a:active, +.dropdown-purple > li.active > a, +.dropdown-purple > li.active:hover > a { + background: #9585bf; + color: #ffffff; +} +.dropdown-pink > li:hover > a, +.dropdown-pink > li > a:focus, +.dropdown-pink > li > a:active, +.dropdown-pink > li.active > a, +.dropdown-pink > li.active:hover > a { + background: #d6487e; + color: #ffffff; +} +.dropdown-grey > li:hover > a, +.dropdown-grey > li > a:focus, +.dropdown-grey > li > a:active, +.dropdown-grey > li.active > a, +.dropdown-grey > li.active:hover > a { + background: #a0a0a0; + color: #ffffff; +} +.dropdown-light > li:hover > a, +.dropdown-light > li > a:focus, +.dropdown-light > li > a:active, +.dropdown-light > li.active > a, +.dropdown-light > li.active:hover > a { + background: #e7e7e7; + color: #333333; +} +.dropdown-lighter > li:hover > a, +.dropdown-lighter > li > a:focus, +.dropdown-lighter > li > a:active, +.dropdown-lighter > li.active > a, +.dropdown-lighter > li.active:hover > a { + background: #efefef; + color: #444444; +} +.dropdown-lightest > li:hover > a, +.dropdown-lightest > li > a:focus, +.dropdown-lightest > li > a:active, +.dropdown-lightest > li.active > a, +.dropdown-lightest > li.active:hover > a { + background: #f3f3f3; + color: #444444; +} +.dropdown-yellow > li:hover > a, +.dropdown-yellow > li > a:focus, +.dropdown-yellow > li > a:active, +.dropdown-yellow > li.active > a, +.dropdown-yellow > li.active:hover > a { + background: #fee188; + color: #444444; +} +.dropdown-yellow2 > li:hover > a, +.dropdown-yellow2 > li > a:focus, +.dropdown-yellow2 > li > a:active, +.dropdown-yellow2 > li.active > a, +.dropdown-yellow2 > li.active:hover > a { + background: #f9e8b3; + color: #444444; +} +.dropdown-light-blue > li:hover > a, +.dropdown-light-blue > li > a:focus, +.dropdown-light-blue > li > a:active, +.dropdown-light-blue > li.active > a, +.dropdown-light-blue > li.active:hover > a { + background: #ecf3f9; + color: #445566; +} +.dropdown-menu.dropdown-close { + top: 92%; + left: -5px; +} +.dropdown-menu.dropdown-close.dropdown-menu-right { + left: auto; + right: -5px; +} +.dropdown-menu.dropdown-closer { + top: 80%; + left: -10px; +} +.dropdown-menu.dropdown-closer.dropdown-menu-right { + right: -10px; + left: auto; +} +.dropup > .dropdown-menu, +.navbar-fixed-bottom .dropdown > .dropdown-menu { + top: auto !important; + bottom: 100%; +} +.dropup > .dropdown-menu.dropdown-close, +.navbar-fixed-bottom .dropdown > .dropdown-menu.dropdown-close { + bottom: 92%; +} +.dropup > .dropdown-menu.dropdown-closer, +.navbar-fixed-bottom .dropdown > .dropdown-menu.dropdown-closer { + bottom: 80%; +} +.dropdown-submenu > .dropdown-menu { + border-radius: 0; +} +.dropdown-submenu > a:after { + margin-right: -5px; +} +.dropdown-50 { + min-width: 50px; +} +.dropdown-75 { + min-width: 75px; +} +.dropdown-100 { + min-width: 100px; +} +.dropdown-125 { + min-width: 125px; +} +.dropdown-150 { + min-width: 150px; +} +.dropdown-hover { + position: relative; +} +.dropdown-hover:before { + display: block; + content: ""; + position: absolute; + top: -2px; + bottom: -2px; + left: -2px; + right: -2px; + background-color: transparent; +} +.dropdown-hover:hover > .dropdown-menu { + display: block; +} +.dropdown-menu > .dropdown-hover > .dropdown-menu { + top: -5px; + left: 99%; + right: auto; +} +.dropdown-menu > .dropdown-hover > .dropdown-menu.dropdown-menu-right { + left: auto; + right: 99%; +} +.dropup .dropdown-menu > .dropdown-hover > .dropdown-menu, +.dropdown-menu > .dropdown-hover.dropup > .dropdown-menu { + top: auto; + bottom: -5px; +} +.dropdown-menu.dropdown-caret:before { + border-bottom: 7px solid rgba(0, 0, 0, 0.2); + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); + border-left: 7px solid transparent; + border-right: 7px solid transparent; + content: ""; + display: inline-block; + left: 9px; + position: absolute; + top: -7px; +} +.dropdown-menu.dropdown-caret:after { + border-bottom: 6px solid #FFF; + -moz-border-bottom-colors: #FFF; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + content: ""; + display: inline-block; + left: 10px; + position: absolute; + top: -6px; +} +.dropdown-menu.dropdown-menu-right.dropdown-caret:before, +.dropdown-menu.dropdown-caret-right.dropdown-caret:before { + left: auto; + right: 9px; +} +.dropdown-menu.dropdown-menu-right.dropdown-caret:after, +.dropdown-menu.dropdown-caret-right.dropdown-caret:after { + left: auto; + right: 10px; +} +.dropup > .dropdown-menu.dropdown-caret:before, +.navbar-fixed-bottom .dropdown > .dropdown-menu.dropdown-caret:before { + border-bottom-width: 0; + border-top: 7px solid rgba(0, 0, 0, 0.2); + -moz-border-top-colors: rgba(0, 0, 0, 0.2); + bottom: -7px; + top: auto; +} +.dropup > .dropdown-menu.dropdown-caret:after, +.navbar-fixed-bottom .dropdown > .dropdown-menu.dropdown-caret:after { + border-bottom-width: 0; + border-top: 6px solid #FFF; + -moz-border-top-colors: #FFF; + bottom: -6px; + top: auto; +} +.dropdown-colorpicker > .dropdown-menu { + padding: 4px; + min-width: 130px; + max-width: 130px; + top: 80%; + left: -7px; +} +.dropdown-colorpicker > .dropdown-menu.dropdown-menu-right { + right: -7px; + left: auto; +} +.dropdown-colorpicker > .dropdown-menu > li { + display: block; + float: left; + width: 20px; + height: 20px; + margin: 2px; +} +.dropdown-colorpicker > .dropdown-menu > li > .colorpick-btn { + display: block; + width: 20px; + height: 20px; + margin: 0; + padding: 0; + border-radius: 0; + position: relative; + -webkit-transition: all ease 0.1s; + -o-transition: all ease 0.1s; + transition: all ease 0.1s; +} +.dropdown-colorpicker > .dropdown-menu > li > .colorpick-btn:hover { + text-decoration: none; + opacity: 0.8; + filter: alpha(opacity=80); + -webkit-transform: scale(1.08, 1.08); + -ms-transform: scale(1.08, 1.08); + -o-transform: scale(1.08, 1.08); + transform: scale(1.08, 1.08); +} +.dropdown-colorpicker > .dropdown-menu > li > .colorpick-btn.selected:after { + content: "\f00c"; + display: inline-block; + font-family: FontAwesome; + font-size: 11px; + color: #FFF; + position: absolute; + left: 0; + right: 0; + text-align: center; + line-height: 20px; +} +.btn-colorpicker { + display: inline-block; + width: 20px; + height: 20px; + background-color: #DDD; + vertical-align: middle; + border-radius: 0; +} +.dropdown-navbar { + padding: 0; + width: 240px; + -webkit-box-shadow: 0 2px 4px rgba(30, 30, 100, 0.25); + box-shadow: 0 2px 4px rgba(30, 30, 100, 0.25); + border-color: #bcd4e5; +} +.dropdown-navbar > li { + padding: 0 8px; + background-color: #FFF; +} +.dropdown-navbar > li.dropdown-header { + text-shadow: none; + padding-top: 0; + padding-bottom: 0; + line-height: 34px; + font-size: 13px; + font-weight: bold; + text-transform: none; + border-bottom: 1px solid; +} +.dropdown-navbar > li > .ace-icon, +.dropdown-navbar > li > a > .ace-icon { + margin-right: 5px !important; + color: #555; + font-size: 14px; +} +.dropdown-navbar > li > a { + padding: 10px 2px; + margin: 0; + border-top: 1px solid; + font-size: 12px; + line-height: 16px; + color: #555 !important; + background-color: transparent !important; + white-space: normal; +} +.dropdown-navbar > li > a .progress { + margin-bottom: 0; + margin-top: 4px; +} +.dropdown-navbar > li > a .badge { + line-height: 16px; + padding-right: 4px; + padding-left: 4px; + font-size: 12px; +} +.dropdown-navbar > li:first-child > a, +.dropdown-navbar > li.dropdown-header + li > a { + border-top-width: 0; +} +.dropdown-navbar > li.dropdown-footer > a { + color: #4F99C6 !important; + text-align: center; + font-size: 13px; +} +.dropdown-navbar > li.dropdown-footer > a:hover { + background-color: #FFF; + text-decoration: underline; +} +.dropdown-navbar > li.dropdown-footer > a:hover > .ace-icon { + text-decoration: none; +} +.dropdown-navbar > li:hover { + background-color: #f4f9fc; +} +.dropdown-navbar > li.dropdown-header { + background-color: #ecf2f7; + color: #8090a0; + border-bottom-color: #bcd4e5; +} +.dropdown-navbar > li.dropdown-header > .ace-icon { + color: #8090a0; +} +.dropdown-navbar > li > a { + border-top-color: #e4ecf3; +} +.dropdown-navbar.navbar-pink { + border-color: #e5bcd4; +} +.dropdown-navbar.navbar-pink > li:hover { + background-color: #fcf4f9; +} +.dropdown-navbar.navbar-pink > li.dropdown-header { + background-color: #f7ecf2; + color: #b471a0; + border-bottom-color: #e5bcd4; +} +.dropdown-navbar.navbar-pink > li.dropdown-header > .ace-icon { + color: #c06090; +} +.dropdown-navbar.navbar-pink > li > a { + border-top-color: #f3e4ec; +} +.dropdown-navbar.navbar-grey { + border-color: #e5e5e5; +} +.dropdown-navbar.navbar-grey > li:hover { + background-color: #f8f8f8; +} +.dropdown-navbar.navbar-grey > li.dropdown-header { + background-color: #f2f2f2; + color: #3a87ad; + border-bottom-color: #e5e5e5; +} +.dropdown-navbar.navbar-grey > li.dropdown-header > .ace-icon { + color: #3a87ad; +} +.dropdown-navbar.navbar-grey > li > a { + border-top-color: #eeeeee; +} +.dropdown-navbar.navbar-green { + border-color: #b4d5ac; +} +.dropdown-navbar.navbar-green > li:hover { + background-color: #f4f9ef; +} +.dropdown-navbar.navbar-green > li.dropdown-header { + background-color: #ebf7e4; + color: #88aa66; + border-bottom-color: #b4d5ac; +} +.dropdown-navbar.navbar-green > li.dropdown-header > .ace-icon { + color: #90c060; +} +.dropdown-navbar.navbar-green > li > a { + border-top-color: #ecf3e4; +} +.dropdown-navbar [class*="btn"].ace-icon { + display: inline-block; + margin: 0 5px 0 0; + width: 24px; + text-align: center; + padding-left: 0; + padding-right: 0; +} +.dropdown-navbar .msg-photo { + max-width: 42px; + float: left; + margin-top: 2px; +} +.dropdown-navbar .msg-body { + display: block; + line-height: 20px; + white-space: normal; + vertical-align: middle; + margin-left: 50px; +} +.dropdown-navbar .msg-title { + display: inline-block; + line-height: 14px; +} +.dropdown-navbar .msg-time { + display: block; + font-size: 11px; + color: #777; +} +.dropdown-navbar .msg-time > .ace-icon { + font-size: 14px; + color: #555; +} +.dropdown-navbar > .dropdown-content { + padding: 0; +} +.dropdown-navbar > .dropdown-content .dropdown-navbar { + list-style: none; + margin: 0; + padding: 0 !important; + -webkit-box-shadow: none; + box-shadow: none; + width: auto; + display: block; + float: none; + border-width: 0; + position: static; + z-index: auto; +} +.dropdown-navbar .nav-tabs { + border-width: 0; + box-shadow: none; + background-color: #F9F9F9 !important; + top: auto; + width: 100%; +} +.dropdown-navbar .nav-tabs > li { + display: table-cell; + width: 1%; + float: none !important; +} +.dropdown-navbar .nav-tabs > li > a { + margin: 0 0 0 1px !important; + text-align: center; + box-shadow: none !important; + background-color: #F9F9F9 !important; + border-width: 0 !important; + border-bottom: 2px solid #BECAD1 !important; +} +.dropdown-navbar .nav-tabs > li > a:before { + display: block; + content: ""; + position: absolute; + left: -1px; + top: 3px; + bottom: 3px; + width: 1px; + background-color: #BECAD1; +} +.dropdown-navbar .nav-tabs > li:first-child > a { + margin-left: 0 !important; +} +.dropdown-navbar .nav-tabs > li:first-child > a:before { + display: none; +} +.dropdown-navbar .nav-tabs > li.active > a { + border-bottom: 2px solid #79B0CE !important; + color: #5085AF !important; + background-color: #ECF2F7 !important; +} +.dropdown-navbar .tab-content { + padding: 0 !important; + border-color: #FFF !important; +} +.dropdown-navbar .tab-content .dropdown-menu { + display: block; + position: static; + margin: 0 !important; + padding-top: 2px; + border-color: #FFF !important; + box-shadow: none !important; + width: 100%; +} +.dropdown-navbar.navbar-pink .nav-tabs > li.active > a { + border-bottom: 2px solid #E5BCD4 !important; + color: #C06090 !important; + background-color: #F7ECF2 !important; +} +.dropdown-navbar.navbar-pink .nav-tabs > li:not(.active) > a:hover { + color: #BA7396; +} +.dropdown-navbar.navbar-pink .nav-tabs > li > a:before { + background-color: #CEBBCB; +} +.dropdown-navbar.navbar-pink .nav-tabs > li > a { + border-bottom-color: #CEBBCD !important; +} +.form-line { + margin-bottom: 24px; + padding-bottom: 12px; + border-bottom: 1px solid #EEE; +} +.form-actions { + display: block; + background-color: #F5F5F5; + border-top: 1px solid #E5E5E5; + margin-bottom: 20px; + margin-top: 20px; + padding: 19px 20px 20px; +} +.help-button { + display: inline-block; + height: 22px; + width: 22px; + line-height: 22px; + text-align: center; + padding: 0; + background-color: #65bcda; + color: #FFF; + font-size: 12px; + font-weight: bold; + cursor: default; + margin-left: 4px; + border-radius: 100%; + border-color: #FFF; + border: 2px solid #FFF; + -webkit-box-shadow: 0px 1px 0px 1px rgba(0, 0, 0, 0.2); + box-shadow: 0px 1px 0px 1px rgba(0, 0, 0, 0.2); +} +.help-button:hover { + background-color: #65bcda; + text-shadow: none; +} +label { + font-weight: normal; + font-size: 14px; +} +.form-group > label[class*="col-"] { + margin-bottom: 4px; +} +td > label, +th > label { + margin-bottom: 0; + line-height: inherit; + vertical-align: middle; +} +label.inline { + margin-bottom: 3px; +} +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"] { + border-radius: 0 !important; + color: #858585; + background-color: #ffffff; + border: 1px solid #d5d5d5; + padding: 5px 4px 6px; + font-size: 14px; + font-family: inherit; + -webkit-box-shadow: none !important; + box-shadow: none !important; + -webkit-transition-duration: 0.1s; + transition-duration: 0.1s; +} +textarea:hover, +input[type="text"]:hover, +input[type="password"]:hover, +input[type="datetime"]:hover, +input[type="datetime-local"]:hover, +input[type="date"]:hover, +input[type="month"]:hover, +input[type="time"]:hover, +input[type="week"]:hover, +input[type="number"]:hover, +input[type="email"]:hover, +input[type="url"]:hover, +input[type="search"]:hover, +input[type="tel"]:hover, +input[type="color"]:hover { + border-color: #b5b5b5; +} +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus { + -webkit-box-shadow: none; + box-shadow: none; + color: #696969; + border-color: #f59942; + background-color: #ffffff; + outline: none; +} +input::-webkit-input-placeholder, +.form-control::-webkit-input-placeholder { + color: #c0c0c0; +} +input:-moz-placeholder, +.form-control:-moz-placeholder { + color: #c0c0c0; + opacity: 1; +} +input::-moz-placeholder, +.form-control::-moz-placeholder { + color: #c0c0c0; + opacity: 1; +} +input:-ms-input-placeholder, +.form-control:-ms-input-placeholder { + color: #c0c0c0; +} +.form-control, +select { + border-radius: 0; + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #858585; + background-color: #ffffff; + border: 1px solid #d5d5d5; +} +.form-control:focus, +select:focus { + color: #696969; + border-color: #f59942; + background-color: #ffffff; + outline: none; +} +textarea.form-control { + padding: 5px 9px; +} +select { + padding: 3px 4px; + height: 30px; +} +select.form-control { + padding: 4px 6px; +} +select[multiple], +select.form-control[multiple] { + height: auto; +} +select.input-sm { + border-radius: 0; + padding: 2px 3px; +} +select.input-lg { + border-radius: 0; + padding: 6px 8px; +} +input.block { + display: block; + margin-bottom: 9px; +} +textarea.autosize-transition { + -webkit-transition-duration: "height 0.2s"; + transition-duration: "height 0.2s"; +} +.limiterBox { + border: 1px solid #222; + border-top: none; + background-color: #333; + padding: 3px 6px; + font-size: 13px; + color: #FFF; + margin-top: 6px; +} +.limiterBox:after { + display: none; +} +.limiterBox:before { + display: block; + content: ""; + position: absolute; + width: 0; + height: 0; + top: -8px; + left: 50%; + margin-left: -5px; + border-color: transparent; + border-style: solid; + border-bottom-color: #333; + -moz-border-bottom-colors: #333; + border-width: 0 8px 8px; +} +select option, +select.form-control option { + padding: 3px 4px 5px; +} +select option:active, +select.form-control option:active, +select option:hover, +select.form-control option:hover, +select option:focus, +select.form-control option:focus { + background-color: #eeeeee; + color: #444; +} +select option.no-option, +select.form-control option.no-option { + padding: 1px 0; +} +input[disabled] { + color: #848484 !important; + background-color: #eeeeee !important; +} +input[disabled]:hover { + border-color: #d5d5d5 !important; +} +input[readonly] { + color: #939192; + background: #f5f5f5 !important; + cursor: default; +} +input[readonly]:hover { + border-color: #c3c3c3; +} +input[readonly]:focus { + -webkit-box-shadow: none; + box-shadow: none; + border-color: #aaaaaa; + background-color: #f9f9f9; +} +.help-inline { + font-size: 13px !important; +} +.input-icon { + position: relative; +} +span.input-icon { + display: inline-block; +} +.input-icon > input { + padding-left: 24px; + padding-right: 6px; +} +.input-icon.input-icon-right > input { + padding-left: 6px; + padding-right: 24px; +} +.input-icon > .ace-icon { + padding: 0 3px; + z-index: 2; + position: absolute; + top: 1px; + bottom: 1px; + left: 3px; + line-height: 30px; + display: inline-block; + color: #909090; + font-size: 16px; +} +.input-icon.input-icon-right > .ace-icon { + left: auto; + right: 3px; +} +.input-icon > input:focus + .ace-icon { + color: #579; +} +.input-icon ~ .help-inline { + padding-left: 8px; +} +.form-search .radio [type=radio] + label, +.form-inline .radio [type=radio] + label, +.form-search .checkbox [type=checkbox] + label, +.form-inline .checkbox [type=checkbox] + label { + float: left; + margin-left: -20px; +} +.form-search .form-search .radio [type=radio] + label, +.form-search .form-inline .radio [type=radio] + label, +.form-search .form-search .checkbox [type=checkbox] + label, +.form-search .form-inline .checkbox [type=checkbox] + label, +.form-inline .form-search .radio [type=radio] + label, +.form-inline .form-inline .radio [type=radio] + label, +.form-inline .form-search .checkbox [type=checkbox] + label, +.form-inline .form-inline .checkbox [type=checkbox] + label { + margin-left: 0; + margin-right: 3px; +} +.form-search .input-append .search-query:focus, +.form-search .input-prepend .search-query:focus { + -webkit-box-shadow: none; + box-shadow: none; +} +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + border-radius: 0; +} +.input-mini { + width: 60px; + max-width: 100%; +} +.input-small { + width: 90px; + max-width: 100%; +} +.input-medium, +.input-md { + width: 150px; + max-width: 100%; +} +.input-large { + width: 210px; + max-width: 100%; +} +.input-xlarge { + width: 270px; + max-width: 100%; +} +.input-xxlarge { + width: 530px; + max-width: 100%; +} +input.input-lg { + font-size: 18px; +} +input[type=checkbox].ace, +input[type=radio].ace { + opacity: 0; + position: absolute; + z-index: 1; + width: 18px; + height: 18px; + cursor: pointer; +} +label input[type=checkbox].ace, +label input[type=radio].ace { + z-index: -100 !important; + width: 1px !important; + height: 1px !important; + clip: rect(1px, 1px, 1px, 1px); + position: absolute; +} +input[type=checkbox].ace:checked, +input[type=radio].ace:checked, +input[type=checkbox].ace:focus, +input[type=radio].ace:focus { + outline: none !important; +} +input[type=checkbox].ace + .lbl, +input[type=radio].ace + .lbl { + position: relative; + display: inline-block; + margin: 0; + line-height: 20px; + min-height: 18px; + min-width: 18px; + font-weight: normal; + cursor: pointer; +} +input[type=checkbox].ace + .lbl::before, +input[type=radio].ace + .lbl::before { + cursor: pointer; + font-family: fontAwesome; + font-weight: normal; + font-size: 12px; + color: #32a3ce; + content: "\a0"; + background-color: #FAFAFA; + border: 1px solid #c8c8c8; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + /*, inset 0px -15px 10px -12px rgba(0,0,0,0.05);*/ + border-radius: 0; + display: inline-block; + text-align: center; + height: 16px; + line-height: 14px; + min-width: 16px; + margin-right: 1px; + position: relative; + top: -1px; +} +input[type=checkbox].ace:checked + .lbl::before, +input[type=radio].ace:checked + .lbl::before { + display: inline-block; + content: '\f00c'; + background-color: #F5F8FC; + border-color: #adb8c0; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0px -15px 10px -12px rgba(0, 0, 0, 0.05), inset 15px 10px -12px rgba(255, 255, 255, 0.1); +} +input[type=checkbox].ace:hover + .lbl::before, +input[type=radio].ace:hover + .lbl::before, +input[type=checkbox].ace + .lbl:hover::before, +input[type=radio].ace + .lbl:hover::before { + border-color: #ff893c; +} +input[type=checkbox].ace:active + .lbl::before, +input[type=radio].ace:active + .lbl::before, +input[type=checkbox].ace:checked:active + .lbl::before, +input[type=radio].ace:checked:active + .lbl::before { + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0px 1px 3px rgba(0, 0, 0, 0.1); +} +input[type=checkbox].ace.ace-checkbox-2 + .lbl::before, +input[type=radio].ace.ace-checkbox-2 + .lbl::before { + box-shadow: none; +} +input[type=checkbox].ace.ace-checkbox-2:checked + .lbl::before, +input[type=radio].ace.ace-checkbox-2:checked + .lbl::before { + background-color: #f9a021; + border-color: #f9a021; + color: #FFF; +} +input[type=checkbox].ace:disabled + .lbl::before, +input[type=radio].ace:disabled + .lbl::before, +input[type=checkbox].ace[disabled] + .lbl::before, +input[type=radio].ace[disabled] + .lbl::before, +input[type=checkbox].ace.disabled + .lbl::before, +input[type=radio].ace.disabled + .lbl::before { + background-color: #DDD !important; + border-color: #CCC !important; + box-shadow: none !important; + color: #BBB; +} +.checkbox label input[type=checkbox].ace + .lbl, +.radio label input[type=radio].ace + .lbl { + margin-left: -10px; +} +/** +input[type=radio].ace @{lbl}::before { + border-radius:100%; + font-size: 34px; + font-family: Helvetica, Arial, "Sans-Serif";//looks better but incosistent + line-height: 13px; +} +*/ +input[type=radio].ace + .lbl::before { + border-radius: 100%; + font-size: 10px; + font-family: FontAwesome; + text-shadow: 0 0 1px #32a3ce; + line-height: 15px; + height: 17px; + min-width: 17px; +} +input[type=radio].ace:checked + .lbl::before { + content: "\f111"; +} +input[type=checkbox].ace.input-lg + .lbl::before { + border-radius: 4px; + font-size: 16px; + height: 24px; + line-height: 21px; + min-width: 24px; + top: auto; +} +input[type=radio].ace.input-lg + .lbl::before { + font-size: 14px; + height: 24px; + line-height: 22px; + min-width: 24px; + top: auto; +} +/* CSS3 on/off switches */ +input[type=checkbox].ace.ace-switch { + width: 55px; + height: 25px; +} +input[type=checkbox].ace.ace-switch + .lbl { + margin: 0 4px; + min-height: 24px; +} +input[type=checkbox].ace.ace-switch + .lbl::before { + font-family: 'Open Sans'; + content: "ON\a0\a0\a0\a0\a0\a0\a0\a0\a0OFF"; + color: #999; + text-shadow: 0 0 0 #999; + font-weight: normal; + font-size: 11px; + line-height: 17px; + height: 20px; + overflow: hidden; + border-radius: 12px; + background-color: #F5F5F5; + -webkit-box-shadow: inset 0 1px 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 1px 0 rgba(0, 0, 0, 0.15); + border: 1px solid #CCC; + text-align: left; + float: left; + padding: 0; + width: 52px; + text-indent: -21px; + margin-right: 0; + -webkit-transition: text-indent .3s ease; + -o-transition: text-indent .3s ease; + transition: text-indent .3s ease; + top: auto; +} +input[type=checkbox].ace.ace-switch + .lbl::after { + font-family: 'Open Sans'; + content: 'III'; + font-size: 12px; + font-weight: normal; + letter-spacing: 0; + color: #AAA; + text-shadow: none; + background-color: #FFF; + border-radius: 100%; + width: 22px; + height: 22px; + line-height: 22px; + text-align: center; + position: absolute; + top: -2px; + left: -3px; + -webkit-box-shadow: 0px 1px 1px 1px rgba(0,0,0,.3); + box-shadow: 0px 1px 1px 1px rgba(0,0,0,.3); + -webkit-transition: left .3s ease; + -o-transition: left .3s ease; + transition: left .3s ease; +} +input[type=checkbox].ace.ace-switch:checked + .lbl::before { + text-indent: 8px; + color: #FFF; + text-shadow: 0 0 0 #FFF; + background-color: #8ab2c9; + border-color: #6a8ca8; +} +input[type=checkbox].ace.ace-switch:checked + .lbl::after { + left: 34px; + background-color: #FFF; + color: #98A0A5; +} +input[type=checkbox].ace.ace-switch.ace-switch-2 + .lbl::before { + content: "YES\a0\a0\a0\a0\a0\a0\a0\a0\a0NO"; +} +input[type=checkbox].ace.ace-switch.ace-switch-3 + .lbl::after { + font-family: FontAwesome; + font-size: 13px; + line-height: 22px; + content: "\f00d"; + top: -1px; + text-shadow: none; + padding: 0; + text-align: center; + color: #BBB; + letter-spacing: 0; +} +input[type=checkbox].ace.ace-switch.ace-switch-3:checked + .lbl::after { + content: "\f00c"; + color: #8AB2C9; + text-shadow: none; +} +input[type=checkbox].ace.ace-switch.ace-switch-4, +input[type=checkbox].ace.ace-switch.ace-switch-5 { + width: 60px; +} +input[type=checkbox].ace.ace-switch.ace-switch-4 + .lbl::before, +input[type=checkbox].ace.ace-switch.ace-switch-5 + .lbl::before { + content: "ON\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0OFF"; + font-size: 12px; + line-height: 21px; + height: 24px; + overflow: hidden; + border-radius: 12px; + background-color: #8b9aa3; + border: 1px solid #8b9aa3; + color: #FFF; + width: 56px; + text-indent: -25px; + text-shadow: 0 0 0 #FFF; + display: inline-block; + position: relative; + box-shadow: none; + -webkit-transition: all .3s ease; + -o-transition: all .3s ease; + transition: all .3s ease; +} +input[type=checkbox].ace.ace-switch.ace-switch-4 + .lbl::after, +input[type=checkbox].ace.ace-switch.ace-switch-5 + .lbl::after { + content: 'III'; + font-size: 11px; + position: absolute; + top: 2px; + left: 2px; + letter-spacing: 0; + width: 20px; + height: 20px; + line-height: 19px; + text-shadow: none !important; + color: #939393; + background-color: #FFF; + -webkit-transition: all .3s ease; + -o-transition: all .3s ease; + transition: all .3s ease; +} +input[type=checkbox].ace.ace-switch.ace-switch-4:checked + .lbl::before, +input[type=checkbox].ace.ace-switch.ace-switch-5:checked + .lbl::before { + text-indent: 9px; + background-color: #468fcc; + border-color: #468FCC; +} +input[type=checkbox].ace.ace-switch.ace-switch-4:checked + .lbl::after, +input[type=checkbox].ace.ace-switch.ace-switch-5:checked + .lbl::after { + left: 34px; + background-color: #FFF; + color: #848484; +} +input[type=checkbox].ace.ace-switch.ace-switch-5 + .lbl::before { + content: "YES\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0NO"; +} +input[type=checkbox].ace.ace-switch.ace-switch-5:checked + .lbl::before { + text-indent: 8px; +} +input[type=checkbox].ace.ace-switch.ace-switch-6 + .lbl { + position: relative; +} +input[type=checkbox].ace.ace-switch.ace-switch-6 + .lbl::before { + font-family: FontAwesome; + content: "\f00d"; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + box-shadow: none; + border-width: 0; + font-weight: lighter; + font-size: 16px; + border-radius: 12px; + display: inline-block; + background-color: #888; + color: #F2F2F2; + width: 52px; + height: 22px; + line-height: 21px; + text-indent: 32px; + -webkit-transition: background 0.1s ease; + -o-transition: background 0.1s ease; + transition: background 0.1s ease; +} +input[type=checkbox].ace.ace-switch.ace-switch-6 + .lbl::after { + content: ''; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + position: absolute; + top: 2px; + left: 3px; + border-radius: 12px; + box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + width: 18px; + height: 18px; + text-align: center; + background-color: #F2F2F2; + border: 4px solid #F2F2F2; + -webkit-transition: left 0.2s ease; + -o-transition: left 0.2s ease; + transition: left 0.2s ease; +} +input[type=checkbox].ace.ace-switch.ace-switch-6:checked + .lbl::before { + content: "\f00c"; + text-indent: 6px; + color: #FFF; + border-color: #b7d3e5; + background-color: #ff893c; +} +input[type=checkbox].ace.ace-switch.ace-switch-6:checked + .lbl::after { + left: 32px; + background-color: #FFF; + border: 4px solid #FFF; + text-shadow: 0 -1px 0 rgba(0, 200, 0, 0.25); +} +input[type=checkbox].ace.ace-switch.ace-switch-7 { + width: 75px; +} +input[type=checkbox].ace.ace-switch.ace-switch-7 + .lbl { + position: relative; +} +input[type=checkbox].ace.ace-switch.ace-switch-7 + .lbl::before { + content: "OFF\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0ON"; + font-weight: bolder; + font-size: 13px; + line-height: 20px; + background-color: #FFF; + border: 2px solid #AAA; + border-radius: 0; + box-shadow: none; + color: #AAA; + width: 74px; + height: 26px; + line-height: 22px; + overflow: hidden; + text-indent: 5px; + display: inline-block; + position: relative; + -webkit-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + transition: all 0.2s ease; +} +input[type=checkbox].ace.ace-switch.ace-switch-7 + .lbl::after { + content: '\f00d'; + font-family: FontAwesome; + font-size: 16px; + position: absolute; + top: 3px; + left: 39px; + width: 32px; + height: 20px; + line-height: 18px; + text-align: center; + padding: 0; + text-indent: 0; + background-color: #AAA; + color: #FFF; + border-radius: 0; + box-shadow: none; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +input[type=checkbox].ace.ace-switch.ace-switch-7:checked + .lbl::before { + color: #468fcc; + background-color: #FFF; + text-indent: -28px; + border-color: #6fb3e0; +} +input[type=checkbox].ace.ace-switch.ace-switch-7:checked + .lbl::after { + left: 3px; + content: '\f00c'; + background-color: #468fcc; + color: #FFF; +} +input[type=checkbox].ace.ace-switch + .lbl[data-lbl]::before { + content: attr(data-lbl); +} +input[type=checkbox].ace.ace-switch.btn-empty + .lbl::after { + content: ""; +} +input[type=checkbox].ace.ace-switch.btn-rotate + .lbl::after { + content: "\2261"; + line-height: 20px; + font-size: 17px; +} +input[type=checkbox].ace.ace-switch-4.btn-rotate + .lbl::after, +input[type=checkbox].ace.ace-switch-5.btn-rotate + .lbl::after { + line-height: 17px; +} +input[type=checkbox].ace.ace-switch.btn-flat + .lbl::before, +input[type=checkbox].ace.ace-switch.btn-flat + .lbl::after { + border-radius: 0 !important; +} +input[type=checkbox].ace.ace-switch.ace-switch-4 + .lbl::before, +input[type=checkbox].ace.ace-switch.ace-switch-5 + .lbl::before { + text-indent: -24px; +} +input[type=checkbox].ace.ace-switch.ace-switch-4:checked + .lbl::before, +input[type=checkbox].ace.ace-switch.ace-switch-5:checked + .lbl::before { + text-indent: 7px; +} +input.ace + .lbl.padding-16::before { + margin-right: 16px; +} +input.ace + .lbl.padding-14::before { + margin-right: 14px; +} +input.ace + .lbl.padding-12::before { + margin-right: 12px; +} +input.ace + .lbl.padding-10::before { + margin-right: 10px; +} +input.ace + .lbl.padding-8::before { + margin-right: 8px; +} +input.ace + .lbl.padding-6::before { + margin-right: 6px; +} +input.ace + .lbl.padding-4::before { + margin-right: 4px; +} +input.ace + .lbl.padding-2::before { + margin-right: 2px; +} +input.ace + .lbl.padding-0::before { + margin-right: 0px; +} +.ace-file-input { + display: block; + font-size: inherit; + position: relative; + height: 30px; +} +.ace-file-input input[type=file] { + position: absolute; + z-index: -999; + width: 1px; + height: 1px; + overflow: hidden; + opacity: 0; + filter: alpha(opacity=0); +} +.ace-file-input input[type=file]:focus { + outline: none; +} +.ace-file-input .ace-file-container { + display: block; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 30px; + background-color: #ffffff; + border: 1px solid #d5d5d5; + cursor: pointer; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: all 0.15s; + -o-transition: all 0.15s; + transition: all 0.15s; +} +.ace-file-input .ace-file-container:hover { + -webkit-box-shadow: none; + box-shadow: none; + border-color: #f59942; +} +.ace-file-input .ace-file-container:before { + display: inline-block; + content: attr(data-title); + position: absolute; + right: 0; + top: 0; + bottom: 0; + line-height: 24px; + text-align: center; + padding: 0 8px; + background-color: #6fb3e0; + color: #FFF; + font-size: 11px; + font-weight: bold; + border: 2px solid #FFF; + border-left-width: 4px; + -webkit-transition: all 0.3s; + -o-transition: all 0.3s; + transition: all 0.3s; +} +.ace-file-input .ace-file-container .ace-file-name { + display: inline-block; + height: 28px; + max-width: 80%; + white-space: nowrap; + overflow: hidden; + line-height: 28px; + color: #888888; + font-size: 13px; + vertical-align: top; + position: static; + padding-left: 30px; +} +.ace-file-input .ace-file-container .ace-file-name:after { + display: inline-block; + content: attr(data-title); +} +.ace-file-input .ace-file-container.selected { + right: 16px; +} +.ace-file-input .ace-file-container.selected .ace-file-name { + color: #666666; +} +.ace-file-input .ace-file-container .ace-icon { + display: inline-block; + position: absolute; + left: 0; + top: 0; + bottom: 0; + line-height: 24px; + width: 26px; + text-align: center; + font-family: FontAwesome; + font-size: 13px; + border: 2px solid #FFF; + color: #FFF; + -webkit-transition: all 0.1s; + -o-transition: all 0.1s; + transition: all 0.1s; + background-color: #d1d1d1; +} +.ace-file-input .ace-file-container.selected .ace-file-name .ace-icon { + background-color: #efad62; +} +.ace-file-input .ace-file-container.selected .ace-file-name .file-image { + background-color: #bd7a9d; +} +.ace-file-input .ace-file-container.selected .ace-file-name .file-video { + background-color: #87b87f; +} +.ace-file-input .ace-file-container.selected .ace-file-name .file-audio { + background-color: #8b7ac9; +} +.ace-file-input .ace-file-container.selected .ace-file-name .file-archive { + background-color: #efad62; +} +.ace-file-input .ace-file-container.hide-placeholder:before { + display: none; +} +.ace-file-input a:hover { + text-decoration: none; +} +.ace-file-input .remove { + position: absolute; + right: -8px; + top: 6px; + display: none; + width: 17px; + text-align: center; + height: 17px; + line-height: 15px; + font-size: 11px; + font-weight: normal; + background-color: #fb7142; + border-radius: 100%; + color: #FFF; + text-decoration: none; +} +.ace-file-input .ace-file-container.selected + .remove { + display: inline-block; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + .ace-file-input input[type=file] { + position: absolute; + width: 0; + height: 0; + } +} +.ace-file-input input[type=file].disabled + .ace-file-container, +.ace-file-input input[type=file][disabled] + .ace-file-container, +.ace-file-input input[type=file][readonly] + .ace-file-container { + cursor: not-allowed; + background-color: #EEE; +} +.ace-file-input input[type=file].disabled + .ace-file-container:hover, +.ace-file-input input[type=file][disabled] + .ace-file-container:hover, +.ace-file-input input[type=file][readonly] + .ace-file-container:hover { + -webkit-box-shadow: none; + box-shadow: none; + border-color: #E3E3E3; +} +.ace-file-input input[type=file].disabled + .ace-file-container:before, +.ace-file-input input[type=file][disabled] + .ace-file-container:before, +.ace-file-input input[type=file][readonly] + .ace-file-container:before { + border-color: #EEE; + background-color: #A1AAAF; +} +.ace-file-input input[type=file][readonly] + .ace-file-container { + cursor: default; +} +.ace-file-input .ace-file-overlay { + position: absolute; + top: -2px; + bottom: -2px; + left: -2px; + right: -10px; + z-index: 99; + background-color: rgba(0, 0, 0, 0.5); +} +.ace-file-input .ace-file-overlay > .overlay-content { + display: inline-block; + position: relative; + top: 10%; + left: 0; + right: 0; + text-align: center; +} +.ace-file-multiple { + height: auto; +} +.ace-file-multiple .ace-file-container { + position: relative; + height: auto; + border: 1px dashed #aaaaaa; + border-radius: 4px; + text-align: center; +} +.ace-file-multiple .ace-file-container:before { + display: inline-block; + content: attr(data-title); + position: relative; + right: 0; + left: 0; + margin: 12px; + line-height: 22px; + background-color: #FFF; + color: #CCC; + font-size: 18px; + font-weight: bold; + border-width: 0; +} +.ace-file-multiple .ace-file-container.selected .ace-file-name .ace-icon { + display: inline-block; + position: absolute; + left: 0; + top: 0; + bottom: 0; + line-height: 24px; + width: 26px; + text-align: center; + font-family: FontAwesome; + font-size: 13px; + border: 2px solid #FFF; + color: #FFF; + -webkit-transition: all 0.1s; + -o-transition: all 0.1s; + transition: all 0.1s; +} +.ace-file-multiple .ace-file-container .ace-file-name { + position: relative; + display: block; + padding: 0; + height: auto; + width: auto; + max-width: 100%; + margin: 0 4px; + border-bottom: 1px solid #DDD; + text-align: left; +} +.ace-file-multiple .ace-file-container .ace-file-name:first-child { + margin-top: 1px; +} +.ace-file-multiple .ace-file-container .ace-file-name:last-child { + border-bottom-width: 0; + margin-bottom: 1px; +} +.ace-file-multiple .ace-file-container .ace-file-name img { + padding: 2px; + border: 1px solid #D7D7D7; + background-color: #FFF; + background-repeat: no-repeat; + background-position: center; + margin: 4px 8px 4px 1px; +} +.ace-file-multiple .ace-file-container .ace-file-name:after { + display: none; +} +.ace-file-multiple .ace-file-container.selected .ace-file-name:after { + display: inline-block; + white-space: pre; +} +.ace-file-multiple .ace-file-container .ace-file-name img + .ace-icon, +.ace-file-multiple .ace-file-container.selected .ace-file-name img + .ace-icon { + display: none; +} +.ace-file-multiple .remove { + right: -11px; + top: -11px; + border: 3px solid #BBB; + border-radius: 32px; + background-color: #FFF; + color: red; + width: 23px; + height: 23px; + line-height: 15px; +} +.ace-file-multiple .ace-file-container.selected + .remove:hover { + border-color: #f4c0b1; +} +.ace-file-multiple .ace-file-overlay { + position: absolute; + top: -12px; + bottom: -6px; + left: -12px; + right: -12px; +} +.ace-file-multiple .ace-file-overlay > .overlay-content { + top: 20%; +} +.ace-file-multiple .ace-file-container .ace-file-name .ace-icon { + position: relative; + display: block; + text-align: center; + height: auto; + line-height: 64px; + width: auto; + font-size: 64px; + color: #D5D5D5; + margin: 4px 0; + background-color: transparent; +} +.ace-file-multiple .ace-file-container.selected:after { + display: none; +} +.ace-file-multiple .ace-file-container.selected .ace-file-name .ace-icon { + position: relative; + margin-right: 4px; + margin-left: 2px; + line-height: 24px; +} +.ace-file-multiple .ace-file-container .ace-file-name.large { + text-align: center; + border-bottom: 1px solid #222; + margin: 0 1px 3px; +} +.ace-file-multiple .ace-file-container .ace-file-name.large:last-child { + margin: 0 1px; +} +.ace-file-multiple .ace-file-container .ace-file-name.large:after { + position: absolute; + top: auto; + bottom: 0; + left: 0; + right: 0; + padding: 0 4px; + background-color: #555; + color: #FFF; + opacity: 0.8; + filter: alpha(opacity=80); +} +.ace-file-multiple .ace-file-container .ace-file-name.large img { + border-width: 0; + margin: 0 !important; + padding: 0; +} +.ace-file-multiple input[type=file].disabled + .ace-file-container:hover, +.ace-file-multiple input[type=file][disabled] + .ace-file-container:hover, +.ace-file-multiple input[type=file][readonly] + .ace-file-container:hover { + border-color: #AAA; +} +.ace-file-multiple input[type=file].disabled + .ace-file-container:before, +.ace-file-multiple input[type=file][disabled] + .ace-file-container:before, +.ace-file-multiple input[type=file][readonly] + .ace-file-container:before { + background-color: transparent; +} +.ace-file-multiple input[type=file].disabled + .ace-file-container .ace-icon, +.ace-file-multiple input[type=file][disabled] + .ace-file-container .ace-icon, +.ace-file-multiple input[type=file][readonly] + .ace-file-container .ace-icon { + border-color: #EEE; +} +.input-group .input-group-addon { + border-radius: 0 !important; +} +.form-group.has-success .input-group .input-group-addon { + border-color: #9cc573; +} +.form-group.has-error .input-group .input-group-addon { + border-color: #f2a696; +} +.form-group.has-warning .input-group .input-group-addon { + border-color: #e3c94c; +} +.form-group.has-info .input-group .input-group-addon { + border-color: #72aec2; +} +.input-group > .btn { + line-height: 20px; + padding: 0 6px; + border-radius: 0 !important; +} +.input-group > .btn.btn-sm { + line-height: 22px; +} +.input-group > .btn + .btn { + margin-left: 1px; +} +.input-group > .btn-group > .btn { + line-height: 23px; +} +.input-group > .btn-group > .btn.btn-sm { + line-height: 26px; +} +.input-group > .btn > .caret, +.input-group > .btn-group > .btn > .caret, +.input-group > .btn.btn-sm > .caret, +.input-group > .btn-group > .btn.btn-sm > .caret { + margin-top: 10px; +} +.input-group.input-group-compact { + width: 1px; +} +.form-group select, +.form-group textarea, +.form-group input[type="text"], +.form-group input[type="password"], +.form-group input[type="datetime"], +.form-group input[type="datetime-local"], +.form-group input[type="date"], +.form-group input[type="month"], +.form-group input[type="time"], +.form-group input[type="week"], +.form-group input[type="number"], +.form-group input[type="email"], +.form-group input[type="url"], +.form-group input[type="search"], +.form-group input[type="tel"], +.form-group input[type="color"] { + background: #FFF; +} +.form-group.has-success input, +.form-group.has-success select, +.form-group.has-success textarea { + border-color: #9cc573; + color: #8bad4c; + -webkit-box-shadow: none; + box-shadow: none; +} +.form-group.has-success input:focus, +.form-group.has-success select:focus, +.form-group.has-success textarea:focus { + -webkit-box-shadow: 0px 0px 0px 2px rgba(130, 188, 58, 0.3); + box-shadow: 0px 0px 0px 2px rgba(130, 188, 58, 0.3); + color: #6f8a3c; + border-color: #779c52; + background-color: #f4f9f0; +} +.form-group.has-success input:focus + .ace-icon, +.form-group.has-success select:focus + .ace-icon, +.form-group.has-success textarea:focus + .ace-icon { + color: #8bad4c; +} +.form-group.has-success .ace-icon { + color: #8bad4c; +} +.form-group.has-success .btn .ace-icon { + color: inherit; +} +.form-group.has-success .control-label, +.form-group.has-success .help-block, +.form-group.has-success .help-inline { + color: #7ba065; +} +.form-group.has-info input, +.form-group.has-info select, +.form-group.has-info textarea { + border-color: #72aec2; + color: #4b89aa; + -webkit-box-shadow: none; + box-shadow: none; +} +.form-group.has-info input:focus, +.form-group.has-info select:focus, +.form-group.has-info textarea:focus { + -webkit-box-shadow: 0px 0px 0px 2px rgba(58, 120, 188, 0.3); + box-shadow: 0px 0px 0px 2px rgba(58, 120, 188, 0.3); + color: #3b6c87; + border-color: #488ea5; + background-color: #f1f7f9; +} +.form-group.has-info input:focus + .ace-icon, +.form-group.has-info select:focus + .ace-icon, +.form-group.has-info textarea:focus + .ace-icon { + color: #4b89aa; +} +.form-group.has-info .ace-icon { + color: #4b89aa; +} +.form-group.has-info .btn .ace-icon { + color: inherit; +} +.form-group.has-info .control-label, +.form-group.has-info .help-block, +.form-group.has-info .help-inline { + color: #657ba0; +} +.form-group.has-error input, +.form-group.has-error select, +.form-group.has-error textarea { + border-color: #f2a696; + color: #d68273; + -webkit-box-shadow: none; + box-shadow: none; +} +.form-group.has-error input:focus, +.form-group.has-error select:focus, +.form-group.has-error textarea:focus { + -webkit-box-shadow: 0px 0px 0px 2px rgba(219, 137, 120, 0.3); + box-shadow: 0px 0px 0px 2px rgba(219, 137, 120, 0.3); + color: #ca5f4c; + border-color: #d77b68; + background-color: #fef9f8; +} +.form-group.has-error input:focus + .ace-icon, +.form-group.has-error select:focus + .ace-icon, +.form-group.has-error textarea:focus + .ace-icon { + color: #d68273; +} +.form-group.has-error .ace-icon { + color: #d68273; +} +.form-group.has-error .btn .ace-icon { + color: inherit; +} +.form-group.has-error .control-label, +.form-group.has-error .help-block, +.form-group.has-error .help-inline { + color: #d16e6c; +} +.form-group.has-warning input, +.form-group.has-warning select, +.form-group.has-warning textarea { + border-color: #e3c94c; + color: #d3bd50; + -webkit-box-shadow: none; + box-shadow: none; +} +.form-group.has-warning input:focus, +.form-group.has-warning select:focus, +.form-group.has-warning textarea:focus { + -webkit-box-shadow: 0px 0px 0px 2px rgba(216, 188, 65, 0.3); + box-shadow: 0px 0px 0px 2px rgba(216, 188, 65, 0.3); + color: #c0a830; + border-color: #d5b630; + background-color: #fdfbf3; +} +.form-group.has-warning input:focus + .ace-icon, +.form-group.has-warning select:focus + .ace-icon, +.form-group.has-warning textarea:focus + .ace-icon { + color: #d3bd50; +} +.form-group.has-warning .ace-icon { + color: #d3bd50; +} +.form-group.has-warning .btn .ace-icon { + color: inherit; +} +.form-group.has-warning .control-label, +.form-group.has-warning .help-block, +.form-group.has-warning .help-inline { + color: #d19d59; +} +.form-group input[disabled], +.form-group input:disabled { + color: #848484 !important; + background-color: #eeeeee !important; +} +@media only screen and (max-width: 767px) { + .help-inline, + .input-icon + .help-inline { + padding-left: 0; + display: block !important; + } +} +.tab-content { + border: 1px solid #c5d0dc; + padding: 16px 12px; + position: relative; +} +.tab-content.no-padding { + padding: 0; +} +.tab-content.no-border { + border: none; + padding: 12px; +} +.tab-content.padding-32 { + padding: 32px 24px; +} +.tab-content.no-border.padding-32 { + padding: 32px; +} +.tab-content.padding-30 { + padding: 30px 23px; +} +.tab-content.no-border.padding-30 { + padding: 30px; +} +.tab-content.padding-28 { + padding: 28px 21px; +} +.tab-content.no-border.padding-28 { + padding: 28px; +} +.tab-content.padding-26 { + padding: 26px 20px; +} +.tab-content.no-border.padding-26 { + padding: 26px; +} +.tab-content.padding-24 { + padding: 24px 18px; +} +.tab-content.no-border.padding-24 { + padding: 24px; +} +.tab-content.padding-22 { + padding: 22px 17px; +} +.tab-content.no-border.padding-22 { + padding: 22px; +} +.tab-content.padding-20 { + padding: 20px 15px; +} +.tab-content.no-border.padding-20 { + padding: 20px; +} +.tab-content.padding-18 { + padding: 18px 14px; +} +.tab-content.no-border.padding-18 { + padding: 18px; +} +.tab-content.padding-16 { + padding: 16px 12px; +} +.tab-content.no-border.padding-16 { + padding: 16px; +} +.tab-content.padding-14 { + padding: 14px 11px; +} +.tab-content.no-border.padding-14 { + padding: 14px; +} +.tab-content.padding-12 { + padding: 12px 9px; +} +.tab-content.no-border.padding-12 { + padding: 12px; +} +.tab-content.padding-10 { + padding: 10px 8px; +} +.tab-content.no-border.padding-10 { + padding: 10px; +} +.tab-content.padding-8 { + padding: 8px 6px; +} +.tab-content.no-border.padding-8 { + padding: 8px; +} +.tab-content.padding-6 { + padding: 6px 5px; +} +.tab-content.no-border.padding-6 { + padding: 6px; +} +.tab-content.padding-4 { + padding: 4px 3px; +} +.tab-content.no-border.padding-4 { + padding: 4px; +} +.tab-content.padding-2 { + padding: 2px 2px; +} +.tab-content.no-border.padding-2 { + padding: 2px; +} +.tab-content.padding-0 { + padding: 0px 0px; +} +.tab-content.no-border.padding-0 { + padding: 0px; +} +.nav.nav-tabs.padding-32 { + padding-left: 32px; +} +.tabs-right > .nav.nav-tabs.padding-32, +.tabs-left > .nav.nav-tabs.padding-32 { + padding-left: 0; + padding-top: 32px; +} +.nav.nav-tabs.padding-30 { + padding-left: 30px; +} +.tabs-right > .nav.nav-tabs.padding-30, +.tabs-left > .nav.nav-tabs.padding-30 { + padding-left: 0; + padding-top: 30px; +} +.nav.nav-tabs.padding-28 { + padding-left: 28px; +} +.tabs-right > .nav.nav-tabs.padding-28, +.tabs-left > .nav.nav-tabs.padding-28 { + padding-left: 0; + padding-top: 28px; +} +.nav.nav-tabs.padding-26 { + padding-left: 26px; +} +.tabs-right > .nav.nav-tabs.padding-26, +.tabs-left > .nav.nav-tabs.padding-26 { + padding-left: 0; + padding-top: 26px; +} +.nav.nav-tabs.padding-24 { + padding-left: 24px; +} +.tabs-right > .nav.nav-tabs.padding-24, +.tabs-left > .nav.nav-tabs.padding-24 { + padding-left: 0; + padding-top: 24px; +} +.nav.nav-tabs.padding-22 { + padding-left: 22px; +} +.tabs-right > .nav.nav-tabs.padding-22, +.tabs-left > .nav.nav-tabs.padding-22 { + padding-left: 0; + padding-top: 22px; +} +.nav.nav-tabs.padding-20 { + padding-left: 20px; +} +.tabs-right > .nav.nav-tabs.padding-20, +.tabs-left > .nav.nav-tabs.padding-20 { + padding-left: 0; + padding-top: 20px; +} +.nav.nav-tabs.padding-18 { + padding-left: 18px; +} +.tabs-right > .nav.nav-tabs.padding-18, +.tabs-left > .nav.nav-tabs.padding-18 { + padding-left: 0; + padding-top: 18px; +} +.nav.nav-tabs.padding-16 { + padding-left: 16px; +} +.tabs-right > .nav.nav-tabs.padding-16, +.tabs-left > .nav.nav-tabs.padding-16 { + padding-left: 0; + padding-top: 16px; +} +.nav.nav-tabs.padding-14 { + padding-left: 14px; +} +.tabs-right > .nav.nav-tabs.padding-14, +.tabs-left > .nav.nav-tabs.padding-14 { + padding-left: 0; + padding-top: 14px; +} +.nav.nav-tabs.padding-12 { + padding-left: 12px; +} +.tabs-right > .nav.nav-tabs.padding-12, +.tabs-left > .nav.nav-tabs.padding-12 { + padding-left: 0; + padding-top: 12px; +} +.nav.nav-tabs.padding-10 { + padding-left: 10px; +} +.tabs-right > .nav.nav-tabs.padding-10, +.tabs-left > .nav.nav-tabs.padding-10 { + padding-left: 0; + padding-top: 10px; +} +.nav.nav-tabs.padding-8 { + padding-left: 8px; +} +.tabs-right > .nav.nav-tabs.padding-8, +.tabs-left > .nav.nav-tabs.padding-8 { + padding-left: 0; + padding-top: 8px; +} +.nav.nav-tabs.padding-6 { + padding-left: 6px; +} +.tabs-right > .nav.nav-tabs.padding-6, +.tabs-left > .nav.nav-tabs.padding-6 { + padding-left: 0; + padding-top: 6px; +} +.nav.nav-tabs.padding-4 { + padding-left: 4px; +} +.tabs-right > .nav.nav-tabs.padding-4, +.tabs-left > .nav.nav-tabs.padding-4 { + padding-left: 0; + padding-top: 4px; +} +.nav.nav-tabs.padding-2 { + padding-left: 2px; +} +.tabs-right > .nav.nav-tabs.padding-2, +.tabs-left > .nav.nav-tabs.padding-2 { + padding-left: 0; + padding-top: 2px; +} +.nav-tabs { + border-color: #C5D0DC; + margin-bottom: 0 !important; + margin-left: 0; + position: relative; + top: 1px; +} +.nav-tabs > li > a { + padding: 7px 12px 8px; +} +.nav-tabs > li > a, +.nav-tabs > li > a:focus { + border-radius: 0 !important; + border-color: #c5d0dc; + background-color: #F9F9F9; + color: #999; + margin-right: -1px; + line-height: 18px; + position: relative; +} +.nav-tabs > li > a:hover { + background-color: #FFF; + color: #4c8fbd; + border-color: #c5d0dc; +} +.nav-tabs > li > a:active, +.nav-tabs > li > a:focus { + outline: none !important; +} +.nav-tabs > li:first-child > a { + margin-left: 0; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #576373; + border-color: #c5d0dc; + border-top: 2px solid #4c8fbd; + border-bottom-color: transparent; + background-color: #FFF; + z-index: 1; + line-height: 18px; + margin-top: -1px; + box-shadow: 0 -2px 3px 0 rgba(0, 0, 0, 0.15); +} +.tabs-below > .nav-tabs { + /* tabs below */ + top: auto; + margin-bottom: 0; + margin-top: -1px; + border-color: #c5d0dc; + border-bottom-width: 0; +} +.tabs-below > .nav-tabs > li > a, +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-color: #c5d0dc; +} +.tabs-below > .nav-tabs > li.active > a, +.tabs-below > .nav-tabs > li.active > a:hover, +.tabs-below > .nav-tabs > li.active > a:focus { + border-color: #c5d0dc; + border-top-width: 1px; + border-bottom: 2px solid #4c8fbd; + border-top-color: transparent; + margin-top: 0; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.15); +} +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 60px; +} +.tabs-left > .nav-tabs { + top: auto; + margin-bottom: 0; + border-color: #c5d0dc; + float: left; +} +.tabs-left > .nav-tabs > li { + float: none !important; +} +.tabs-left > .nav-tabs > li > a, +.tabs-left > .nav-tabs > li > a:focus, +.tabs-left > .nav-tabs > li > a:hover { + border-color: #c5d0dc; + margin: 0 -1px 0 0; +} +.tabs-left > .nav-tabs > li.active > a, +.tabs-left > .nav-tabs > li.active > a:focus, +.tabs-left > .nav-tabs > li.active > a:hover { + border-color: #c5d0dc; + border-top-width: 1px; + border-left: 2px solid #4c8fbd; + border-right-color: transparent; + margin: 0 -1px 0 -1px; + -webkit-box-shadow: -2px 0 3px 0 rgba(0,0,0,0.15) !important; + box-shadow: -2px 0 3px 0 rgba(0,0,0,0.15) !important; +} +.tabs-right > .nav-tabs { + top: auto; + margin-bottom: 0; + border-color: #c5d0dc; + float: right; +} +.tabs-right > .nav-tabs > li { + float: none !important; +} +.tabs-right > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a:focus, +.tabs-right > .nav-tabs > li > a:hover { + border-color: #c5d0dc; + margin: 0 -1px; +} +.tabs-right > .nav-tabs > li.active > a, +.tabs-right > .nav-tabs > li.active > a:focus, +.tabs-right > .nav-tabs > li.active > a:hover { + border-color: #c5d0dc; + border-top-width: 1px; + border-right: 2px solid #4c8fbd; + border-left-color: transparent; + margin: 0 -2px 0 -1px; + -webkit-box-shadow: 2px 0 3px 0 rgba(0,0,0,0.15); + box-shadow: 2px 0 3px 0 rgba(0,0,0,0.15); +} +.nav-tabs > li > a > .badge { + padding: 1px 5px; + line-height: 15px; + opacity: 0.75; +} +.nav-tabs > li > a > .ace-icon { + opacity: 0.75; +} +.nav-tabs > li.active > a > .badge, +.nav-tabs > li.active > a > .ace-icon { + opacity: 1; +} +.nav-tabs li .ace-icon { + width: 1.25em; + display: inline-block; + text-align: center; +} +.nav-tabs > li.open .dropdown-toggle { + background-color: #4F99C6; + border-color: #4F99C6; + color: #FFF; +} +.nav-tabs > li.open .dropdown-toggle > .ace-icon { + color: #FFF !important; +} +.tabs-left .tab-content, +.tabs-right .tab-content { + overflow: auto; +} +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + background-color: #4F99C6; + border-color: #4F99C6; + color: #FFFFFF; +} +.nav-pills .open .dropdown-toggle > .ace-icon, +.nav > li.dropdown.open.active > a:hover > .ace-icon, +.nav > li.dropdown.open.active > a:focus > .ace-icon { + color: #FFF !important; +} +/* bigger tab buttons */ +.nav-tabs > li:not(.active):not(.open) > a:not(:hover) > .ace-icon:first-child.disabled { + color: #909090 !important; +} +/* bigger tab buttons */ +.nav-tabs.tab-size-bigger > li > a { + padding-left: 14px; + padding-right: 14px; +} +.nav-tabs.tab-size-bigger > li > a > .ace-icon:first-child { + display: block; + margin-bottom: 6px; + width: auto; +} +.nav-tabs.tab-space-1 > li > a { + margin-right: 1px; +} +.nav-tabs.tab-space-2 > li > a { + margin-right: 2px; +} +.nav-tabs.tab-space-3 > li > a { + margin-right: 3px; +} +.nav-tabs.tab-space-4 > li > a { + margin-right: 4px; +} +.nav-tabs[class*="tab-color-"] > li > a, +.nav-tabs[class*="tab-color-"] > li > a:focus, +.nav-tabs[class*="tab-color-"] > li > a:hover { + color: #FFF; + border-color: transparent; + margin-right: 3px; +} +.nav-tabs[class*="tab-color-"] > li > a > .badge { + border-radius: 2px; +} +.nav-tabs[class*="tab-color-"] > li:not(.active) > a:hover { + opacity: 0.85; + border-color: rgba(0, 0, 0, 0.15); + border-bottom-color: transparent; +} +.nav-tabs[class*="tab-color-"] > li:not(.active) > a > .ace-icon:first-child { + color: #FFF !important; +} +.nav-tabs[class*="tab-color-"] > li:not(.active) > a > .badge { + color: rgba(0, 0, 0, 0.4) !important; + background-color: #FFF !important; + border-radius: 2px; +} +.nav-tabs.tab-color-blue > li > a, +.nav-tabs.tab-color-blue > li > a:focus { + background-color: #7db4d8; +} +.nav-tabs[class*="tab-color-"] > li.active > a, +.nav-tabs[class*="tab-color-"] > li.active > a:focus, +.nav-tabs[class*="tab-color-"] > li.active > a:hover { + background-color: #FFF; + color: #4f80a0; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +.nav-tabs.tab-color-blue > li.active > a, +.nav-tabs.tab-color-blue > li.active > a:focus, +.nav-tabs.tab-color-blue > li.active > a:hover { + color: #4c718a; + border-color: #7db4d8 #7db4d8 transparent; +} +.tabs-below .nav-tabs.tab-color-blue > li.active > a { + border-color: transparent #7db4d8 #7db4d8; +} +.nav-tabs.tab-color-blue { + border-bottom-color: #C5D0DC; +} +/* background for tab links */ +.nav-tabs.background-blue { + padding-top: 6px; + background-color: #EFF3F8; + border: 1px solid #C5D0DC; +} +.tabs-below .nav-tabs.background-blue { + padding-top: 0; + padding-bottom: 6px; +} +.tabs-below .nav-tabs.tab-color-blue { + border-top: none; + border-bottom-color: #C5D0DC; +} +.accordion-style1.panel-group .panel { + border-radius: 0; + border-color: #cdd8e3; + background-color: #FFF; + box-shadow: none; +} +.accordion-style1.panel-group .panel:last-child { + border-bottom-width: 1px; +} +.accordion-style1.panel-group .panel .collapse { + background-color: #FFF; +} +.accordion-style1.panel-group .panel + .panel { + margin-top: 2px; +} +.accordion-style1.panel-group .panel-heading + .panel-collapse .panel-body { + border-top-color: #cdd8e3 !important; +} +.accordion-style1.panel-group .panel-heading { + padding: 0; +} +.accordion-style1.panel-group .panel-heading .accordion-toggle { + color: #4c8fbd; + background-color: #eef4f9; + position: relative; + font-weight: bold; + font-size: 13px; + line-height: 1; + padding: 10px; + display: block; +} +.accordion-style1.panel-group .panel-heading .accordion-toggle.collapsed { + color: #478fca; + font-weight: normal; + background-color: #F9F9F9; +} +.accordion-style1.panel-group .panel-heading .accordion-toggle:hover { + color: #6ea6cc; + background-color: #f1f8fd; + text-decoration: none; +} +.accordion-style1.panel-group .panel-heading .accordion-toggle:focus, +.accordion-style1.panel-group .panel-heading .accordion-toggle:active { + outline: none; + text-decoration: none; +} +.accordion-style1.panel-group .panel-heading .accordion-toggle > .ace-icon:first-child { + width: 16px; +} +.accordion-style1.panel-group .panel-heading .accordion-toggle:hover > .ace-icon:first-child { + text-decoration: none; +} +.accordion-style1.panel-group .panel-body, +.accordion-style1.panel-group .collapse.in > .panel-body { + border-top: 1px solid #cdd8e3; +} +.accordion-style1.panel-group.no-padding { + padding: 0; +} +.accordion-style2.panel-group .panel { + border-width: 0; +} +.accordion-style2.panel-group .panel:last-child { + border-bottom-width: 0; +} +.accordion-style2.panel-group .panel + .panel { + margin-top: 4px; +} +.accordion-style2.panel-group .panel .panel-body { + border-top: none; +} +.accordion-style2.panel-group .panel-heading .accordion-toggle { + background-color: #EDF3F7; + border: 2px solid #6EAED1; + border-width: 0 0 0 2px; +} +.accordion-style2.panel-group .panel-heading .accordion-toggle:hover { + text-decoration: none; +} +.accordion-style2.panel-group .panel-heading .accordion-toggle.collapsed { + background-color: #F3F3F3; + color: #606060; + border-width: 0 0 0 1px; + border-color: #D9D9D9; +} +.accordion-style2.panel-group .panel-heading .accordion-toggle.collapsed:hover { + background-color: #F6F6F6; + color: #438EB9; + text-decoration: none; +} +.accordion-style2.panel-group .panel-body, +.accordion-style2.panel-group .collapse.in > .panel-body { + border-top: none; +} +.accordion-style2.panel-group .accordion-style2.panel-group .panel { + border-bottom: 1px dotted #D9D9D9; +} +.accordion-style2.panel-group .accordion-style2.panel-group .panel:last-child { + border-bottom: none; +} +.accordion-style2.panel-group .accordion-style2.panel-group .panel .panel-heading, +.accordion-style2.panel-group .accordion-style2.panel-group .panel .panel-heading .accordion-toggle { + background-color: transparent; + border-width: 0; + font-size: 13px; + padding-top: 6px; + padding-bottom: 8px; +} +.accordion-style2.panel-group .accordion-style2.panel-group .panel .panel-heading { + padding-top: 0; + padding-bottom: 0; +} +/* tables */ +th, +td, +.table-bordered { + border-radius: 0 !important; +} +.table > thead > tr { + color: #707070; + font-weight: normal; + background: #F2F2F2; + background-image: -webkit-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: -o-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: linear-gradient(to bottom, #f8f8f8 0%, #ececec 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#ffececec', GradientType=0); +} +.table > thead > tr > th { + border-color: #dddddd; + font-weight: bold; +} +.table > thead > tr > th .ace-icon:first-child { + margin-right: 2px; +} +.table > thead > tr > th:first-child { + border-left-color: #F1F1F1; +} +.table > thead > tr > th:last-child { + border-right-color: #F1F1F1; +} +.table.table-bordered > thead > tr > th { + /* border-color: @table-border-color; */ + vertical-align: middle; +} +.table.table-bordered > thead > tr > th:first-child { + border-left-color: #dddddd; +} +th.center, +td.center { + text-align: center; +} +th .lbl, +td .lbl { + margin-bottom: 0; +} +th .lbl:only-child, +td .lbl:only-child { + vertical-align: top; +} +.table-header { + background-color: #307ecc; + color: #FFF; + font-size: 14px; + line-height: 38px; + padding-left: 12px; + margin-bottom: 1px; +} +.table-header .close { + margin-right: 8px; + margin-top: 0; + opacity: 0.45; + filter: alpha(opacity=45); +} +.table-header .close:hover { + opacity: 0.75; + filter: alpha(opacity=75); +} +.widget-box { + padding: 0; + -webkit-box-shadow: none; + box-shadow: none; + margin: 3px 0; + border: 1px solid #CCC; +} +@media only screen and (max-width: 767px) { + .widget-box { + margin-top: 7px; + margin-bottom: 7px; + } +} +.widget-header { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + position: relative; + min-height: 38px; + background: #f7f7f7; + background-image: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); + color: #669fc7; + border-bottom: 1px solid #DDD; + padding-left: 12px; +} +.widget-header:before, +.widget-header:after { + content: ""; + display: table; + line-height: 0; +} +.widget-header:after { + clear: right; +} +.widget-box.collapsed > .widget-header { + border-bottom-width: 0; +} +.collapsed.fullscreen > .widget-header { + border-bottom-width: 1px; +} +.collapsed > .widget-body { + display: none; +} +.widget-header-flat { + background: #F7F7F7; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} +.widget-header-large { + min-height: 49px; + padding-left: 18px; +} +.widget-header-small { + min-height: 31px; + padding-left: 10px; +} +.widget-header > .widget-title { + line-height: 36px; + padding: 0; + margin: 0; + display: inline; +} +.widget-header > .widget-title > .ace-icon { + margin-right: 5px; + font-weight: normal; + display: inline-block; +} +.widget-header-large > .widget-title { + line-height: 48px; +} +.widget-header-small > .widget-title { + line-height: 30px; +} +.widget-toolbar { + display: inline-block; + padding: 0 10px; + line-height: 37px; + float: right; + position: relative; +} +.widget-header-large > .widget-toolbar { + line-height: 48px; +} +.widget-header-small > .widget-toolbar { + line-height: 29px; +} +.widget-toolbar.no-padding { + padding: 0; +} +.widget-toolbar.padding-5 { + padding: 0 5px; +} +.widget-toolbar:before { + display: inline-block; + content: ""; + position: absolute; + top: 3px; + bottom: 3px; + left: -1px; + border: 1px solid #D9D9D9; + border-width: 0 1px 0 0; +} +.widget-header-large > .widget-toolbar:before { + top: 6px; + bottom: 6px; +} +[class*="widget-color-"] > .widget-header > .widget-toolbar:before { + border-color: #EEE; +} +.widget-color-orange > .widget-header > .widget-toolbar:before { + border-color: #FEA; +} +.widget-color-dark > .widget-header > .widget-toolbar:before { + border-color: #222; + box-shadow: -1px 0 0 rgba(255, 255, 255, 0.2), inset 1px 0 0 rgba(255, 255, 255, 0.1); +} +.widget-toolbar.no-border:before { + display: none; +} +.widget-toolbar label { + display: inline-block; + vertical-align: middle; + margin-bottom: 0; +} +.widget-toolbar > a, +.widget-toolbar > .widget-menu > a { + font-size: 14px; + margin: 0 1px; + display: inline-block; + padding: 0; + line-height: 24px; +} +.widget-toolbar > a:hover, +.widget-toolbar > .widget-menu > a:hover { + text-decoration: none; +} +.widget-header-large > .widget-toolbar > a, +.widget-header-large > .widget-toolbar > .widget-menu > a { + font-size: 15px; + margin: 0 1px; +} +.widget-toolbar > .btn { + line-height: 27px; + margin-top: -2px; +} +.widget-toolbar > .btn.smaller { + line-height: 26px; +} +.widget-toolbar > .btn.bigger { + line-height: 28px; +} +.widget-toolbar > .btn-sm { + line-height: 24px; +} +.widget-toolbar > .btn-sm.smaller { + line-height: 23px; +} +.widget-toolbar > .btn-sm.bigger { + line-height: 25px; +} +.widget-toolbar > .btn-xs { + line-height: 22px; +} +.widget-toolbar > .btn-xs.smaller { + line-height: 21px; +} +.widget-toolbar > .btn-xs.bigger { + line-height: 23px; +} +.widget-toolbar > .btn-minier { + line-height: 18px; +} +.widget-toolbar > .btn-minier.smaller { + line-height: 17px; +} +.widget-toolbar > .btn-minier.bigger { + line-height: 19px; +} +.widget-toolbar > .btn-lg { + line-height: 36px; +} +.widget-toolbar > .btn-lg.smaller { + line-height: 34px; +} +.widget-toolbar > .btn-lg.bigger { + line-height: 38px; +} +.widget-toolbar-dark { + background: #444; +} +.widget-toolbar-light { + background: rgba(255, 255, 255, 0.85); +} +.widget-toolbar > .widget-menu { + display: inline-block; + position: relative; +} +.widget-toolbar > a[data-action], +.widget-toolbar > .widget-menu > a[data-action] { + -webkit-transition: transform 0.1s; + -o-transition: transform 0.1s; + transition: transform 0.1s; +} +.widget-toolbar > a[data-action] > .ace-icon, +.widget-toolbar > .widget-menu > a[data-action] > .ace-icon { + margin-right: 0; +} +.widget-toolbar > a[data-action]:focus, +.widget-toolbar > .widget-menu > a[data-action]:focus { + text-decoration: none; + outline: none; +} +.widget-toolbar > a[data-action]:hover, +.widget-toolbar > .widget-menu > a[data-action]:hover { + -moz-transform: scale(1.2); + -webkit-transform: scale(1.2); + -o-transform: scale(1.2); + -ms-transform: scale(1.2); + transform: scale(1.2); +} +.widget-body { + background-color: #FFF; +} +.widget-main { + padding: 12px; +} +.widget-main.padding-32 { + padding: 32px; +} +.widget-main.padding-30 { + padding: 30px; +} +.widget-main.padding-28 { + padding: 28px; +} +.widget-main.padding-26 { + padding: 26px; +} +.widget-main.padding-24 { + padding: 24px; +} +.widget-main.padding-22 { + padding: 22px; +} +.widget-main.padding-20 { + padding: 20px; +} +.widget-main.padding-18 { + padding: 18px; +} +.widget-main.padding-16 { + padding: 16px; +} +.widget-main.padding-14 { + padding: 14px; +} +.widget-main.padding-12 { + padding: 12px; +} +.widget-main.padding-10 { + padding: 10px; +} +.widget-main.padding-8 { + padding: 8px; +} +.widget-main.padding-6 { + padding: 6px; +} +.widget-main.padding-4 { + padding: 4px; +} +.widget-main.padding-2 { + padding: 2px; +} +.widget-main.padding-0 { + padding: 0px; +} +.widget-main.no-padding { + padding: 0; +} +.widget-toolbar .progress { + vertical-align: middle; + display: inline-block; + margin: 0; +} +.widget-toolbar > .dropdown, +.widget-toolbar > .dropup { + display: inline-block; +} +.widget-box > .widget-header > .widget-toolbar > [data-action="settings"], +.widget-color-dark > .widget-header > .widget-toolbar > [data-action="settings"], +.widget-box > .widget-header > .widget-toolbar > .widget-menu > [data-action="settings"], +.widget-color-dark > .widget-header > .widget-toolbar > .widget-menu > [data-action="settings"] { + color: #99CADB; +} +.widget-box > .widget-header > .widget-toolbar > [data-action="reload"], +.widget-color-dark > .widget-header > .widget-toolbar > [data-action="reload"], +.widget-box > .widget-header > .widget-toolbar > .widget-menu > [data-action="reload"], +.widget-color-dark > .widget-header > .widget-toolbar > .widget-menu > [data-action="reload"] { + color: #ACD392; +} +.widget-box > .widget-header > .widget-toolbar > [data-action="collapse"], +.widget-color-dark > .widget-header > .widget-toolbar > [data-action="collapse"], +.widget-box > .widget-header > .widget-toolbar > .widget-menu > [data-action="collapse"], +.widget-color-dark > .widget-header > .widget-toolbar > .widget-menu > [data-action="collapse"] { + color: #AAA; +} +.widget-box > .widget-header > .widget-toolbar > [data-action="close"], +.widget-color-dark > .widget-header > .widget-toolbar > [data-action="close"], +.widget-box > .widget-header > .widget-toolbar > .widget-menu > [data-action="close"], +.widget-color-dark > .widget-header > .widget-toolbar > .widget-menu > [data-action="close"] { + color: #E09E96; +} +.widget-box[class*="widget-color-"] > .widget-header { + color: #FFF; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} +.widget-color-blue { + border-color: #307ecc; +} +.widget-color-blue > .widget-header { + background: #307ecc; + border-color: #307ecc; +} +.widget-color-blue2 { + border-color: #5090c1; +} +.widget-color-blue2 > .widget-header { + background: #5090c1; + border-color: #5090c1; +} +.widget-color-blue3 { + border-color: #6379aa; +} +.widget-color-blue3 > .widget-header { + background: #6379aa; + border-color: #6379aa; +} +.widget-color-green { + border-color: #82af6f; +} +.widget-color-green > .widget-header { + background: #82af6f; + border-color: #82af6f; +} +.widget-color-green2 { + border-color: #2e8965; +} +.widget-color-green2 > .widget-header { + background: #2e8965; + border-color: #2e8965; +} +.widget-color-green3 { + border-color: #4ebc30; +} +.widget-color-green3 > .widget-header { + background: #4ebc30; + border-color: #4ebc30; +} +.widget-color-red { + border-color: #e2755f; +} +.widget-color-red > .widget-header { + background: #e2755f; + border-color: #e2755f; +} +.widget-color-red2 { + border-color: #e04141; +} +.widget-color-red2 > .widget-header { + background: #e04141; + border-color: #e04141; +} +.widget-color-red3 { + border-color: #d15b47; +} +.widget-color-red3 > .widget-header { + background: #d15b47; + border-color: #d15b47; +} +.widget-color-purple { + border-color: #7e6eb0; +} +.widget-color-purple > .widget-header { + background: #7e6eb0; + border-color: #7e6eb0; +} +.widget-color-pink { + border-color: #ce6f9e; +} +.widget-color-pink > .widget-header { + background: #ce6f9e; + border-color: #ce6f9e; +} +.widget-color-orange { + border-color: #e8b10d; +} +.widget-color-orange > .widget-header { + color: #855d10 !important; + border-color: #e8b10d; + background: #ffc657; +} +.widget-color-dark { + border-color: #5a5a5a; +} +.widget-color-dark > .widget-header { + border-color: #666666; + background: #404040; +} +.widget-color-grey { + border-color: #9e9e9e; +} +.widget-color-grey > .widget-header { + border-color: #aaaaaa; + background: #848484; +} +.widget-box.transparent { + border-width: 0; +} +.widget-box.transparent > .widget-header { + background: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + border-width: 0; + border-bottom: 1px solid #DCE8F1; + color: #4383B4; + padding-left: 3px; +} +.widget-box.transparent > .widget-header-large { + padding-left: 5px; +} +.widget-box.transparent > .widget-header-small { + padding-left: 1px; +} +.widget-box.transparent > .widget-body { + border-width: 0; + background-color: transparent; +} +[class*="widget-color-"] > .widget-header > .widget-toolbar > [data-action], +[class*="widget-color-"] > .widget-header > .widget-toolbar > .widget-menu > [data-action] { + text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.2); +} +[class*="widget-color-"] > .widget-header > .widget-toolbar > [data-action="settings"], +[class*="widget-color-"] > .widget-header > .widget-toolbar > .widget-menu > [data-action="settings"] { + color: #D3E4ED; +} +[class*="widget-color-"] > .widget-header > .widget-toolbar > [data-action="reload"], +[class*="widget-color-"] > .widget-header > .widget-toolbar > .widget-menu > [data-action="reload"] { + color: #DEEAD3; +} +[class*="widget-color-"] > .widget-header > .widget-toolbar > [data-action="collapse"], +[class*="widget-color-"] > .widget-header > .widget-toolbar > .widget-menu > [data-action="collapse"] { + color: #E2E2E2; +} +[class*="widget-color-"] > .widget-header > .widget-toolbar > [data-action="close"], +[class*="widget-color-"] > .widget-header > .widget-toolbar > .widget-menu > [data-action="close"] { + color: #FFD9D5; +} +.widget-color-orange > .widget-header > .widget-toolbar > [data-action], +.widget-color-orange > .widget-header > .widget-toolbar > .widget-menu > [data-action] { + text-shadow: none; +} +.widget-color-orange > .widget-header > .widget-toolbar > [data-action="settings"], +.widget-color-orange > .widget-header > .widget-toolbar > .widget-menu > [data-action="settings"] { + color: #559AAB; +} +.widget-color-orange > .widget-header > .widget-toolbar > [data-action="reload"], +.widget-color-orange > .widget-header > .widget-toolbar > .widget-menu > [data-action="reload"] { + color: #7CA362; +} +.widget-color-orange > .widget-header > .widget-toolbar > [data-action="collapse"], +.widget-color-orange > .widget-header > .widget-toolbar > .widget-menu > [data-action="collapse"] { + color: #777; +} +.widget-color-orange > .widget-header > .widget-toolbar > [data-action="close"], +.widget-color-orange > .widget-header > .widget-toolbar > .widget-menu > [data-action="close"] { + color: #A05656; +} +.widget-box.light-border[class*="widget-color-"]:not(.fullscreen) { + border-width: 0; +} +.widget-box.light-border[class*="widget-color-"]:not(.fullscreen) > .widget-header { + border: 1px solid; + border-color: inherit; +} +.widget-box.light-border[class*="widget-color-"]:not(.fullscreen) > .widget-body { + border: 1px solid; + border-color: #D6D6D6; + border-width: 0 1px 1px; +} +.widget-box.no-border { + border-width: 0; +} +.widget-box.fullscreen { + position: fixed; + margin: 0; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: #FFF; + border-width: 3px; + z-index: 1040 !important; +} +.widget-box.fullscreen:not([class*="widget-color-"]) { + border-color: #AAA; +} +.widget-body .table { + border-top: 1px solid #E5E5E5; +} +.widget-body .table thead:first-child tr { + background: #FFF; +} +[class*="widget-color-"] > .widget-body .table thead:first-child tr { + background: #f2f2f2; + background-image: -webkit-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: -o-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: linear-gradient(to bottom, #f8f8f8 0%, #ececec 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#ffececec', GradientType=0); +} +.widget-body .table.table-bordered thead:first-child > tr { + border-top-width: 0; +} +.widget-main.no-padding .table { + margin-bottom: 0; + border-width: 0; +} +.widget-main.no-padding .table-bordered th:first-child, +.widget-main.no-padding .table-bordered td:first-child { + border-left-width: 0; +} +.transparent > .widget-body .widget-main .table-bordered > thead > tr > th:last-child, +.widget-main.no-padding .table-bordered > thead > tr > th:last-child, +.transparent > .widget-body .widget-main .table-bordered > tbody > tr > td:last-child, +.widget-main.no-padding .table-bordered > tbody > tr > td:last-child, +.transparent > .widget-body .widget-main .table-bordered > tfoot > tr > td:last-child, +.widget-main.no-padding .table-bordered > tfoot > tr > td:last-child { + border-right-width: 0 !important; +} +.transparent > .widget-body .widget-main .table-bordered > tbody > tr:last-child > td, +.widget-main.no-padding .table-bordered > tbody > tr:last-child > td { + border-bottom-width: 0 !important; +} +.table-bordered > thead.thin-border-bottom > tr > th, +.table-bordered > thead.thin-border-bottom > tr > td { + border-bottom-width: 1px; +} +.widget-body .alert:last-child { + margin-bottom: 0; +} +.widget-main .tab-content { + border-width: 0; +} +.widget-toolbar > .nav-tabs { + border-bottom-width: 0; + margin-bottom: 0; + top: auto; + margin-top: 3px !important; +} +.widget-toolbar > .nav-tabs > li { + margin-bottom: auto; +} +.widget-toolbar > .nav-tabs > li > a { + box-shadow: none; + position: relative; + top: 1px; + margin-top: 1px; +} +.widget-toolbar > .nav-tabs > li:not(.active) > a { + border-color: transparent; + background-color: transparent; +} +.widget-toolbar > .nav-tabs > li:not(.active) > a:hover { + background-color: transparent; +} +.widget-toolbar > .nav-tabs > li.active > a { + background-color: #FFF; + border-bottom-color: transparent; + box-shadow: none; + margin-top: auto; +} +.widget-header-small > .widget-toolbar > .nav-tabs > li > a { + line-height: 16px; + padding-top: 6px; + padding-bottom: 6px; +} +.widget-header-small > .widget-toolbar > .nav-tabs > li.active > a { + border-top-width: 2px; +} +.widget-header-large > .widget-toolbar > .nav-tabs > li > a { + line-height: 22px; + padding-top: 9px; + padding-bottom: 9px; + margin-top: 4px; +} +.widget-header-large > .widget-toolbar > .nav-tabs > li.active > a { + margin-top: 3px; +} +[class*="widget-color-"] > .widget-header > .widget-toolbar > .nav-tabs > li > a { + border-color: transparent; + background-color: transparent; + color: #FFF; + margin-right: 1px; +} +[class*="widget-color-"] > .widget-header > .widget-toolbar > .nav-tabs > li > a:hover { + background-color: #FFF; + color: #555; + border-top-color: #FFF; +} +[class*="widget-color-"] > .widget-header > .widget-toolbar > .nav-tabs > li.active > a { + background-color: #FFF; + color: #555; + border-top-width: 1px; + margin-top: 0; +} +.widget-toolbar > .nav-tabs .widget-color-orange > .widget-header > li > a { + color: #855D10; +} +.transparent > .widget-header > .widget-toolbar > .nav-tabs > li > a { + color: #555; + background-color: transparent; + border-right: 1px solid transparent; + border-left: 1px solid transparent; +} +.transparent > .widget-header > .widget-toolbar > .nav-tabs > li.active > a { + border-top-color: #4C8FBD; + border-right: 1px solid #C5D0DC; + border-left: 1px solid #C5D0DC; + background-color: #FFF; + box-shadow: none; +} +.widget-toolbox { + background-color: #EEE; +} +.widget-toolbox:first-child { + padding: 2px; + border-bottom: 1px solid #CCC; +} +.widget-toolbox:last-child { + padding: 2px; + border-top: 1px solid #CCC; +} +.transparent > .widget-body > .widget-toolbox:last-child { + border: none; + border-top: 1px solid #CCC; +} +.widget-toolbox > .btn-toolbar { + margin: 0 !important; + padding: 0; +} +.widget-toolbox.center { + text-align: center; +} +.widget-toolbox.toolbox-vertical { + border-bottom-width: 0; + border-right: 1px solid #D9D9D9; + display: table-cell; + padding: 6px 4px; + vertical-align: top; + width: 1px; +} +.widget-toolbox.toolbox-vertical + .widget-main { + display: table-cell; + vertical-align: top; +} +.widget-toolbox.padding-16 { + padding: 16px; +} +.widget-toolbox.padding-14 { + padding: 14px; +} +.widget-toolbox.padding-12 { + padding: 12px; +} +.widget-toolbox.padding-10 { + padding: 10px; +} +.widget-toolbox.padding-8 { + padding: 8px; +} +.widget-toolbox.padding-6 { + padding: 6px; +} +.widget-toolbox.padding-4 { + padding: 4px; +} +.widget-toolbox.padding-2 { + padding: 2px; +} +.widget-toolbox.padding-0 { + padding: 0px; +} +.widget-box-overlay { + position: absolute; + top: -1px; + bottom: -1px; + right: -1px; + left: -1px; + z-index: 999; + text-align: center; + min-height: 100%; + background-color: rgba(0, 0, 0, 0.3); +} +.widget-box-overlay > .loading-icon { + position: relative; + top: 20%; + left: 0; + right: 0; + text-align: center; +} +.widget-box.collapsed .widget-box-overlay > .loading-icon { + top: 10%; +} +.widget-box-overlay > .loading-icon.icon-spin { + -moz-animation-duration: 1.2s; + -webkit-animation-duration: 1.2s; + -o-animation-duration: 1.2s; + -ms-animation-duration: 1.2s; + animation-duration: 1.2s; +} +.widget-main > form { + margin-bottom: 0; +} +.widget-main > form .input-append, +.widget-main > form .input-prepend { + margin-bottom: 0; +} +.widget-main.no-padding > form > fieldset, +.widget-main.padding-0 > form > fieldset { + padding: 16px; +} +.widget-main.no-padding > form > fieldset + .form-actions, +.widget-main.padding-0 > form > fieldset + .form-actions { + padding: 10px 0 12px; +} +.widget-main.no-padding > form > .form-actions, +.widget-main.padding-0 > form > .form-actions { + margin: 0; + padding: 10px 12px 12px; +} +.widget-placeholder { + border: 2px dashed #D9D9D9; +} +.tooltip.in { + opacity: 1; + filter: alpha(opacity=100); +} +.tooltip-inner { + background-color: #333333; + color: #FFF; + font-size: 12px; + text-shadow: 1px 1px 0 rgba(42, 45, 50, 0.5); + border-radius: 0; + padding: 5px 9px; +} +.tooltip.top .tooltip-arrow { + border-bottom-width: 0; + border-top-color: #333333; + -moz-border-top-colors: #333333; +} +.tooltip.right .tooltip-arrow { + border-left-width: 0; + border-right-color: #333333; + -moz-border-right-colors: #333333; +} +.tooltip.left .tooltip-arrow { + border-right-width: 0; + border-left-color: #333333; + -moz-border-left-colors: #333333; +} +.tooltip.bottom .tooltip-arrow { + border-top-width: 0; + border-bottom-color: #333333; + -moz-border-bottom-colors: #333333; +} +.tooltip-error + .tooltip > .tooltip-inner, +.tooltip.tooltip-error > .tooltip-inner { + background-color: #c94d32; + text-shadow: 1px 1px 0 rgba(100,60,20,0.3); +} +.tooltip-error + .tooltip.top .tooltip-arrow, +.tooltip.tooltip-error.top .tooltip-arrow { + border-top-color: #c94d32; + -moz-border-top-colors: #c94d32; +} +.tooltip-error + .tooltip.right .tooltip-arrow, +.tooltip.tooltip-error.right .tooltip-arrow { + border-right-color: #c94d32; + -moz-border-right-colors: #c94d32; +} +.tooltip-error + .tooltip.left .tooltip-arrow, +.tooltip.tooltip-error.left .tooltip-arrow { + border-left-color: #c94d32; + -moz-border-left-colors: #c94d32; +} +.tooltip-error + .tooltip.bottom .tooltip-arrow, +.tooltip.tooltip-error.bottom .tooltip-arrow { + border-bottom-color: #c94d32; + -moz-border-bottom-colors: #c94d32; +} +.tooltip-success + .tooltip > .tooltip-inner, +.tooltip.tooltip-success > .tooltip-inner { + background-color: #629b58; + text-shadow: 1px 1px 0 rgba(60,100,20,0.3); +} +.tooltip-success + .tooltip.top .tooltip-arrow, +.tooltip.tooltip-success.top .tooltip-arrow { + border-top-color: #629b58; + -moz-border-top-colors: #629b58; +} +.tooltip-success + .tooltip.right .tooltip-arrow, +.tooltip.tooltip-success.right .tooltip-arrow { + border-right-color: #629b58; + -moz-border-right-colors: #629b58; +} +.tooltip-success + .tooltip.left .tooltip-arrow, +.tooltip.tooltip-success.left .tooltip-arrow { + border-left-color: #629b58; + -moz-border-left-colors: #629b58; +} +.tooltip-success + .tooltip.bottom .tooltip-arrow, +.tooltip.tooltip-success.bottom .tooltip-arrow { + border-bottom-color: #629b58; + -moz-border-bottom-colors: #629b58; +} +.tooltip-warning + .tooltip > .tooltip-inner, +.tooltip.tooltip-warning > .tooltip-inner { + background-color: #ed9421; + text-shadow: 1px 1px 0 rgba(100,90,10,0.3); +} +.tooltip-warning + .tooltip.top .tooltip-arrow, +.tooltip.tooltip-warning.top .tooltip-arrow { + border-top-color: #ed9421; + -moz-border-top-colors: #ed9421; +} +.tooltip-warning + .tooltip.right .tooltip-arrow, +.tooltip.tooltip-warning.right .tooltip-arrow { + border-right-color: #ed9421; + -moz-border-right-colors: #ed9421; +} +.tooltip-warning + .tooltip.left .tooltip-arrow, +.tooltip.tooltip-warning.left .tooltip-arrow { + border-left-color: #ed9421; + -moz-border-left-colors: #ed9421; +} +.tooltip-warning + .tooltip.bottom .tooltip-arrow, +.tooltip.tooltip-warning.bottom .tooltip-arrow { + border-bottom-color: #ed9421; + -moz-border-bottom-colors: #ed9421; +} +.tooltip-info + .tooltip > .tooltip-inner, +.tooltip.tooltip-info > .tooltip-inner { + background-color: #4b89aa; + text-shadow: 1px 1px 0 rgba(40,50,100,0.3); +} +.tooltip-info + .tooltip.top .tooltip-arrow, +.tooltip.tooltip-info.top .tooltip-arrow { + border-top-color: #4b89aa; + -moz-border-top-colors: #4b89aa; +} +.tooltip-info + .tooltip.right .tooltip-arrow, +.tooltip.tooltip-info.right .tooltip-arrow { + border-right-color: #4b89aa; + -moz-border-right-colors: #4b89aa; +} +.tooltip-info + .tooltip.left .tooltip-arrow, +.tooltip.tooltip-info.left .tooltip-arrow { + border-left-color: #4b89aa; + -moz-border-left-colors: #4b89aa; +} +.tooltip-info + .tooltip.bottom .tooltip-arrow, +.tooltip.tooltip-info.bottom .tooltip-arrow { + border-bottom-color: #4b89aa; + -moz-border-bottom-colors: #4b89aa; +} +/* popover */ +.popover { + border-radius: 0; + padding: 0; + border-color: #ccc; + border-width: 1px; + -webkit-box-shadow: 0 0 4px 2px rgba(0,0,0,0.2); + box-shadow: 0 0 4px 2px rgba(0,0,0,0.2); + color: #4D6883; +} +.popover-title { + border-radius: 0; + background-color: #eff3f8; + color: #555; + border-bottom: 1px solid #dde6f0; + text-shadow: 1px 1px 1px rgba(220, 220, 220, 0.2); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #eff3f8; + -moz-border-bottom-colors: #eff3f8; + border-top-width: 0; +} +.popover.left > .arrow:after { + -moz-border-left-colors: #FFF; +} +.popover.right > .arrow:after { + -moz-border-right-colors: #FFF; +} +.popover.top > .arrow:after { + -moz-border-top-colors: #FFF; +} +.popover-error + .popover, +.popover.popover-error { + border-color: #f7f0ef; +} +.popover-error + .popover .popover-title, +.popover.popover-error .popover-title { + background-color: #f7f0ef; + border-bottom-color: #efe0de; + color: #b75445; + text-shadow: none; +} +.popover-error + .popover.top .arrow:after, +.popover.popover-error.top .arrow:after { + border-top-color: #f7f0ef; + -moz-border-top-colors: #f7f0ef; +} +.popover-error + .popover.bottom .arrow:after, +.popover.popover-error.bottom .arrow:after { + border-bottom-color: #f7f0ef; + -moz-border-bottom-colors: #f7f0ef; +} +.popover-error + .popover.right .arrow:after, +.popover.popover-error.right .arrow:after { + border-right-color: #f7f0ef; + -moz-border-right-colors: #f7f0ef; +} +.popover-error + .popover.left .arrow:after, +.popover.popover-error.left .arrow:after { + border-left-color: #f7f0ef; + -moz-border-left-colors: #f7f0ef; +} +.popover-warning + .popover, +.popover.popover-warning { + border-color: #f4eee3; +} +.popover-warning + .popover .popover-title, +.popover.popover-warning .popover-title { + background-color: #f4eee3; + border-bottom-color: #ede3d1; + color: #d67e31; + text-shadow: none; +} +.popover-warning + .popover.top .arrow:after, +.popover.popover-warning.top .arrow:after { + border-top-color: #f4eee3; + -moz-border-top-colors: #f4eee3; +} +.popover-warning + .popover.bottom .arrow:after, +.popover.popover-warning.bottom .arrow:after { + border-bottom-color: #f4eee3; + -moz-border-bottom-colors: #f4eee3; +} +.popover-warning + .popover.right .arrow:after, +.popover.popover-warning.right .arrow:after { + border-right-color: #f4eee3; + -moz-border-right-colors: #f4eee3; +} +.popover-warning + .popover.left .arrow:after, +.popover.popover-warning.left .arrow:after { + border-left-color: #f4eee3; + -moz-border-left-colors: #f4eee3; +} +.popover-success + .popover, +.popover.popover-success { + border-color: #e8f2e3; +} +.popover-success + .popover .popover-title, +.popover.popover-success .popover-title { + background-color: #e8f2e3; + border-bottom-color: #daead2; + color: #629b58; + text-shadow: none; +} +.popover-success + .popover.top .arrow:after, +.popover.popover-success.top .arrow:after { + border-top-color: #e8f2e3; + -moz-border-top-colors: #e8f2e3; +} +.popover-success + .popover.bottom .arrow:after, +.popover.popover-success.bottom .arrow:after { + border-bottom-color: #e8f2e3; + -moz-border-bottom-colors: #e8f2e3; +} +.popover-success + .popover.right .arrow:after, +.popover.popover-success.right .arrow:after { + border-right-color: #e8f2e3; + -moz-border-right-colors: #e8f2e3; +} +.popover-success + .popover.left .arrow:after, +.popover.popover-success.left .arrow:after { + border-left-color: #e8f2e3; + -moz-border-left-colors: #e8f2e3; +} +.popover-info + .popover, +.popover.popover-info { + border-color: #e5edf8; +} +.popover-info + .popover .popover-title, +.popover.popover-info .popover-title { + background-color: #e5edf8; + border-bottom-color: #d1dff3; + color: #3f79b6; + text-shadow: none; +} +.popover-info + .popover.top .arrow:after, +.popover.popover-info.top .arrow:after { + border-top-color: #e5edf8; + -moz-border-top-colors: #e5edf8; +} +.popover-info + .popover.bottom .arrow:after, +.popover.popover-info.bottom .arrow:after { + border-bottom-color: #e5edf8; + -moz-border-bottom-colors: #e5edf8; +} +.popover-info + .popover.right .arrow:after, +.popover.popover-info.right .arrow:after { + border-right-color: #e5edf8; + -moz-border-right-colors: #e5edf8; +} +.popover-info + .popover.left .arrow:after, +.popover.popover-info.left .arrow:after { + border-left-color: #e5edf8; + -moz-border-left-colors: #e5edf8; +} +.popover-notitle + .popover .popover-title, +.popover.popover-notitle .popover-title { + display: none; +} +.popover-notitle + .popover.top .arrow:after, +.popover.popover-notitle.top .arrow:after { + border-top-color: #FFF; + -moz-border-top-colors: #FFF; +} +.popover-notitle + .popover.bottom .arrow:after, +.popover.popover-notitle.bottom .arrow:after { + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; +} +.popover-notitle + .popover.left .arrow:after, +.popover.popover-notitle.left .arrow:after { + border-left-color: #FFF; + -moz-border-left-colors: #FFF; +} +.popover-notitle + .popover.right .arrow:after, +.popover.popover-notitle.right .arrow:after { + border-right-color: #FFF; + -moz-border-right-colors: #FFF; +} +.progress { + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: #e9e9e9; + height: 18px; +} +.progress .progress-bar { + -webkit-box-shadow: none; + box-shadow: none; + line-height: 18px; +} +.progress[data-percent]:after { + display: inline-block; + content: attr(data-percent); + color: #FFF; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + line-height: 16px; + text-align: center; + font-size: 12px; +} +.progress.progress-yellow[data-percent]:after { + color: #996633; +} +.progress.progress-small { + height: 12px; +} +.progress.progress-small .progress-bar { + line-height: 10px; + font-size: 11px; +} +.progress.progress-small[data-percent]:after { + line-height: 10px; + font-size: 11px; +} +.progress.progress-mini { + height: 9px; +} +.progress.progress-mini .progress-bar { + line-height: 8px; + font-size: 11px; +} +.progress.progress-mini[data-percent]:after { + line-height: 8px; + font-size: 11px; +} +.progress-bar { + background-color: #2a91d8; +} +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #ca5952; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-success { + background-color: #59a84b; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f2bb46; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-pink { + background-color: #d6487e; +} +.progress-striped .progress-bar-pink { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-purple { + background-color: #9585bf; +} +.progress-striped .progress-bar-purple { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-yellow { + background-color: #ffd259; +} +.progress-striped .progress-bar-yellow { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-inverse { + background-color: #404040; +} +.progress-striped .progress-bar-inverse { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-grey { + background-color: #8a8a8a; +} +.progress-striped .progress-bar-grey { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +/** +.progress { + position: relative; +} +.progress:before { + display: inline-block; + content: ""; + + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + + background: radial-gradient(9px 9px 0deg, circle cover, aqua 0%, rgba(0, 0, 255, 0) 100%, blue 95%); +} +*/ +.infobox-container { + text-align: center; + font-size: 0; +} +.infobox { + display: inline-block; + width: 210px; + height: 66px; + color: #555; + background-color: #FFF; + box-shadow: none; + border-radius: 0; + margin: -1px 0 0 -1px; + padding: 8px 3px 6px 9px; + border: 1px dotted; + border-color: #D8D8D8 !important; + vertical-align: middle; + text-align: left; + position: relative; +} +.infobox > .infobox-icon { + display: inline-block; + vertical-align: top; + width: 44px; +} +.infobox > .infobox-icon > .ace-icon { + display: inline-block; + height: 42px; + margin: 0; + padding: 1px 1px 0 2px; + background-color: transparent; + border-width: 0; + text-align: center; + position: relative; + border-radius: 100%; + -webkit-box-shadow: 1px 1px 0 rgba(0,0,0,0.2); + box-shadow: 1px 1px 0 rgba(0,0,0,0.2); +} +.infobox > .infobox-icon > .ace-icon:before { + font-size: 24px; + display: block; + padding: 6px 0 7px; + width: 40px; + text-align: center; + border-radius: 100%; + color: #FFF; + color: rgba(255, 255, 255, 0.9); + background-color: transparent; + background-color: rgba(255, 255, 255, 0.2); + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.14); +} +.infobox .infobox-content { + color: #555; + max-width: 140px; +} +.infobox .infobox-content:first-child { + font-weight: bold; +} +.infobox > .infobox-data { + display: inline-block; + border-width: 0; + border-top-width: 0; + font-size: 13px; + text-align: left; + line-height: 21px; + min-width: 130px; + padding-left: 8px; + position: relative; + top: 0; +} +.infobox > .infobox-data > .infobox-data-number { + display: block; + font-size: 22px; + margin: 2px 0 4px; + position: relative; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.15); +} +.infobox > .infobox-data > .infobox-text { + display: block; + font-size: 16px; + margin: 2px 0 4px; + position: relative; + text-shadow: none; +} +.infobox.no-border { + border-width: 0 !important; +} +@media only screen and (max-width: 479px) { + .infobox { + min-width: 95%; + margin-top: 2px; + margin-bottom: 2px; + } +} +.infobox-purple { + color: #6f3cc4; + border-color: #6f3cc4; +} +.infobox-purple > .infobox-icon > .ace-icon { + background-color: #6f3cc4; +} +.infobox-purple.infobox-dark { + background-color: #6f3cc4; + border-color: #6f3cc4; +} +.infobox-purple2 { + color: #5f47b0; + border-color: #5f47b0; +} +.infobox-purple2 > .infobox-icon > .ace-icon { + background-color: #5f47b0; +} +.infobox-purple2.infobox-dark { + background-color: #5f47b0; + border-color: #5f47b0; +} +.infobox-pink { + color: #cb6fd7; + border-color: #cb6fd7; +} +.infobox-pink > .infobox-icon > .ace-icon { + background-color: #cb6fd7; +} +.infobox-pink.infobox-dark { + background-color: #cb6fd7; + border-color: #cb6fd7; +} +.infobox-blue { + color: #6fb3e0; + border-color: #6fb3e0; +} +.infobox-blue > .infobox-icon > .ace-icon { + background-color: #6fb3e0; +} +.infobox-blue.infobox-dark { + background-color: #6fb3e0; + border-color: #6fb3e0; +} +.infobox-blue2 { + color: #3983c2; + border-color: #3983c2; +} +.infobox-blue2 > .infobox-icon > .ace-icon { + background-color: #3983c2; +} +.infobox-blue2.infobox-dark { + background-color: #3983c2; + border-color: #3983c2; +} +.infobox-blue3 { + color: #1144eb; + border-color: #1144eb; +} +.infobox-blue3 > .infobox-icon > .ace-icon { + background-color: #1144eb; +} +.infobox-blue3.infobox-dark { + background-color: #1144eb; + border-color: #1144eb; +} +.infobox-red { + color: #d53f40; + border-color: #d53f40; +} +.infobox-red > .infobox-icon > .ace-icon { + background-color: #d53f40; +} +.infobox-red.infobox-dark { + background-color: #d53f40; + border-color: #d53f40; +} +.infobox-brown { + color: #c67a3e; + border-color: #c67a3e; +} +.infobox-brown > .infobox-icon > .ace-icon { + background-color: #c67a3e; +} +.infobox-brown.infobox-dark { + background-color: #c67a3e; + border-color: #c67a3e; +} +.infobox-wood { + color: #7b3f25; + border-color: #7b3f25; +} +.infobox-wood > .infobox-icon > .ace-icon { + background-color: #7b3f25; +} +.infobox-wood.infobox-dark { + background-color: #7b3f25; + border-color: #7b3f25; +} +.infobox-light-brown { + color: #cebea5; + border-color: #cebea5; +} +.infobox-light-brown > .infobox-icon > .ace-icon { + background-color: #cebea5; +} +.infobox-light-brown.infobox-dark { + background-color: #cebea5; + border-color: #cebea5; +} +.infobox-orange { + color: #e8b110; + border-color: #e8b110; +} +.infobox-orange > .infobox-icon > .ace-icon { + background-color: #e8b110; +} +.infobox-orange.infobox-dark { + background-color: #e8b110; + border-color: #e8b110; +} +.infobox-orange2 { + color: #f79263; + border-color: #f79263; +} +.infobox-orange2 > .infobox-icon > .ace-icon { + background-color: #f79263; +} +.infobox-orange2.infobox-dark { + background-color: #f79263; + border-color: #f79263; +} +.infobox-green { + color: #9abc32; + border-color: #9abc32; +} +.infobox-green > .infobox-icon > .ace-icon { + background-color: #9abc32; +} +.infobox-green.infobox-dark { + background-color: #9abc32; + border-color: #9abc32; +} +.infobox-green2 { + color: #0490a6; + border-color: #0490a6; +} +.infobox-green2 > .infobox-icon > .ace-icon { + background-color: #0490a6; +} +.infobox-green2.infobox-dark { + background-color: #0490a6; + border-color: #0490a6; +} +.infobox-grey { + color: #999999; + border-color: #999999; +} +.infobox-grey > .infobox-icon > .ace-icon { + background-color: #999999; +} +.infobox-grey.infobox-dark { + background-color: #999999; + border-color: #999999; +} +.infobox-black { + color: #393939; + border-color: #393939; +} +.infobox-black > .infobox-icon > .ace-icon { + background-color: #393939; +} +.infobox-black.infobox-dark { + background-color: #393939; + border-color: #393939; +} +.infobox-dark { + margin: 1px 1px 0 0; + border-color: transparent !important; + border-width: 0; + color: #FFF; + padding: 4px; +} +.infobox-dark > .infobox-icon > .ace-icon, +.infobox-dark > .infobox-icon > .ace-icon:before { + background-color: transparent; + box-shadow: none !important; + text-shadow: none; + border-radius: 0; + font-size: 30px; +} +.infobox-dark > .infobox-icon > .ace-icon:before { + opacity: 1; + filter: alpha(opacity=100); +} +.infobox-dark .infobox-content { + color: #FFF; +} +.infobox > .infobox-progress { + padding-top: 0; + display: inline-block; + vertical-align: top; + width: 44px; +} +.infobox > .infobox-chart { + padding-top: 0; + display: inline-block; + vertical-align: text-bottom; + width: 44px; + text-align: center; +} +.infobox > .infobox-chart > .sparkline { + font-size: 24px; +} +.infobox > .infobox-chart canvas { + vertical-align: middle !important; +} +.infobox > .stat { + display: inline-block; + position: absolute; + right: 20px; + top: 11px; + text-shadow: none; + color: #ABBAC3; + font-size: 13px; + font-weight: bold; + padding-right: 18px; + padding-top: 3px; +} +.infobox > .stat:before { + display: inline-block; + content: ""; + width: 8px; + height: 11px; + background-color: #ABBAC3; + position: absolute; + right: 4px; + top: 7px; +} +.infobox > .stat:after { + display: inline-block; + content: ""; + position: absolute; + right: 1px; + top: -8px; + border: 12px solid transparent; + border-width: 8px 7px; + border-bottom-color: #ABBAC3; +} +.infobox > .stat.stat-success { + color: #77C646; +} +.infobox > .stat.stat-success:before { + background-color: #77C646; +} +.infobox > .stat.stat-success:after { + border-bottom-color: #77C646; +} +.infobox > .stat.stat-important { + /*pointing down*/ + color: #E4564F; +} +.infobox > .stat.stat-important:before { + background-color: #E4564F; + top: 3px; +} +.infobox > .stat.stat-important:after { + border-top-color: #E4564F; + border-bottom-color: transparent; + bottom: -6px; + top: auto; +} +.infobox.infobox-dark > .stat { + color: #FFF; +} +.infobox.infobox-dark > .stat:before { + background-color: #E1E5E8; +} +.infobox.infobox-dark > .stat:after { + border-bottom-color: #E1E5E8; +} +.infobox.infobox-dark > .stat.stat-success { + color: #FFF; +} +.infobox.infobox-dark > .stat.stat-success:before { + background-color: #D0E29E; +} +.infobox.infobox-dark > .stat.stat-success:after { + border-bottom-color: #D0E29E; +} +.infobox.infobox-dark > .stat.stat-important { + color: #FFF; +} +.infobox.infobox-dark > .stat.stat-important:before { + background-color: #FF8482; + top: 3px; +} +.infobox.infobox-dark > .stat.stat-important:after { + border-top-color: #FF8482; + border-bottom-color: transparent; + bottom: -6px; + top: auto; +} +.infobox > .badge { + position: absolute; + right: 20px; + top: 11px; + border-radius: 0; + text-shadow: none; + color: #FFF; + font-size: 11px; + font-weight: bold; + line-height: 15px; + height: 16px; + padding: 0 1px; +} +.infobox.infobox-dark > .badge { + color: #FFF; + background-color: rgba(255, 255, 255, 0.2) !important; + border: 1px solid #F1F1F1; + top: 2px; + right: 2px; +} +.infobox.infobox-dark > .badge.badge-success > .ace-icon { + color: #C6E9A1; +} +.infobox.infobox-dark > .badge.badge-important > .ace-icon { + color: #ECB792; +} +.infobox.infobox-dark > .badge.badge-warning > .ace-icon { + color: #ECB792; +} +.infobox-small { + width: 135px; + height: 52px; + text-align: left; + padding-bottom: 5px; +} +.infobox-small > .infobox-icon, +.infobox-small > .infobox-chart, +.infobox-small > .infobox-progress { + display: inline-block; + width: 40px; + max-width: 40px; + height: 42px; + line-height: 38px; + vertical-align: middle; +} +.infobox-small > .infobox-data { + display: inline-block; + text-align: left; + vertical-align: middle; + max-width: 72px; + min-width: 0; +} +.infobox-small > .infobox-chart > .sparkline { + font-size: 14px; + margin-left: 2px; +} +.percentage { + font-size: 14px; + font-weight: bold; + display: inline-block; + vertical-align: top; +} +.infobox-small .percentage { + font-size: 13px; + font-weight: normal; + margin-top: 2px; + margin-left: 2px; +} +.pricing-box:not(:first-child) { + padding-left: 7px; +} +.pricing-box:not(:last-child) { + padding-right: 7px; +} +.pricing-box .price { + font-size: 22px; + line-height: 20px; + height: 28px; + text-align: center; + color: #555; +} +.pricing-box .price small { + font-size: 22px; +} +.pricing-box .btn { + font-size: 16px; +} +.pricing-box .widget-header { + /* the title */ + text-align: center; + padding-left: 0; +} +@media only screen and (max-width: 480px) { + .pricing-box { + margin: 0; + margin-bottom: 16px; + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: -1px; + } + .pricing-box:nth-child(odd) { + padding-left: 12px !important; + } + .pricing-box:nth-child(even) { + padding-right: 12px !important; + } +} +@media only screen and (max-width: 479px) { + .pricing-box { + margin: 0; + margin-bottom: 16px; + width: 100%; + padding-left: 12px !important; + padding-right: 12px !important; + } +} +.pricing-table-header { + padding-top: 0; + margin-top: 0; + text-align: left; +} +.pricing-table-header > li { + padding: 7px 0 7px 11px; + font-size: 13px; +} +.pricing-table { + margin-top: 0; +} +.pricing-table > li { + text-align: center; + padding: 7px 0; + font-size: 13px; +} +.list-striped > li:nth-child(odd) { + background-color: #FFF; +} +.list-striped > li:nth-child(even) { + background-color: #F2F3EB; +} +.list-striped.pricing-table-header > li:nth-child(even) { + background-color: #EEE; +} +.pricing-box-small { + box-shadow: none; + margin-left: -2px; + background-color: #FFF; + position: relative; + z-index: 10; +} +.pricing-box-small .price { + line-height: 20px; + height: 28px; + text-align: center; +} +.pricing-box-small .price .label:before, +.pricing-box-small .price .label:after { + margin-top: -2px; + opacity: 0.9; + filter: alpha(opacity=90); +} +.pricing-box-small:hover { + box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.15); + z-index: 11; + -webkit-transform: scale(1.04); + -ms-transform: scale(1.04); + -o-transform: scale(1.04); + transform: scale(1.04); +} +.pricing-box-small:hover .price > .label { + -webkit-transform: scale(0.96); + -ms-transform: scale(0.96); + -o-transform: scale(0.96); + transform: scale(0.96); +} +.pricing-span { + margin: 0; + width: 19%; + max-width: 150px !important; + min-width: 110px !important; + float: left !important; +} +.pricing-span-header { + padding-right: 0; +} +@media only screen and (min-width: 480px) { + .pricing-span-body { + padding-left: 0; + padding-right: 0; + } +} +@media only screen and (max-width: 480px) { + .pricing-span-header, + .pricing-span-body { + width: 100%; + padding-right: 12px; + } +} +.login-container { + width: 375px; + margin: 0 auto; +} +.login-layout { + background-color: #1D2024; +} +.login-layout .main-container:before { + display: none; +} +.login-layout .main-content { + margin-left: 0 !important; + margin-right: 0 !important; + min-height: 100%; + padding-left: 15px; + padding-right: 15px; +} +.login-layout label { + margin-bottom: 11px; +} +.login-layout .widget-box { + visibility: hidden; + position: fixed; + z-index: -5; + border-bottom: none; + box-shadow: none; + padding: 6px; + background-color: #394557; + -moz-transform: scale(0,1) translate(-150px); + -webkit-transform: scale(0,1) translate(-150px); + -o-transform: scale(0,1) translate(-150px); + -ms-transform: scale(0,1) translate(-150px); + transform: scale(0,1) translate(-150px); +} +.login-layout .widget-box.visible { + visibility: visible; + position: relative; + z-index: auto; + -moz-transform: scale(1,1) translate(0); + -webkit-transform: scale(1,1) translate(0); + -o-transform: scale(1,1) translate(0); + -ms-transform: scale(1,1) translate(0); + transform: scale(1,1) translate(0); + transition: transform .3s ease; + -moz-transition: -moz-transform 0.3s ease; + -webkit-transition: -webkit-transform 0.3s ease; + -o-transition: -o-transform 0.2s ease; +} +.login-layout .widget-box .widget-main { + padding: 16px 36px 36px; + background: #F7F7F7; +} +.login-layout .widget-box .widget-main form { + margin: 0; +} +.login-layout .widget-box .widget-body .toolbar > div > a { + font-size: 15px; + font-weight: 400; + text-shadow: 1px 0px 1px rgba(0, 0, 0, 0.25); +} +.login-box .forgot-password-link { + color: #FE9; +} +.login-box .user-signup-link { + color: #CF7; +} +.login-box .toolbar { + background: #5090C1; + border-top: 2px solid #597597; +} +.login-box .toolbar > div { + width: 50%; + display: inline-block; + padding: 9px 0 11px; +} +.login-box .toolbar > div:first-child { + float: left; + text-align: left; +} +.login-box .toolbar > div:first-child > a { + margin-left: 11px; +} +.login-box .toolbar > div:first-child + div { + float: right; + text-align: right; +} +.login-box .toolbar > div:first-child + div > a { + margin-right: 11px; +} +.forgot-box .toolbar { + background: #C16050; + border-top: 2px solid #976559; + padding: 9px 18px; +} +.signup-box .toolbar { + background: #76B774; + border-top: 2px solid #759759; + padding: 9px 18px; +} +.forgot-box .back-to-login-link, +.signup-box .back-to-login-link { + color: #FE9; + font-size: 14px; + font-weight: bold; + text-shadow: 1px 0px 1px rgba(0, 0, 0, 0.25); +} +/* social login */ +.login-layout .login-box .widget-main { + padding-bottom: 16px; +} +.social-or-login { + margin-top: 4px; + text-align: center; + position: relative; + z-index: 1; +} +.social-or-login :first-child { + display: inline-block; + background: #F7F7F7; + padding: 0 8px; + color: #5090C1; + font-size: 13px; +} +.social-or-login:before { + content: ""; + display: block; + position: absolute; + z-index: -1; + top: 50%; + left: 0; + right: 0; + border-top: 1px dotted #A6C4DB; +} +.social-login a { + border-radius: 100%; + width: 42px; + height: 42px; + line-height: 46px; + padding: 0; + margin: 0 1px; + border-width: 0; +} +.social-login a > .ace-icon { + font-size: 24px; + margin: 0; +} +@media only screen and (max-width: 540px) { + .login-layout .widget-box .widget-main { + padding: 16px; + } + .login-container { + width: 98%; + } + .login-layout .widget-box { + padding: 0; + } + .login-layout .main-content { + padding-left: 6px; + padding-right: 6px; + } + .login-box .toolbar > div { + width: auto; + } +} +.light-login { + background: #dfe0e2 url('images/pattern.jpg') repeat; +} +.light-login .widget-box { + padding: 1px 1px 0; + -webkit-box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.12); + box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.12); + border-bottom: 1px solid rgba(50, 50, 50, 0.33); +} +.light-login .widget-box .toolbar { + border-top-width: 1px; +} +.light-login .widget-box.login-box { + background-color: #BCC6CF; + background-color: rgba(100, 110, 120, 0.4); +} +.light-login .widget-box.signup-box { + background-color: #C1CEC4; + background-color: rgba(110, 120, 100, 0.4); +} +.light-login .widget-box.forgot-box { + background-color: #D2C5C5; + background-color: rgba(120, 110, 100, 0.4); +} +.blur-login { + background: #394557 url('images/meteorshower2.jpg') repeat; +} +.invoice-info { + line-height: 24px !important; + color: #444; + vertical-align: bottom; + margin-left: 9px; + margin-right: 9px; +} +.invoice-info-label { + display: inline-block; + max-width: 100px; + text-align: right; + font-size: 14px; +} +.invoice-box .label-large[class*="arrowed"] { + margin-left: 11px !important; + max-width: 95%; +} +.error-container { + margin: 20px; + padding: 0; + background: #FFF; +} +@media only screen and (max-width: 767px) { + .error-container { + margin: 12px; + } +} +@media only screen and (max-width: 479px) { + .error-container { + margin: 6px; + } +} +.ace-thumbnails { + list-style: none; + margin: 0; + padding: 0; +} +.ace-thumbnails > li { + float: left; + display: block; + position: relative; + overflow: hidden; + margin: 2px; + border: 2px solid #333; +} +.ace-thumbnails > li > :first-child { + display: block; + position: relative; +} +.ace-thumbnails > li > :first-child:focus { + outline: none; +} +.ace-thumbnails > li .tags { + display: inline-block; + position: absolute; + bottom: 0; + right: 0; + overflow: visible; + direction: rtl; + padding: 0; + margin: 0; + height: auto; + width: auto; + background-color: transparent; + border-width: 0; + vertical-align: inherit; +} +.ace-thumbnails > li .tags > .label-holder { + opacity: 0.92; + filter: alpha(opacity=92); + display: table; + margin: 1px 0 0 0; + direction: ltr; + text-align: left; +} +.ace-thumbnails > li .tags > .label-holder:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.ace-thumbnails > li > .tools { + position: absolute; + top: 0; + bottom: 0; + left: -30px; + width: 24px; + background-color: rgba(0, 0, 0, 0.55); + text-align: center; + vertical-align: middle; + -webkit-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + transition: all 0.2s ease; +} +.ace-thumbnails > li > .tools.tools-right { + left: auto; + right: -30px; +} +.ace-thumbnails > li > .tools.tools-bottom { + width: auto; + height: 28px; + left: 0; + right: 0; + top: auto; + bottom: -30px; +} +.ace-thumbnails > li > .tools.tools-top { + width: auto; + height: 28px; + left: 0; + right: 0; + top: -30px; + bottom: auto; +} +.ace-thumbnails > li:hover > .tools { + left: 0; + right: 0; +} +.ace-thumbnails > li:hover > .tools.tools-bottom { + top: auto; + bottom: 0; +} +.ace-thumbnails > li:hover > .tools.tools-top { + bottom: auto; + top: 0; +} +.ace-thumbnails > li:hover > .tools.tools-right { + left: auto; + right: 0; +} +.ace-thumbnails > li > .in.tools { + left: 0; + right: 0; +} +.ace-thumbnails > li > .in.tools.tools-bottom { + top: auto; + bottom: 0; +} +.ace-thumbnails > li > .in.tools.tools-top { + bottom: auto; + top: 0; +} +.ace-thumbnails > li > .in.tools.tools-right { + left: auto; + right: 0; +} +.ace-thumbnails > li > .tools > a, +.ace-thumbnails > li > :first-child .inner a { + display: inline-block; + color: #FFF; + font-size: 18px; + font-weight: normal; + padding: 0 4px; +} +.ace-thumbnails > li > .tools > a:hover, +.ace-thumbnails > li > :first-child .inner a:hover { + text-decoration: none; + color: #C9E2EA; +} +.ace-thumbnails > li .tools.tools-bottom > a, +.ace-thumbnails > li .tools.tools-top > a { + display: inline-block; +} +.ace-thumbnails > li > :first-child > .text { + position: absolute; + right: 0; + left: 0; + bottom: 0; + top: 0; + text-align: center; + color: #FFF; + background-color: rgba(0, 0, 0, 0.55); + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + transition: all 0.2s ease; +} +.ace-thumbnails > li > :first-child > .text:before { + /* makes the inner text become vertically centered*/ + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; + margin-right: 0; + /* Adjusts for spacing */ +} +.ace-thumbnails > li > :first-child > .text > .inner { + padding: 4px 0; + margin: 0; + display: inline-block; + vertical-align: middle; + max-width: 90%; +} +.ace-thumbnails > li:hover > :first-child > .text { + opacity: 1; + filter: alpha(opacity=100); +} +@media only screen and (max-width: 480px) { + .ace-thumbnails { + text-align: center; + } + .ace-thumbnails > li { + float: none; + display: inline-block; + } +} +.dialogs { + padding: 9px; + position: relative; +} +.itemdiv { + padding-right: 3px; + min-height: 66px; + position: relative; +} +.itemdiv > .user { + display: inline-block; + width: 42px; + position: absolute; + left: 0; +} +.itemdiv > .user > img, +.itemdiv > .user > .img { + border-radius: 100%; + border: 2px solid #5293C4; + max-width: 40px; + position: relative; +} +.itemdiv > .user > .img { + padding: 2px; +} +.itemdiv > .body { + width: auto; + margin-left: 50px; + margin-right: 12px; + position: relative; +} +.itemdiv > .body > .time { + display: block; + font-size: 11px; + font-weight: bold; + color: #666; + position: absolute; + right: 9px; + top: 0; +} +.itemdiv > .body > .time .ace-icon { + font-size: 14px; + font-weight: normal; +} +.itemdiv > .body > .name { + display: block; + color: #999; +} +.itemdiv > .body > .name > b { + color: #777; +} +.itemdiv > .body > .text { + display: block; + position: relative; + margin-top: 2px; + padding-bottom: 19px; + padding-left: 7px; + font-size: 13px; +} +.itemdiv > .body > .text:after { + display: block; + content: ""; + height: 1px; + font-size: 0; + overflow: hidden; + position: absolute; + left: 16px; + right: -12px; + margin-top: 9px; + border-top: 1px solid #E4ECF3; +} +.itemdiv > .body > .text > .ace-icon:first-child { + color: #DCE3ED; + margin-right: 4px; +} +.itemdiv:last-child > .body > .text { + border-bottom-width: 0; +} +.itemdiv:last-child > .body > .text:after { + display: none; +} +.itemdiv.dialogdiv { + padding-bottom: 14px; +} +.itemdiv.dialogdiv:before { + position: absolute; + display: block; + content: ""; + top: 0; + bottom: 0; + left: 19px; + width: 3px; + max-width: 3px; + background-color: #E1E6ED; + border: 1px solid #D7DBDD; + border-width: 0 1px; +} +.itemdiv.dialogdiv:last-child { + padding-bottom: 0; +} +.itemdiv.dialogdiv:last-child:before { + display: none; +} +.itemdiv.dialogdiv > .user > img { + border-color: #C9D6E5; +} +.itemdiv.dialogdiv > .body { + border: 1px solid #DDE4ED; + padding: 5px 8px 8px; + border-left-width: 2px; + margin-right: 1px; +} +.itemdiv.dialogdiv > .body:before { + content: ""; + display: block; + position: absolute; + left: -7px; + top: 11px; + width: 8px; + height: 8px; + border: 2px solid #DDE4ED; + border-width: 2px 0 0 2px; + background-color: #FFF; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +.itemdiv.dialogdiv > .body > .time { + position: static; + float: right; +} +.itemdiv.dialogdiv > .body > .text { + padding-left: 0; + padding-bottom: 0; +} +.itemdiv.dialogdiv > .body > .text:after { + display: none; +} +.itemdiv.dialogdiv .tooltip-inner { + word-break: break-all; +} +.itemdiv.memberdiv { + width: 175px; + padding: 2px; + margin: 3px 0; + float: left; + border-bottom: 1px solid #E8E8E8; +} +@media (min-width: 992px) { + .itemdiv.memberdiv { + max-width: 50%; + } +} +@media (max-width: 991px) { + .itemdiv.memberdiv { + min-width: 33.333%; + } +} +.itemdiv.memberdiv > .user > img { + border-color: #DCE3ED; +} +.itemdiv.memberdiv > .body > .time { + position: static; +} +.itemdiv.memberdiv > .body > .name { + line-height: 18px; + height: 18px; + margin-bottom: 0; +} +.itemdiv.memberdiv > .body > .name > a { + display: inline-block; + max-width: 100px; + max-height: 18px; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; +} +.itemdiv .tools { + position: absolute; + right: 5px; + bottom: 10px; + display: none; +} +.itemdiv .tools .btn { + border-radius: 36px; + margin: 1px 0; +} +.itemdiv .body .tools { + bottom: 4px; +} +.itemdiv.commentdiv .tools { + right: 9px; +} +.itemdiv:hover .tools { + display: inline-block; +} +.item-list { + margin: 0; + padding: 0; + list-style: none; +} +.item-list > li { + padding: 9px; + background-color: #FFF; + margin-top: -1px; + position: relative; +} +.item-list > li.selected { + color: #8090A0; + background-color: #F4F9FC; +} +.item-list > li.selected label, +.item-list > li.selected .lbl { + text-decoration: line-through; + color: #8090A0; +} +.item-list > li > .checkbox { + display: inline-block; +} +.item-list > li > label.inline { + display: inline-block; +} +.item-list > li label { + font-size: 13px; +} +.item-list > li .percentage { + font-size: 11px; + font-weight: bold; + color: #777; +} +.item-list > li.ui-sortable-helper { + cursor: move; +} +li[class*="item-"] { + border: 1px solid #DDD; + border-left-width: 3px; +} +li.item-orange { + border-left-color: #e8b110; +} +li.item-orange2 { + border-left-color: #f79263; +} +li.item-red { + border-left-color: #d53f40; +} +li.item-red2 { + border-left-color: #d15b47; +} +li.item-green { + border-left-color: #9abc32; +} +li.item-green2 { + border-left-color: #0490a6; +} +li.item-blue { + border-left-color: #4f99c6; +} +li.item-blue2 { + border-left-color: #3983c2; +} +li.item-blue3 { + border-left-color: #1144eb; +} +li.item-pink { + border-left-color: #cb6fd7; +} +li.item-purple { + border-left-color: #6f3cc4; +} +li.item-black { + border-left-color: #505050; +} +li.item-grey { + border-left-color: #a0a0a0; +} +li.item-brown { + border-left-color: #a52a2a; +} +li.item-default { + border-left-color: #abbac3; +} +.ui-sortable-placeholder, +.ui-sortable-helper, +.ui-sortable-placeholder > a, +.ui-sortable-helper > a { + cursor: move !important; +} +@media only screen and (max-width: 480px) { + .itemdiv.memberdiv { + float: none; + width: auto; + } +} +.profile-user-info { + display: table; + width: 98%; + width: calc(100% - 24px); + margin: 0 auto; +} +.profile-info-row { + display: table-row; +} +.profile-info-name { + text-align: right; + padding: 6px 10px 6px 4px; + font-weight: normal; + color: #667E99; + background-color: transparent; + border-top: 1px dotted #D5E4F1; + display: table-cell; + width: 110px; + vertical-align: middle; +} +.profile-info-value { + display: table-cell; + padding: 6px 4px 6px 6px; + border-top: 1px dotted #D5E4F1; +} +.profile-info-value > span + span:before { + /* for a list of values (such as location city & country) put a comma between them */ + display: inline; + content: ","; + margin-left: 1px; + margin-right: 3px; + color: #666; + border-bottom: 1px solid #FFF; +} +.profile-info-value > span + span.editable-container:before { + display: none; +} +.profile-info-row:first-child .profile-info-name { + border-top: none; +} +.profile-info-row:first-child .profile-info-value { + border-top: none; +} +.profile-user-info-striped { + border: 1px solid #DCEBF7; +} +.profile-user-info-striped .profile-info-name { + color: #336199; + background-color: #EDF3F4; + border-top: 1px solid #F7FBFF; +} +.profile-user-info-striped .profile-info-value { + border-top: 1px dotted #DCEBF7; + padding-left: 12px; +} +.profile-picture { + border: 1px solid #CCC; + background-color: #FFF; + padding: 4px; + display: inline-block; + max-width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); +} +.profile-activity { + padding: 10px 4px; + border-bottom: 1px dotted #D0D8E0; + position: relative; + border-left: 1px dotted #FFF; + border-right: 1px dotted #FFF; +} +.profile-activity:first-child { + border-top: 1px dotted transparent; +} +.profile-activity:first-child:hover { + border-top-color: #D0D8E0; +} +.profile-activity:hover { + background-color: #F4F9FD; + border-left: 1px dotted #D0D8E0; + border-right: 1px dotted #D0D8E0; +} +.profile-activity img { + border: 2px solid #C9D6E5; + border-radius: 100%; + max-width: 40px; + margin-right: 10px; + margin-left: 0px; + box-shadow: none; +} +.profile-activity .thumbicon { + background-color: #74ABD7; + display: inline-block; + border-radius: 100%; + width: 38px; + height: 38px; + color: #FFF; + font-size: 18px; + text-align: center; + line-height: 38px; + margin-right: 10px; + margin-left: 0px; + text-shadow: none !important; +} +.profile-activity .time { + display: block; + margin-top: 4px; + color: #777; +} +.profile-activity a.user { + font-weight: bold; + color: #9585BF; +} +.profile-activity .tools { + position: absolute; + right: 12px; + bottom: 8px; + display: none; +} +.profile-activity:hover .tools { + display: block; +} +.user-profile .ace-thumbnails li { + border: 1px solid #CCC; + padding: 3px; + margin: 6px; +} +.user-profile .ace-thumbnails li .tools { + left: 3px; + right: 3px; +} +.user-profile .ace-thumbnails li:hover .tools { + bottom: 3px; +} +.user-profile .user-title-label:hover { + text-decoration: none; +} +.user-profile .user-title-label + .dropdown-menu { + margin-left: -12px; +} +.profile-contact-links { + padding: 4px 2px 5px; + border: 1px solid #E0E2E5; + background-color: #F8FAFC; +} +.btn-link:hover .ace-icon { + text-decoration: none !important; +} +.profile-social-links > a { + text-decoration: none; + margin: 0 1px; +} +.profile-social-links > a:hover > .ace-icon { + text-decoration: none; +} +.profile-skills .progress { + height: 26px; + margin-bottom: 2px; + background-color: transparent; +} +.profile-skills .progress .progress-bar { + line-height: 26px; + font-size: 13px; + font-weight: bold; + font-family: "Open Sans"; + padding: 0 8px; +} +.profile-users .user { + display: block; + position: static; + text-align: center; + width: auto; +} +.profile-users .user img { + padding: 2px; + border-radius: 100%; + border: 1px solid #AAA; + max-width: none; + width: 64px; + -webkit-transition: all 0.1s; + -o-transition: all 0.1s; + transition: all 0.1s; +} +.profile-users .user img:hover { + -webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,0.33); + box-shadow: 0 0 1px 1px rgba(0,0,0,0.33); +} +.profile-users .memberdiv { + background-color: #FFF; + width: 100px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: none; + text-align: center; + margin: 0 8px 24px; +} +.profile-users .memberdiv .name a:hover .ace-icon { + text-decoration: none; +} +.profile-users .memberdiv .body { + display: inline-block; + margin: 8px 0 0 0; +} +.profile-users .memberdiv .popover { + visibility: hidden; + min-width: 0; + max-height: 0; + max-width: 0; + margin-left: 0; + margin-right: 0; + top: -5%; + left: auto; + right: auto; + opacity: 0; + display: none; + position: absolute; + -webkit-transition: opacity 0.2s linear 0s, visibility 0s linear 0.2s, max-height 0s linear 0.2s, max-width 0s linear 0.2s, min-width 0s linear 0.2s; + -o-transition: opacity 0.2s linear 0s, visibility 0s linear 0.2s, max-height 0s linear 0.2s, max-width 0s linear 0.2s, min-width 0s linear 0.2s; + transition: opacity 0.2s linear 0s, visibility 0s linear 0.2s, max-height 0s linear 0.2s, max-width 0s linear 0.2s, min-width 0s linear 0.2s; +} +.profile-users .memberdiv .popover.right { + left: 100%; + right: auto; + display: block; +} +.profile-users .memberdiv .popover.left { + left: auto; + right: 100%; + display: block; +} +.profile-users .memberdiv > :first-child:hover .popover { + visibility: visible; + opacity: 1; + z-index: 1060; + max-height: 250px; + max-width: 250px; + min-width: 150px; + -webkit-transition-delay: 0s; + -moz-transition-delay: 0s; + -o-transition-delay: 0s; + transition-delay: 0s; +} +.profile-users .memberdiv .tools { + position: static; + display: block; + width: 100%; + margin-top: 2px; +} +.profile-users .memberdiv .tools > a { + margin: 0 2px; +} +.profile-users .memberdiv .tools > a:hover { + text-decoration: none; +} +.user-status { + display: inline-block; + width: 11px; + height: 11px; + background-color: #FFF; + border: 3px solid #AAA; + border-radius: 100%; + vertical-align: middle; + margin-right: 1px; +} +.user-status.status-online { + border-color: #8AC16C; +} +.user-status.status-busy { + border-color: #E07F69; +} +.user-status.status-idle { + border-color: #FFB752; +} +.tab-content.profile-edit-tab-content { + border: 1px solid #DDD; + padding: 8px 32px 32px; + -webkit-box-shadow: 1px 1px 0 0 rgba(0, 0, 0, 0.2); + box-shadow: 1px 1px 0 0 rgba(0, 0, 0, 0.2); + background-color: #FFF; +} +@media only screen and (max-width: 480px) { + .profile-info-name { + width: 80px; + } + .profile-user-info-striped .profile-info-name { + float: none; + width: auto; + text-align: left; + padding: 6px 4px 6px 10px; + display: block; + } + .profile-user-info-striped .profile-info-value { + margin-left: 10px; + display: block; + } +} +@media only screen and (max-width: 480px) { + .user-profile .memberdiv { + width: 50%; + margin-left: 0; + margin-right: 0; + } +} +.inbox-tabs.nav-tabs > li > a { + background-color: #FAFAFA; +} +.inbox-tabs.nav-tabs > li.active:not(.open) > a, +.inbox-tabs.nav-tabs > li.active:not(.open) > a:hover, +.inbox-tabs.nav-tabs > li.active:not(.open) > a:focus { + background-color: #F1F5FA; + box-shadow: 0 -2px 3px 0 rgba(0, 0, 0, 0.1); + color: #48768E; +} +.inbox-tabs.nav-tabs > li > a.btn-new-mail { + background-color: transparent; + border: none !important; + padding: 0 !important; +} +.inbox-tabs.nav-tabs > li > a.btn-new-mail > .btn { + border-width: 0 !important; + border-radius: 3px !important; + padding: 0 6px !important; + position: relative; + transition: none !important; +} +.inbox-tabs.nav-tabs > li.active > a.btn-new-mail { + box-shadow: none !important; +} +.inbox-tabs.nav-tabs > li.active > a.btn-new-mail > .btn:before { + content: ""; + display: block; + position: absolute; + top: 100%; + left: 50%; + margin-left: -6px; + border-width: 6px 8px; + border-style: solid; + border-color: transparent; + border-top-color: inherit; +} +.inbox-tabs.nav-tabs.tab-size-bigger > li > a { + padding: 5px 15px 7px; + font-size: 14px; +} +.inbox-tabs.nav-tabs.tab-size-bigger > li > a > .ace-icon:first-child { + margin-bottom: 5px; +} +.inbox-tabs.nav-tabs.tab-size-bigger > li > a.btn-new-mail > .btn { + padding: 10px !important; + border-radius: 7px !important; +} +.inbox-tabs.nav-tabs.tab-size-bigger > li.active > a.btn-new-mail { + margin-top: 0 !important; + top: 1px; +} +.inbox-tabs.nav-tabs.tab-size-bigger > li.active > a.btn-new-mail > .btn:before { + left: 50%; + margin-left: -8px; + border-width: 8px 10px; +} +@media only screen and (max-width: 479px) { + .inbox-tabs > .li-new-mail { + display: block; + text-align: right; + margin-bottom: 8px !important; + float: none !important; + } + .inbox-tabs > .li-new-mail > .btn-new-mail { + display: inline-block; + width: auto; + } +} +.message-container { + position: relative; +} +.message-list { + position: relative; +} +.message-item { + border: 1px solid #EAEDF1; + border-bottom-width: 0; + padding: 12px 12px 14px; + line-height: 18px; + position: relative; + background-color: #FFF; +} +.message-item:first-child { + border-top-width: 0; +} +.message-item:hover { + border-color: #E2EAF2; + background-color: #F2F6F9; +} +.message-item:hover + .message-item { + border-top-color: #E2EAF2; +} +.message-item:hover + .message-item.selected { + border-top-color: #FFF; +} +.message-item.selected { + background-color: #EFF4F7; + border-color: #FFF #E2EAF2; +} +.message-item.selected + .message-item { + border-top-color: #FFF; +} +.message-item.selected + .message-item:hover + .message-item { + border-top-color: #FFF; +} +.message-navbar input.ace + .lbl::before, +.message-item input.ace + .lbl::before { + top: auto; +} +.message-item .sender { + margin: 0 6px 0 4px; + vertical-align: middle; + color: #467287; + display: inline-block; + width: 110px; + height: 18px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + cursor: pointer; +} +.message-item.message-unread .sender { + color: #6A9CBA; + font-weight: bold; +} +.message-item .summary { + vertical-align: middle; + display: inline-block; + position: relative; + margin-left: 30px; + max-width: 250px; + max-width: calc(100% - 300px); + min-width: 200px; + white-space: nowrap; +} +.message-item .summary .text { + color: #555; + vertical-align: middle; + display: inline-block; + width: auto; + max-width: 100%; + height: 18px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + cursor: pointer; +} +.message-item .summary .text:hover { + text-decoration: underline; +} +.message-item .summary .message-flags { + display: block; + position: absolute; + right: 100%; + margin-right: 4px; + height: 18px; + white-space: nowrap; +} +.message-item.message-unread .summary .text { + color: #609FC4; + font-weight: bold; +} +.message-item .time { + float: right; + width: 60px; + height: 18px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + color: #666; +} +.message-item.message-unread .time { + font-weight: bold; + color: #609FC4; +} +.message-item.message-unread .message-content .time { + font-weight: normal; +} +.message-item .attachment { + color: #999; + font-size: 18px; + vertical-align: middle; + float: right; + margin: 0 12px; + position: relative; +} +.message-item.message-unread .attachment { + color: #4F99C6; +} +.message-content .time { + font-weight: normal; +} +.message-star { + vertical-align: middle; + margin: 2px 4px 0 6px; + font-size: 15px; + cursor: pointer; +} +.message-star:hover { + color: #feb902 !important; + text-decoration: none; +} +.mail-tag:empty { + display: inline-block; + width: 8px; + height: 11px; + padding: 0; + line-height: normal; + vertical-align: middle; + margin: 0 1px 0 0; +} +.badge.mail-tag { + border-radius: 2px; +} +.dropdown-menu > li > a > .mail-tag { + vertical-align: inherit; +} +@media only screen and (max-width: 991px) { + .message-item .summary { + min-width: 0; + } + .message-item .sender { + width: 100px; + } +} +@media only screen and (max-width: 550px) { + .message-item .summary { + margin: 8px 0 0 32px; + max-width: 95%; + min-width: 0; + display: block; + } + .message-item .sender { + width: auto; + max-width: 150px; + } + .message-item .summary .text { + max-width: 95%; + } +} +.btn-message, +.btn-message:hover, +.btn-message:focus, +.btn-message:active, +.open .btn-message.dropdown-toggle { + background-color: #FFF !important; + border: 1px solid #94B9CE !important; + color: #7CA3BA !important; + text-shadow: none !important; +} +.message-content { + padding: 16px 12px; + border: 1px solid #E9E9E9; + -webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,0.02); + box-shadow: 0 0 1px 1px rgba(0,0,0,0.02); + background-color: rgba(255, 255, 255, 0.8); + border-top-width: 0; +} +.message-item .message-content { + margin-top: 16px; + border-top-width: 1px; +} +.message-body { + padding: 0 9px; + color: #6A7177; +} +.message-navbar { + line-height: 24px; + padding: 10px 12px; + border: 1px solid #D6E1EA; + border-color: #D6E1EA transparent; + background-color: #F1F5FA; + text-align: center; + position: relative; +} +.message-navbar .dropdown-toggle, +.message-content .dropdown-toggle { + color: #777; +} +.message-navbar .dropdown-toggle:hover, +.message-content .dropdown-toggle:hover, +.message-navbar .dropdown-toggle:focus, +.message-content .dropdown-toggle:focus { + text-decoration: none; + color: #2283C5; +} +.message-bar { + display: inline-block; + min-height: 28px; +} +@media only screen and (max-width: 480px) { + .message-bar { + display: block; + min-height: 60px; + } +} +.message-footer { + background-color: #F1F1F1; + padding: 12px 16px; + border: 1px solid #E6E6E6; + border-width: 1px 0; + border-top: 1px solid #E4E9EE; +} +.message-footer .pagination { + margin: 0; +} +.message-footer .pagination > li { + margin: 0; + padding: 0; +} +.message-footer .pagination > li > a, +.message-footer .pagination > li > span { + color: #777; + padding: 3px 6px; + margin-left: 1px; + margin-right: 1px; + background-color: transparent; + border: 1px solid transparent; +} +.message-footer .pagination > li.disabled > span { + color: #BBBBBB; + cursor: default; + background-color: transparent; + border-color: transparent; +} +.message-footer .pagination > li > a:hover { + border-color: #91bad6; + color: #2283C5; + text-decoration: none; + background-color: #FFF; +} +.message-footer input[type=text] { + font-size: 12px; + width: 34px; + height: 24px; + line-height: 20px; + margin-bottom: 0; + padding: 3px; + vertical-align: middle; + text-align: center; +} +.message-footer-style2 .pagination > li > a, +.message-footer-style2 .pagination > li > span { + border: 1px solid #B5B5B5; + border-radius: 100% !important; + width: 26px; + height: 26px; + line-height: 26px; + display: inline-block; + text-align: center; + padding: 0; +} +.message-footer-style2 .pagination > li > span, +.message-footer-style2 .pagination > li.disabled > span { + border-color: #CCC; +} +.message-footer-style2 .pagination > li > a:hover { + border-color: #84AFC9; + background-color: #F7F7F7; +} +.message-item.message-inline-open { + background-color: #F2F6F9; + border: 1px solid #DDD; + border-bottom-color: #CCC; +} +.message-item.message-inline-open:first-child { + border-top-color: #EEE; +} +.message-item.message-inline-open:last-child { + border-bottom-color: #DDD; +} +.message-item.message-inline-open + .message-item { + border-bottom-color: transparent; +} +.message-loading-overlay { + position: absolute; + z-index: 14; + top: 0; + bottom: 0; + right: 0; + left: 0; + background-color: rgba(255, 255, 255, 0.5); + text-align: center; +} +.message-loading-overlay > .ace-icon { + position: absolute; + top: 15%; + left: 0; + right: 0; + text-align: center; +} +.message-content .sender { + color: #6A9CBA; + font-weight: bold; + width: auto; + text-overflow: inherit; + vertical-align: middle; + margin: 0; +} +.message-content .time { + width: auto; + text-overflow: inherit; + white-space: normal; + float: none; + vertical-align: middle; +} +ul.attachment-list { + margin: 6px 0 4px 8px; +} +ul.attachment-list > li { + margin-bottom: 3px; +} +.message-attachment { + padding-left: 10px; + padding-right: 10px; +} +.attached-file { + color: #777; + width: 200px; + display: inline-block; +} +.attached-file > .ace-icon { + display: inline-block; + width: 16px; + margin-right: 2px; + vertical-align: middle; +} +.attached-file:hover { + text-decoration: none; + color: #438EB9; +} +.attached-file:hover .attached-name { + color: #2283C5; +} +.attached-file .attached-name { + display: inline-block; + max-width: 175px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + vertical-align: middle; +} +.messagebar-item-left, +.messagebar-item-right { + position: absolute; + bottom: 14px; + left: 12px; + text-align: left; +} +.messagebar-item-right { + right: 12px; + left: auto; +} +.message-navbar .nav-search { + right: auto; + left: 5px; + top: auto; + bottom: 11px; +} +.message-navbar .messagebar-item-left ~ .nav-search { + left: 60px; +} +.message-form { + border: 1px solid #ddd; + border-top: none; + padding-top: 22px; +} +@media only screen and (max-width: 480px) { + .message-form { + padding-left: 16px; + padding-right: 16px; + } +} +.message-form .form-actions { + margin-bottom: 0; +} +.message-form .wysiwyg-editor { + overflow: auto; + min-height: 150px; + max-height: 250px; + height: auto; +} +.btn-send-message { + position: relative; + top: 6px; + vertical-align: middle; +} +.btn-back-message-list { + color: #777; +} +.btn-back-message-list:hover { + color: #478FCA; + text-decoration: none; +} +.message-condensed .message-item { + padding-top: 8px; + padding-bottom: 9px; +} +.message-condensed .message-navbar, +.message-condensed .message-footer { + padding-top: 7px; + padding-bottom: 7px; +} +.message-condensed .messagebar-item-left, +.message-condensed .messagebar-item-right { + bottom: 9px; +} +.message-condensed .message-navbar .nav-search { + bottom: 7px; +} +@media only screen and (max-width: 480px) { + .message-condensed .message-bar { + min-height: 42px; + } +} +.inbox-folders .btn-block { + margin-top: 0; +} +@media only screen and (max-width: 767px) { + .inbox-folders.inbox-folders-responsive .btn-block { + width: 24%; + } +} +@media only screen and (max-width: 600px) { + .inbox-folders.inbox-folders-responsive .btn-block { + width: 48%; + } +} +@media only screen and (max-width: 320px) { + .inbox-folders.inbox-folders-responsive .btn-block { + width: 99%; + } +} +.inbox-folders .btn-lighter, +.inbox-folders .btn-lighter.active { + background-color: #F4F4F4 !important; + text-shadow: none !important; + color: #7C8395 !important; + border: 1px solid #FFF !important; + padding: 5px 11px; +} +.inbox-folders .btn-lighter.active { + background-color: #EDF2F8 !important; + color: #53617C !important; +} +.inbox-folders .btn-lighter:hover { + background-color: #EFEFEF !important; + color: #6092C4 !important; +} +.inbox-folders .btn > .ace-icon:first-child { + display: inline-block; + width: 14px; + text-align: left; +} +.inbox-folders .btn-lighter + .btn-lighter { + border-top-width: 0 !important; +} +.inbox-folders .btn.active:before { + display: block; + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: -1px; + border-left: 3px solid #4F99C6; +} +.inbox-folders .btn.active:after { + display: none; +} +.inbox-folders .btn .counter { + border-radius: 3px; + position: absolute; + right: 8px; + top: 8px; + padding-left: 6px; + padding-right: 6px; + opacity: 0.75; + filter: alpha(opacity=75); +} +.inbox-folders .btn:hover .badge { + opacity: 1; + filter: alpha(opacity=100); +} +.timeline-container { + position: relative; + padding-top: 4px; + margin-bottom: 32px; +} +.timeline-container:last-child { + margin-bottom: 0; +} +.timeline-container:before { + /* the vertical line running through icons */ + content: ""; + display: block; + position: absolute; + left: 28px; + top: 0; + bottom: 0; + border: 1px solid #E2E3E7; + background-color: #E7EAEF; + width: 4px; + border-width: 0 1px; +} +.timeline-container:first-child:before { + border-top-width: 1px; +} +.timeline-container:last-child:before { + border-bottom-width: 1px; +} +.timeline-item { + position: relative; + margin-bottom: 8px; +} +.timeline-item .widget-box { + background-color: #F2F6F9; + color: #595C66; +} +.timeline-item .transparent.widget-box { + border-left: 3px solid #DAE1E5; +} +.timeline-item .transparent .widget-header { + background-color: #ECF1F4; + border-bottom-width: 0; +} +.timeline-item .transparent .widget-header > .widget-title { + margin-left: 8px; +} +.timeline-item:nth-child(even) .widget-box { + background-color: #F3F3F3; + color: #616161; +} +.timeline-item:nth-child(even) .widget-box.transparent { + border-left-color: #DBDBDB !important; +} +.timeline-item:nth-child(even) .widget-box.transparent .widget-header { + background-color: #EEE !important; +} +.timeline-item .widget-box { + margin: 0; + position: relative; + max-width: none; + margin-left: 60px; +} +.timeline-item .widget-main { + margin: 0; + position: relative; + max-width: none; + border-bottom-width: 0; +} +.timeline-item .widget-body { + background-color: transparent; +} +.timeline-item .widget-toolbox { + padding: 4px 8px 0 !important; + background-color: transparent !important; + border-width: 0 !important; + margin: 0 0px !important; +} +.timeline-info { + float: left; + width: 60px; + text-align: center; + position: relative; +} +.timeline-info img { + border-radius: 100%; + max-width: 42px; +} +.timeline-info .label, +.timeline-info .badge { + font-size: 12px; +} +.timeline-container:not(.timeline-style2) .timeline-indicator { + opacity: 1; + border-radius: 100%; + display: inline-block; + font-size: 16px; + height: 36px; + line-height: 30px; + width: 36px; + text-align: center; + text-shadow: none !important; + padding: 0; + cursor: default; + border: 3px solid #FFF !important; +} +.timeline-label { + display: block; + clear: both; + margin: 0 0 18px; + margin-left: 34px; +} +.timeline-item img { + border: 1px solid #AAA; + padding: 2px; + background-color: #FFF; +} +.timeline-style2:before { + display: none; +} +.timeline-style2 .timeline-item { + padding-bottom: 22px; + margin-bottom: 0; +} +.timeline-style2 .timeline-item:last-child { + padding-bottom: 0; +} +.timeline-style2 .timeline-item:before { + content: ""; + display: block; + position: absolute; + left: 90px; + top: 5px; + bottom: -5px; + border-width: 0; + background-color: #DDD; + width: 2px; + max-width: 2px; +} +.timeline-style2 .timeline-item:last-child:before { + display: none; +} +.timeline-style2 .timeline-item:first-child:before { + display: block; +} +.timeline-style2 .timeline-item .transparent .widget-header { + background-color: transparent !important; +} +.timeline-style2 .timeline-item .transparent.widget-box { + background-color: transparent !important; + border-left: none !important; +} +.timeline-style2 .timeline-info { + width: 100px; +} +.timeline-style2 .timeline-indicator { + font-size: 0; + height: 12px; + line-height: 12px; + width: 12px; + border-width: 1px !important; + background-color: #FFFFFF !important; + position: absolute; + left: 85px; + top: 3px; + opacity: 1; + border-radius: 100%; + display: inline-block; + padding: 0; +} +.timeline-style2 .timeline-date { + display: inline-block; + width: 72px; + text-align: right; + margin-right: 25px; + color: #777; +} +.timeline-style2 .timeline-item .widget-box { + margin-left: 112px; +} +.timeline-style2 .timeline-label { + width: 75px; + text-align: center; + margin-left: 0; + margin-bottom: 10px; + text-align: right; + color: #666; + font-size: 14px; +} +.timeline-time { + text-align: center; + position: static; +} +.dataTables_length select { + width: 70px; + height: 25px; + padding: 2px 3px; +} +.dataTables_length label { + font-weight: normal; +} +.dataTables_filter { + text-align: right; +} +.dataTables_filter input[type=text], +.dataTables_filter input[type=search] { + width: 125px; + height: 18px; + line-height: 18px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + padding: 4px 6px; +} +.dataTables_filter label { + font-weight: normal; +} +.dataTables_info { + font-size: 14px; +} +.dataTables_paginate { + text-align: right; +} +.dataTables_paginate .pagination { + margin: 0 12px; +} +.dataTables_wrapper label { + display: inline-block; + font-size: 13px; +} +.dataTables_wrapper input[type=text], +.dataTables_wrapper input[type=search], +.dataTables_wrapper select { + margin-bottom: 0 !important; + margin: 0 4px; +} +.dataTables_wrapper .row { + margin: 0 !important; +} +.dataTables_wrapper .row:first-child { + padding-top: 12px; + padding-bottom: 12px; + background-color: #EFF3F8; +} +.dataTables_wrapper .row:first-child + .dataTable { + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; +} +.dataTables_wrapper .row:last-child { + border-bottom: 1px solid #e0e0e0; + padding-top: 12px; + padding-bottom: 12px; + background-color: #EFF3F8; +} +.dataTables_wrapper .dataTables_scroll + .row { + border-top: 1px solid #e0e0e0; +} +.dataTable { + margin-bottom: 0; +} +.dataTable > thead > tr > th[class*=sort] { + cursor: pointer; +} +.dataTable > thead > tr > th[class*=sort]:after { + float: right; + display: inline; + content: "\f0dc"; + font-family: FontAwesome; + font-size: 13px; + font-weight: normal; + color: #555; +} +.dataTable > thead > tr > th[class*=sort]:hover { + color: #547ea8; +} +.dataTable > thead > tr > th[class*=sorting_] { + color: #307ecc; +} +.dataTable > thead > tr > th.sorting_desc, +.dataTable > thead > tr > th.sorting_asc { + background-image: -webkit-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: -o-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: linear-gradient(to bottom, #eff3f8 0%, #e3e7ed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeff3f8', endColorstr='#ffe3e7ed', GradientType=0); +} +.dataTable > thead > tr > th.sorting_desc:after { + content: "\f0dd"; + top: -6px; + color: #307ecc; +} +.dataTable > thead > tr > th.sorting_asc:after { + content: "\f0de"; + top: 4px; + color: #307ecc; +} +.dataTable > thead > tr > th.sorting_disabled { + cursor: inherit; +} +.dataTable > thead > tr > th.sorting_disabled:after { + display: none; +} +.dataTables_scrollHead + .dataTables_scrollBody > .dataTable > thead > tr > th:after { + display: none; +} +.dataTables_scrollHeadInner { + width: auto !important; +} +.dataTables_scrollHeadInner > .dataTable > thead > tr > th { + border-bottom-width: 0 !important; +} +.dataTables_borderWrap .dataTables_scrollBody, +.dataTables_borderWrap .dataTables_scrollHead { + border: 1px solid #dddddd !important; + border-width: 0 1px !important; +} +.dataTables_borderWrap .dataTables_scrollBody .table-bordered, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered { + border-left-width: 0; + border-right-width: 0; +} +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > thead > tr > th:first-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > thead > tr > th:first-child, +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > tbody > tr > td:first-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > tbody > tr > td:first-child { + border-left-width: 0; +} +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > thead > tr > th:last-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > thead > tr > th:last-child, +.dataTables_borderWrap .dataTables_scrollBody .table-bordered > tbody > tr > td:last-child, +.dataTables_borderWrap .dataTables_scrollHead .table-bordered > tbody > tr > td:last-child { + border-right-width: 0; +} +table.dataTable { + clear: both; + max-width: none !important; +} +table.dataTable th:active { + outline: none; +} +div.dataTables_scrollHead table { + margin-bottom: 0 !important; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.dataTables_scrollHead table thead tr:last-child th:first-child, +div.dataTables_scrollHead table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody tbody tr:first-child th, +div.dataTables_scrollBody tbody tr:first-child td { + border-top: none; +} +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} +.DTTT_Print .main-content { + margin-left: 0 !important; + margin-right: 0 !important; +} +.DTTT_Print .navbar-fixed-top + .main-container { + padding-top: 0; +} +.tableTools-container { + margin-bottom: 8px; +} +.tableTools-alert.gritter-item-wrapper { + padding: 12px 11px 8px; + z-index: 1999; +} +ul.ColVis_collection { + z-index: 2002; +} +ul.ColVis_collection > li > a { + padding: 0; +} +ul.ColVis_collection > li > a:focus { + outline: none; +} +ul.ColVis_collection > li.ColVis_Special { + border-top: 1px solid #DDD; +} +ul.ColVis_collection > li.ColVis_Special > a { + padding: 6px 11px 7px; + text-align: center; +} +ul.ColVis_collection label { + margin: auto; + padding: 6px 11px 7px; + display: block; + cursor: pointer; +} +div.ColVis_catcher { + position: absolute; + z-index: 1101; +} +div.ColVis_collectionBackground { + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-color: black; + z-index: 1100; +} +.fc-toolbar h2 { + font-size: 22px; + color: #65A0CE; +} +.fc-unthemed th, +.fc-unthemed td, +.fc-unthemed hr, +.fc-unthemed thead, +.fc-unthemed tbody, +.fc-unthemed .fc-row, +.fc-unthemed .fc-popover { + border-color: #BCD4E5; +} +.fc-unthemed .fc-today { + background: #FFC; +} +.fc-event { + border-width: 0; + color: #ffffff; + padding: 1px 1px 2px 2px; + border-radius: 0; +} +.fc-event:not([class*="label-"]) { + background-color: #abbac3; +} +.fc-event.label-yellow { + color: #996633; +} +.fc-event.label-light { + color: #888888; +} +.label-yellow .fc-event { + color: #996633; +} +.label-light .fc-event { + color: #888; +} +[class*="label-"] > .fc-event, +[class*="label-"] > .fc-event > .fc-event-skin.fc-event-head { + background-color: inherit; +} +.fc-event.ui-draggable-dragging { + cursor: move; +} +.fc-event.fc-event-vert, +.fc-event-vert > .fc-event { + padding: 0 0 1px; +} +.fc-day-number { + color: #2E6589; + opacity: 1; + filter: alpha(opacity=100); +} +.fc-widget-header, +.fc .fc-axis { + background: #ECF2F7; + color: #8090A0; +} +.fc-event-hori, +.fc-event-vert { + border-radius: 0 !important; + border-color: transparent; +} +.fc-event-vert .fc-event-content { + padding-left: 1px; + padding-right: 1px; +} +.fc-event-vert .fc-event-time { + padding: 0; +} +.fc-state-default { + border: none; +} +.fc-state-default, +.fc-state-default .fc-button-inner { + border: none; + background-color: #abbac3; + color: #FFF; + background-image: none; + box-shadow: none; + text-shadow: none; + border-radius: 0 !important; + margin-left: 2px; +} +.fc-state-default .fc-button-effect { + display: none; +} +.fc-state-disabled, +.fc-state-disabled .fc-button-inner { + opacity: 0.75; + filter: alpha(opacity=75); + color: #DDD; +} +.fc-state-active, +.fc-state-active .fc-button-inner { + border-color: #4F99C6; + background-color: #6FB3E0; +} +.fc-state-hover, +.fc-state-hover .fc-button-inner { + background-color: #8B9AA3; +} +.fc .fc-button-group > * { + margin: 0 1px 0 0; +} +.external-event { + margin: 6px 0; + padding: 0; + cursor: default; + display: block; + font-size: 13px; + line-height: 28px; + color: #ffffff; +} +.external-event:not([class*="label-"]) { + background-color: #abbac3; +} +.external-event:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.external-event.ui-draggable-dragging { + cursor: move; +} +.external-event.label-yellow { + color: #996633; +} +.external-event.label-light { + color: #888888; +} +.external-event > .ace-icon:first-child { + display: inline-block; + height: 32px; + width: 32px; + text-align: center; + line-height: 30px; + margin-right: 5px; + font-size: 15px; + border-right: 1px solid #FFF; +} +/** +.widget-main { + .fc { + position:relative; + top:-40px; + + > .fc-header { + position:relative; + z-index:10; + } + + .fc-header-space { + padding-left:2px; + } + } + + .fc-header-title > h2 { + font-size: floor(@base-font-size * 1.4); + line-height: 36px; + } + + .fc-content { + top:-14px; + z-index:11; + } + + .fc-button-content { + height:37px; + line-height:36px; + } + +} +*/ +@media only screen and (max-width: 480px) { + .fc-header td { + display: block; + width: auto; + text-align: left; + } +} +.chosen-container + .help-inline { + vertical-align: middle; +} +/** +.chosen-select { + display: inline !important; //for validation plugin to work it must be displayed + visibility: hidden; + opacity: 0; + position: absolute; + z-index: -1; + width: 0; + height: 0; + border-width: 0; +} +*/ +.chosen-container, +[class*="chosen-container"] { + vertical-align: middle; +} +.chosen-container > .chosen-single, +[class*="chosen-container"] > .chosen-single { + line-height: 28px; + height: 32px; + box-shadow: none; + background: #FAFAFA; +} +.chosen-choices { + box-shadow: none !important; +} +.chosen-container-single .chosen-single abbr { + background: none; +} +.chosen-container-single .chosen-single abbr:after { + content: "\f00d"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 13px; + position: absolute; + right: 0; + top: -7px; +} +.chosen-container-single .chosen-single abbr:hover:after { + color: #464646; +} +.chosen-container-single.chosen-disabled .chosen-single abbr:hover:after { + color: #464646; +} +.chosen-single div b { + background: none !important; +} +.chosen-single div b:before { + content: "\f0d7"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 12px; + position: relative; + top: -1px; + left: 1px; +} +.chosen-container-active.chosen-with-drop .chosen-single div b:before { + content: "\f0d8"; +} +.chosen-container-single .chosen-search { + position: relative; +} +.chosen-container-single .chosen-search input[type="text"] { + background: none; + border-radius: 0; + line-height: 28px; + height: 28px; +} +.chosen-container-single .chosen-search:after { + content: "\f002"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 14px; + position: absolute; + top: 8px; + right: 12px; +} +.chosen-container-multi .chosen-choices li.search-field input[type="text"] { + height: 25px; +} +.chosen-container-multi .chosen-choices li.search-choice { + line-height: 16px; + padding-bottom: 4px; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + background: none; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before { + content: "\f00d"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 13px; + position: absolute; + right: 2px; + top: -1px; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { + text-decoration: none; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before { + color: #464646; +} +.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close:before { + color: #464646; +} +.chosen-container .chosen-results-scroll-down span, +.chosen-container .chosen-results-scroll-up span { + background: none; +} +.chosen-container .chosen-results-scroll-down span:before, +.chosen-container .chosen-results-scroll-up span:before { + content: "\f0d7"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 12px; + position: relative; + top: -1px; + left: 1px; +} +.chosen-container .chosen-results-scroll-up span:before { + content: "\f0d8"; +} +.chosen-container-active .chosen-single-with-drop div b:before { + content: "\f0d8"; +} +.chosen-rtl .chosen-search input[type="text"] { + background: none; +} +.chosen-rtl .chosen-search:after { + content: ""; + display: none; +} +.chosen-rtl .chosen-search:before { + content: "\f002"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 14px; + position: absolute; + top: 9px; + left: 12px; +} +/** chosen - etc */ +.chosen-container-single .chosen-single { + border-radius: 0; +} +.chosen-container .chosen-results li.highlighted { + background: #316AC5; + color: #FFF; +} +.chosen-container-single .chosen-drop { + border-radius: 0; + border-bottom: 3px solid #4492C9; + border-color: #4492C9; +} +.chosen-single.chosen-single-with-drop, +.chosen-container-active .chosen-single { + border-color: #4492C9; +} +.form-group.has-error .chosen-single { + border-color: #f2a696 !important; +} +.form-group.has-info .chosen-single { + border-color: #72aec2 !important; +} +.form-group.has-warning .chosen-single { + border-color: #e3c94c !important; +} +.form-group.has-success .chosen-single { + border-color: #9cc573 !important; +} +.chosen-container-active.chosen-with-drop .chosen-single { + border-color: #4492C9; +} +.chosen-container .chosen-drop { + display: none; +} +.chosen-container.chosen-with-drop .chosen-drop { + left: auto; + right: auto; + display: block; +} +@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) { + .chosen-rtl .chosen-search input[type="text"], + .chosen-container-single .chosen-single abbr, + .chosen-container-single .chosen-single div b, + .chosen-container-single .chosen-search input[type="text"], + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close, + .chosen-container .chosen-results-scroll-down span, + .chosen-container .chosen-results-scroll-up span { + background-image: none !important; + background-repeat: no-repeat !important; + background-size: auto !important; + } +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice { + background-image: none; + background-color: #91b8d0; + color: #FFFFFF; + display: inline-block; + font-size: 13px; + font-weight: normal; + margin-bottom: 3px; + margin-right: 3px; + padding: 6px 22px 7px 9px; + position: relative; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); + transition: all 0.2s ease 0s; + vertical-align: baseline; + white-space: nowrap; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 18px; + height: auto; + line-height: 25px; + text-align: center; +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before { + color: #FFF; + position: static; + font-size: 11px; +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.tag-input-style + .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before { + color: #FFF; +} +.tag-input-style + .chosen-container-multi.chosen-rtl .chosen-choices li.search-choice { + padding: 6px 9px 7px 22px; + margin-left: 0; + margin-right: 3px !important; +} +.tag-input-style + .chosen-container-multi.chosen-rtl .chosen-choices li.search-choice .search-choice-close { + right: auto; + left: 0; +} +.select2-container .select2-choice { + border-radius: 0; + height: 32px; + line-height: 28px; +} +.select2-container.select2-drop-above .select2-choice { + border-radius: 0; +} +.select2-container[class*="input-"] { + max-width: none; +} +.select2-container.input-mini { + min-width: 100px; +} +.select2-container .select2-choice abbr, +.select2-search-choice-close { + background: none; +} +.select2-container .select2-choice abbr:before, +.select2-search-choice-close:before { + font-family: FontAwesome; + font-size: 12px; + display: inline; + content: "\f00d"; + color: #888; + position: relative; + top: -1px; +} +.select2-container .select2-choice abbr:hover:before, +.select2-search-choice-close:hover:before { + color: #555; +} +.select2-container .select2-choice abbr:before { + top: -7px; +} +.select2-search-choice-close:hover { + text-decoration: none !important; +} +.select2-drop { + border-radius: 0; + border: 1px solid #4492C9; + border-width: 0 1px 3px; +} +.select2-drop.select2-drop-above { + border-radius: 0; +} +.select2-container .select2-choice { + background: #FAFAFA none; +} +.select2-container-active .select2-choice, +.select2-container-active .select2-choices, +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices, +.select2-container-multi.select2-container-active .select2-choices { + border-color: #4492C9; +} +.select2-results .select2-highlighted { + background: #316AC5; +} +.select2-container .select2-choice .select2-arrow { + border-radius: 0; + background: transparent none; + border: none; +} +.select2-container .select2-choice .select2-arrow b { + background: none; +} +.select2-container .select2-choice .select2-arrow b:before { + font-family: FontAwesome; + font-size: 12px; + display: inline; + content: "\f0d7"; + color: #888; + position: relative; + left: 5px; +} +.select2-dropdown-open .select2-choice .select2-arrow b:before { + content: "\f0d8"; +} +.select2-search .select2-input { + background: #fff none; + margin-top: 4px; +} +.select2-search:after { + font-family: FontAwesome; + font-size: 14px; + display: inline; + content: "\f002"; + color: #777; + position: relative; + top: 0; + left: -20px; + z-index: 0; +} +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + background-image: none; + background-color: #F6F6F6; +} +.select2-container-multi .select2-choices .select2-search-field input { + border: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + background: none !important; + font-size: 14px; +} +.select2-container-multi .select2-choices .select2-search-choice { + line-height: 16px; + padding-bottom: 4px; +} +.select2-container-active .select2-choice, +.select2-container-active .select2-choices, +.select2-container-multi.select2-container-active .select2-choices, +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + -webkit-box-shadow: none; + box-shadow: none; +} +.select2-search input.select2-active { + background-color: #FFF; + position: relative; + z-index: 1; +} +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice div b { + background-image: none !important; + background-size: auto !important; + } + .select2-search input { + background-position: auto !important; + } +} +.select2-container-active.select2-dropdown-open .select2-choice { + background-image: -webkit-linear-gradient(top, #eeeeee 0%, #ffffff 100%); + background-image: -o-linear-gradient(top, #eeeeee 0%, #ffffff 100%); + background-image: linear-gradient(to bottom, #eeeeee 0%, #ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffffffff', GradientType=0); +} +.select2-container-active.select2-drop-above .select2-choice { + background-image: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); +} +.form-group.has-error .select2-choice, +.form-group.has-error .select2-choices { + border-color: #f2a696 !important; +} +.form-group.has-info .select2-choice, +.form-group.has-info .select2-choices { + border-color: #72aec2 !important; +} +.form-group.has-warning .select2-choice, +.form-group.has-warning .select2-choices { + border-color: #e3c94c !important; +} +.form-group.has-success .select2-choice, +.form-group.has-success .select2-choices { + border-color: #9cc573 !important; +} +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice .select2-arrow b { + background-image: none !important; + background-repeat: no-repeat !important; + background-size: auto !important; + } + .select2-search input { + background-position: auto !important; + } +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice { + background-image: none; + background-color: #91b8d0; + color: #FFFFFF; + display: inline-block; + font-size: 13px; + font-weight: normal; + margin-bottom: 3px; + margin-right: 0; + padding: 6px 22px 7px 9px; + position: relative; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); + transition: all 0.2s ease 0s; + vertical-align: baseline; + white-space: nowrap; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close { + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: auto; + width: 18px; + height: auto; + line-height: 25px; + text-align: center; +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close:before { + color: #FFF; + position: static; + font-size: 11px; +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.select2-container-multi.tag-input-style .select2-choices .select2-search-choice .select2-search-choice-close:hover:before { + color: #FFF; +} +#colorbox:focus, +#colorbox:active { + outline: none; +} +#cboxTopLeft, +#cboxTopCenter, +#cboxTopRight, +#cboxMiddleLeft, +#cboxMiddleRight, +#cboxBottomLeft, +#cboxBottomCenter, +#cboxBottomRight { + background: none !important; + opacity: 0; +} +#cboxContent { + border: 12px solid #000; + background-color: #FFF; + padding: 7px; +} +#cboxOverlay { + background: rgba(0, 0, 0, 0.95); + background: #000; +} +#cboxCurrent { + left: 64px; + margin-bottom: 4px; + font-size: 14px; +} +#cboxTitle { + margin-bottom: 4px; + font-size: 14px; + color: #777; +} +#cboxNext, +#cboxPrevious, +#cboxClose { + background: none; + text-indent: 0; + width: 26px; + height: 26px; + line-height: 22px; + padding: 0 4px; + text-align: center; + border: 2px solid #999; + border-radius: 16px; + color: #666; + font-size: 12px; + margin-left: 5px; + margin-bottom: 5px; +} +#cboxNext:hover, +#cboxPrevious:hover { + color: #333; + border-color: #666; +} +#cboxContent { + overflow: visible; +} +#cboxClose { + background-color: #000; + border: 2px solid #FFF; + border-radius: 32px; + color: #FFF; + font-size: 21px; + height: 28px; + width: 28px; + padding-bottom: 2px; + margin-left: 0; + right: -14px; + top: -14px; +} +#cboxLoadingOverlay { + background: none !important; +} +#cboxLoadingGraphic { + background: #FFF none !important; + text-align: center; +} +#cboxLoadingGraphic > .ace-icon { + display: inline-block; + background-color: #FFF; + border-radius: 8px; + width: 32px; + height: 32px; + position: relative; + top: 48%; + text-align: center; + vertical-align: middle; + font-size: 24px; + color: #FE7E3E; +} +.ace-spinner { + display: inline-block; +} +.ace-spinner .spinbox-buttons.btn-group-vertical { + min-width: 18px; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn { + font-size: 10px; + padding: 0; + width: 22px; + height: 16px; + line-height: 8px; + margin-left: 0; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn:first-child { + margin-top: 0; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn > .ace-icon { + margin: 0; + padding: 0; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn + .btn { + margin-top: 2px; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn-xs { + height: 14px; + line-height: 7px; +} +.ace-spinner .spinbox-buttons.btn-group-vertical > .btn-lg { + height: 22px; + line-height: 10px; + width: 22px; +} +.ace-spinner .spinbox-buttons > button.btn.spinbox-up:active { + top: -1px; +} +.ace-spinner:not(.touch-spinner) .spinbox-buttons > .btn > .ace-icon { + margin-top: -1px; +} +.ace-spinner.touch-spinner .spinbox-buttons { + margin: 0; + font-size: 0; +} +.ace-spinner.touch-spinner .spinbox-buttons .btn-sm { + width: 32px; +} +.ace-spinner.touch-spinner .spinbox-buttons .btn-xs { + width: 24px; +} +.ace-spinner.touch-spinner .spinbox-buttons .btn-lg { + width: 40px; +} +.ace-spinner.touch-spinner .spinbox-buttons > .btn { + margin: 0 1px !important; +} +.ace-spinner.touch-spinner .spinbox-buttons > .btn-xs { + padding-top: 3px; + padding-bottom: 3px; +} +.ace-spinner.touch-spinner .spinbox-buttons > .btn > .ace-icon { + vertical-align: middle; + display: inline-block; +} +.steps { + list-style: none; + display: table; + width: 100%; + padding: 0; + margin: 0; + position: relative; +} +.steps li { + display: table-cell; + text-align: center; + width: 1%; +} +.steps li .step { + border: 5px solid #ced1d6; + color: #546474; + font-size: 15px; + border-radius: 100%; + background-color: #FFF; + position: relative; + z-index: 2; + display: inline-block; + width: 40px; + height: 40px; + line-height: 30px; + text-align: center; +} +.steps li:before { + display: block; + content: ""; + width: 100%; + height: 1px; + font-size: 0; + overflow: hidden; + border-top: 4px solid #CED1D6; + position: relative; + top: 21px; + z-index: 1; +} +.steps li.last-child:before { + max-width: 50%; + width: 50%; +} +.steps li:last-child:before { + max-width: 50%; + width: 50%; +} +.steps li:first-child:before { + max-width: 51%; + left: 50%; +} +.steps li.active:before, +.steps li.complete:before, +.steps li.active .step, +.steps li.complete .step { + border-color: #5293c4; +} +.steps li.complete .step { + cursor: default; + color: #FFF; + -webkit-transition: transform ease 0.1s; + -o-transition: transform ease 0.1s; + transition: transform ease 0.1s; +} +.steps li.complete .step:before { + display: block; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + line-height: 30px; + text-align: center; + border-radius: 100%; + content: "\f00c"; + background-color: #FFF; + z-index: 3; + font-family: FontAwesome; + font-size: 17px; + color: #87ba21; +} +.steps li.complete:hover .step { + -moz-transform: scale(1.1); + -webkit-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); + border-color: #80afd4; +} +.steps li.complete:hover:before { + border-color: #80afd4; +} +.steps li .title { + display: block; + margin-top: 4px; + max-width: 100%; + color: #949ea7; + font-size: 14px; + z-index: 104; + text-align: center; + table-layout: fixed; + word-wrap: break-word; +} +.steps li.complete .title, +.steps li.active .title { + color: #2b3d53; +} +.step-content { + position: relative; +} +.step-content .step-pane { + display: none; + min-height: 200px; + padding: 4px 8px 12px; +} +.step-content .step-pane.active { + display: block; +} +.wizard-actions { + text-align: right; +} +@media only screen and (max-width: 767px) { + .steps li .step { + width: 30px; + height: 30px; + line-height: 24px; + border-width: 3px; + } + .steps li:before, + .steps li:after { + border-width: 3px; + } + .steps li.complete .step:before { + line-height: 24px; + font-size: 13px; + } + .steps li:before { + top: 16px; + } + .step-content .step-pane { + padding: 4px 4px 6px; + min-height: 150px; + } +} +.tree { + margin: auto; + padding: 0 0 0 9px; + overflow-x: hidden; + overflow-y: auto; + position: relative; +} +.tree:before { + display: inline-block; + content: ""; + position: absolute; + top: -20px; + bottom: 16px; + left: 0; + z-index: 1; + border: 1px dotted #67b2dd; + border-width: 0 0 0 1px; +} +.tree .tree-branch-name, +.tree .tree-item-name { + cursor: pointer; +} +.tree .tree-branch { + width: auto; + min-height: 20px; + cursor: pointer; +} +.tree .tree-branch .tree-branch-header { + position: relative; + height: 20px; + line-height: 20px; +} +.tree .tree-branch .tree-branch-header:hover { + background-color: #F0F7FC; +} +.tree .tree-branch .tree-branch-header .tree-branch-name, +.tree .tree-item .tree-item-name { + display: inline; + z-index: 2; +} +.tree .tree-branch .tree-branch-header > .tree-branch-name > .ace-icon:first-child, +.tree .tree-item > .tree-item-name > .ace-icon:first-child { + display: inline-block; + position: relative; + z-index: 2; + top: -1px; +} +.tree .tree-branch > .tree-branch-header > .tree-branch-name > .tree-label { + margin-left: 2px; +} +.tree .tree-branch > .tree-branch-header > .tree-branch-name > .ace-icon:first-child { + margin: -2px 0 0 -2px; +} +.tree .tree-branch:last-child:after { + display: inline-block; + content: ""; + position: absolute; + z-index: 1; + top: 15px; + bottom: 0; + left: -15px; + border-left: 1px solid #FFF; +} +.tree .tree-branch .tree-branch-children { + margin: 0 0 0 23px; + padding: 0; + position: relative; +} +.tree .tree-branch .tree-branch-children:before { + display: inline-block; + content: ""; + position: absolute; + z-index: 1; + top: -14px; + bottom: 16px; + left: -14px; + border: 1px dotted #67b2dd; + border-width: 0 0 0 1px; +} +.tree .tree-item { + position: relative; + height: 20px; + line-height: 20px; + cursor: pointer; +} +.tree .tree-item:hover { + background-color: #F0F7FC; +} +.tree .tree-item > .tree-item-name > .ace-icon:first-child { + margin-right: 3px; +} +.tree .tree-item > .tree-item-name > .tree-label > .ace-icon:first-child { + margin-left: 3px; + margin-right: 3px; +} +.tree .tree-item > .ace-icon:first-child { + margin-top: -1px; +} +.tree .tree-branch, +.tree .tree-item { + position: relative; + list-style: none; +} +.tree .tree-branch:before, +.tree .tree-item:before { + display: inline-block; + content: ""; + position: absolute; + top: 14px; + left: -13px; + width: 18px; + height: 0; + border-top: 1px dotted #67b2dd; + z-index: 1; +} +.tree .tree-selected { + background-color: rgba(98, 168, 209, 0.1); + color: #6398B0; +} +.tree .tree-selected:hover { + background-color: rgba(98, 168, 209, 0.1); +} +.tree .tree-item, +.tree .tree-branch { + border: 1px solid #FFF; +} +.tree .tree-branch .tree-branch-header { + border-radius: 0; +} +.tree .tree-item, +.tree .tree-branch .tree-branch-header { + margin: 0; + padding: 5px; + color: #4D6878; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.tree .tree-item > .tree-item-name > .ace-icon:first-child { + color: #F9E8CE; + width: 13px; + height: 13px; + line-height: 13px; + font-size: 11px; + text-align: center; + border-radius: 3px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + background-color: #FAFAFA; + border: 1px solid #CCC; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +.tree .tree-selected > .tree-item-name > .ace-icon:first-child { + background-color: #F9A021; + border-color: #F9A021; + color: #FFF; +} +.tree .tree-plus.ace-icon:first-child, +.tree .tree-minus.ace-icon:first-child { + display: inline-block; + font-style: normal; + border: 1px solid #DDD; + vertical-align: middle; + height: 11px; + width: 11px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + text-align: center; + border: 1px solid #8BAEBF; + line-height: 10px; + background-color: #FFF; + position: relative; + z-index: 2; +} +.tree .tree-plus.ace-icon:first-child:before, +.tree .tree-minus.ace-icon:first-child:before { + content: ""; + display: block; + width: 7px; + height: 0; + border-top: 1px solid #4D6878; + position: absolute; + top: 5px; + left: 2px; +} +.tree .tree-plus.ace-icon:first-child:after { + content: ""; + display: block; + height: 7px; + width: 0; + border-left: 1px solid #4D6878; + position: absolute; + top: 2px; + left: 5px; +} +.tree .tree-unselectable .tree-item > .tree-item-name > .tree-label > .ace-icon:first-child { + color: #5084A0; + width: 13px; + height: 13px; + line-height: 13px; + font-size: 10px; + text-align: center; + border-radius: 0; + background-color: transparent; + border: none; + box-shadow: none; +} +.tree .ace-icon[class*="-down"] { + transform: rotate(-45deg); +} +.tree .ace-icon[class*="-download"] { + transform: none; +} +.tree .fa-spin { + height: auto; +} +.tree .tree-loading { + margin-left: 36px; +} +.tree img { + display: inline; + veritcal-align: middle; +} +.gritter-item-wrapper { + background-image: none !important; + box-shadow: 0 2px 10px rgba(50, 50, 50, 0.5); + background: rgba(50, 50, 50, 0.92); +} +.gritter-item-wrapper.gritter-info { + background: rgba(49, 81, 133, 0.92); +} +.gritter-item-wrapper.gritter-error { + background: rgba(153, 40, 18, 0.92); +} +.gritter-item-wrapper.gritter-success { + background: rgba(89, 131, 75, 0.92); +} +.gritter-item-wrapper.gritter-warning { + background: rgba(190, 112, 31, 0.92); +} +.gritter-item-wrapper.gritter-light { + background: rgba(245, 245, 245, 0.95); + border: 1px solid #BBB; +} +.gritter-item-wrapper.gritter-light.gritter-info { + background: rgba(232, 242, 255, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-info .gritter-item { + color: #4A577D; +} +.gritter-item-wrapper.gritter-light.gritter-error { + background: rgba(255, 235, 235, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-error .gritter-item { + color: #894A38; +} +.gritter-item-wrapper.gritter-light.gritter-success { + background: rgba(239, 250, 227, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-success .gritter-item { + color: #416131; +} +.gritter-item-wrapper.gritter-light.gritter-warning { + background: rgba(252, 248, 227, 0.95); +} +.gritter-item-wrapper.gritter-light.gritter-warning .gritter-item { + color: #946446; +} +.gritter-item p { + line-height: 1.8; +} +.gritter-top, +.gritter-bottom, +.gritter-item { + background-image: none; +} +.gritter-close { + left: auto; + right: 3px; + background-image: none; + width: 18px; + height: 18px; + line-height: 17px; + text-align: center; + border: 2px solid transparent; + border-radius: 16px; + color: #E17B67; +} +.gritter-close:before { + font-family: FontAwesome; + font-size: 16px; + content: "\f00d"; +} +.gritter-info .gritter-close { + color: #FFA500; +} +.gritter-error .gritter-close, +.gritter-success .gritter-close, +.gritter-warning .gritter-close { + color: #FFEA07; +} +.gritter-close:hover { + color: #FFF !important; +} +.gritter-title { + text-shadow: none; +} +.gritter-light .gritter-item, +.gritter-light .gritter-bottom, +.gritter-light .gritter-top, +.gritter-light .gritter-close { + background-image: none; + color: #444; +} +.gritter-light .gritter-title { + text-shadow: none; +} +.gritter-light .gritter-close:hover { + color: #8A3104 !important; +} +.gritter-center { + position: fixed; + left: 33%; + right: 33%; + top: 33%; +} +@media only screen and (max-width: 767px) { + .gritter-center { + left: 16%; + right: 16%; + top: 30%; + } +} +@media only screen and (max-width: 480px) { + .gritter-center { + left: 30px; + right: 30px; + } +} +@media only screen and (max-width: 320px) { + .gritter-center { + left: 10px; + right: 10px; + } +} +.wysiwyg-editor { + max-height: 250px; + height: 250px; + background-color: #F7F8FA; + border-collapse: separate; + border: 1px solid #BBC0CA; + padding: 4px; + box-sizing: content-box; + overflow-y: scroll; + overflow-x: hidden; + outline: none; +} +.wysiwyg-editor:focus { + background-color: #FFF; +} +.wysiwyg-toolbar { + line-height: 33px; + margin: 0 !important; + position: relative; +} +.wysiwyg-toolbar .dropdown-menu { + text-align: left; +} +.wysiwyg-toolbar .btn-group { + float: none !important; + font-size: 0; +} +.wysiwyg-toolbar .btn-group > .btn { + float: none; + padding-left: 0; + padding-right: 0; + text-align: center; + margin-left: 1px; + /** + &.active:after { + border-color: transparent; + border-style: solid; + border-top-color: inherit; + border-width: 6px 14px; + bottom: -13px; + left: 0; + right: 0; + } + */ +} +.wysiwyg-toolbar .btn-group > .btn > .ace-icon:first-child { + font-size: 14px; + width: 25px; + max-width: 25px; + display: inline-block; + border-width: 1px !important; +} +.wysiwyg-toolbar .btn-group > .btn.dropdown-toggle > .ace-icon:last-child { + margin-right: 4px; +} +.wysiwyg-style1 .btn-group > .btn, +.wysiwyg-style2 .btn-group > .btn, +.wysiwyg-style1 .btn-group > .inline > .btn, +.wysiwyg-style2 .btn-group > .inline > .btn { + margin: 0 !important; + background: #FFF !important; + border-width: 0 !important; + color: #ADB3BE !important; + text-shadow: none !important; +} +.wysiwyg-style1 .btn-group > .btn.active, +.wysiwyg-style2 .btn-group > .btn.active, +.wysiwyg-style1 .btn-group > .inline > .btn.active, +.wysiwyg-style2 .btn-group > .inline > .btn.active { + color: #5B80CE !important; +} +.wysiwyg-style1 .btn-group > .btn.active:after, +.wysiwyg-style2 .btn-group > .btn.active:after, +.wysiwyg-style1 .btn-group > .inline > .btn.active:after, +.wysiwyg-style2 .btn-group > .inline > .btn.active:after { + display: none; +} +.wysiwyg-style1 .btn-group, +.wysiwyg-style2 .btn-group { + position: relative; +} +.wysiwyg-style1 .btn-group:after, +.wysiwyg-style2 .btn-group:after { + display: block; + content: ""; + position: absolute; + left: -2px; + top: 6px; + bottom: 6px; + width: 0; + max-width: 0; + border-left: 1px solid #E1E6EA; +} +.wysiwyg-style1 .btn-group:first-child:after, +.wysiwyg-style2 .btn-group:first-child:after { + display: none; +} +.wysiwyg-style2 { + background-color: #E5E5E5; +} +.wysiwyg-style2 + .wysiwyg-editor { + border-color: #DDD; + background-color: #FFF; + border-top: none; +} +.wysiwyg-style2 .btn-group > .btn, +.wysiwyg-style2 .btn-group > .inline > .btn { + margin: 0 1px 0 0 !important; + background: #FFF !important; + border: none !important; + color: #8D939E !important; + text-shadow: none !important; +} +.wysiwyg-style2 .btn-group > .btn.active, +.wysiwyg-style2 .btn-group > .inline > .btn.active { + color: #FFF !important; + background: #6AAEDF !important; +} +.wysiwyg-style2 .btn-group:after { + display: none; +} +.wysiwyg-toolbar .btn-colorpicker { + width: 24px; + height: 24px; + position: relative; + background: #87B87F; + /* Old browsers */ + background: -moz-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(10%, #cf3e73), color-stop(20%, #ffffff), color-stop(30%, #2283c5), color-stop(40%, #ffffff), color-stop(50%, #87b87f), color-stop(60%, #ffffff), color-stop(70%, #ffb752), color-stop(80%, #ffffff), color-stop(90%, #d15b47), color-stop(100%, #ffffff)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* Opera11.10+ */ + background: -ms-linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#CF3E73', endColorstr='#FFB752', GradientType=0); + /* IE6-9 */ + background: linear-gradient(top, #cf3e73 10%, #ffffff 20%, #2283c5 30%, #ffffff 40%, #87b87f 50%, #ffffff 60%, #ffb752 70%, #ffffff 80%, #d15b47 90%, #ffffff 100%); + /* W3C */ +} +.wysiwyg-toolbar .dropdown-colorpicker > .dropdown-menu { + top: auto; +} +.wysiwyg-toolbar input[type=file] { + position: fixed; + z-index: -10; + opacity: 0; + max-width: 0; + max-height: 0; + display: block; +} +.wysiwyg-toolbar .wysiwyg-choose-file { + display: inline-block; + width: auto; + margin: 4px auto 0; + padding-left: 5px; + padding-right: 5px; +} +.wysiwyg-toolbar .dropdown-menu input[type=text] { + margin-left: 8px; + margin-bottom: 0; +} +.wysiwyg-toolbar .dropdown-menu input[type=text].form-control { + min-width: 150px; +} +.wysiwyg-toolbar .dropdown-menu .btn { + margin-right: 8px; + margin-left: 8px; +} +.wysiwyg-style1 .btn-colorpicker { + width: 20px; + height: 20px; + margin-left: 4px; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + /* for adding image resize functionality in chrome and safari */ + .wysiwyg-editor img { + display: inline !important; + } + .wysiwyg-editor .ui-wrapper { + border: 1px dotted #D00; + overflow: visible !important; + /* because it's image only, so it's ok */ + display: inline-block !important; + vertical-align: middle; + } + .wysiwyg-editor .ui-wrapper:after { + content: ""; + display: block; + position: absolute; + right: -3px; + bottom: -3px; + width: 7px; + height: 7px; + border: 1px solid #D00; + background-color: #FFF; + z-index: 1; + } +} +/* inside widget */ +.widget-header .wysiwyg-toolbar { + background-color: transparent; +} +.widget-header .wysiwyg-toolbar .btn-group > .btn, +.widget-header .wysiwyg-toolbar .btn-group > .inline > .btn { + border-color: transparent; + background: rgba(255, 255, 255, 0.25) !important; + color: #FFF !important; + min-width: 32px; + border-width: 1px !important; + border-radius: 4px !important; + padding: 2px 1px 4px; +} +.widget-header .wysiwyg-toolbar .btn-group > .btn.active, +.widget-header .wysiwyg-toolbar .btn-group > .inline > .btn.active { + background: rgba(0, 0, 0, 0.25) !important; +} +.widget-body .wysiwyg-editor { + border-width: 0; +} +.wysiwyg-speech-input { + width: 20px !important; + color: transparent !important; + background: transparent none !important; + border-width: 0 !important; + -moz-transform: scale(2.0, 2.0); + -webkit-transform: scale(2.0, 2.0); + -o-transform: scale(2.0, 2.0); + -ms-transform: scale(2.0, 2.0); + transform: scale(2.0, 2.0); + -webkit-box-shadow: none !important; + box-shadow: none !important; + position: absolute; + right: 0; + top: -10px; + cursor: pointer; +} +.wysiwyg-speech-input:focus { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +.widget-body .md-header { + margin-top: -30px; + margin-left: 9px; +} +.widget-body .md-header .btn { + border-color: transparent; + background: rgba(255, 255, 255, 0.25) !important; + color: #FFF !important; + text-align: center; + min-width: 32px; + border-width: 1px !important; + border-radius: 4px !important; + padding: 2px 4px 4px; +} +.widget-body .md-header .btn > .ace-icon { + font-size: 14px; + width: 25px; + max-width: 25px; + display: inline-block; +} +.widget-body .md-header .btn-inverse { + background: rgba(0, 0, 0, 0.25) !important; + padding-right: 5px; + margin-left: 4px; +} +.md-fullscreen-controls { + display: none; +} +.widget-body .md-preview { + padding: 8px; + min-height: 200px; +} +.widget-body .md-input { + border: none !important; + box-shadow: none !important; + display: block; + margin-bottom: 0; + background-color: rgba(48, 126, 204, 0.07); + padding: 8px; + width: 100%; +} +.widget-body .md-input:focus { + background-color: #FFF; + box-shadow: none !important; +} +.editable-container .popover-title { + color: #438EB9; +} +.editable-click { + border-bottom: 1px dashed #BBB; + cursor: pointer; + font-weight: normal; +} +img.editable-click { + border: 1px dotted #BBB; +} +.editable-click:hover { + border-color: #0088CC; + color: #0088CC; +} +img.editable-click:hover { + opacity: 0.75; + filter: alpha(opacity=75); +} +.editable-buttons, +.editable-input { + display: inline-block; +} +.editable-buttons { + margin-left: 1px; +} +.editable-buttons .btn { + padding: 0; + width: 28px; + line-height: 24px; + border-width: 3px; + font-size: 12px; + margin: 0 1px 0 0; +} +.editable-buttons .btn > .ace-icon { + margin: 0; +} +.editable-clear-x { + cursor: pointer; + color: #888; + background: none; +} +.editable-clear-x:hover { + color: #D15B47; +} +.editable-clear-x:before { + display: inline-block; + content: "\f057"; + font-family: FontAwesome; + font-size: 15px; + position: absolute; + margin-top: -9px; + width: 16px; + height: 30px; + line-height: 30px; + text-align: center; +} +.editable-input .ace-spinner { + margin-right: 8px; +} +.editable-input .ace-spinner .spinner-input { + width: 100%; +} +.editable-inline .editable-slider { + margin-top: 10px; + margin-right: 4px; +} +.editable-popup .editable-slider { + display: block; + margin-bottom: 16px; + margin-top: 4px; +} +.editable-slider input[type=text] { + display: none; +} +.editable-slider input[type=range] { + outline: none !important; +} +.editable-input .ace-file-input { + display: block; +} +.editable-image .ace-file-multiple .ace-file-container.selected { + border-color: transparent; +} +.editable-image + .editable-buttons, +.editable-wysiwyg + .editable-buttons { + display: block; + text-align: center; + margin-top: 8px; +} +.editable-wysiwyg { + width: 95%; +} +.editable-wysiwyg .wysiwyg-editor { + height: auto; + overflow-y: hidden; +} +.editableform .input-append.dropdown-menu { + display: none; +} +.editableform .open .input-append.dropdown-menu { + display: block; +} +.editable-container .editableform { + margin-bottom: 10px; +} +.editable-inline .editableform { + margin-bottom: 0; +} +.editableform .control-group { + display: block; +} +.editableform-loading { + background: none; +} +.editableform-loading .ace-icon, +.editableform-loading .progress { + position: relative; + top: 35%; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.datepicker td, +.daterangepicker td, +.datepicker th, +.daterangepicker th { + border-radius: 0 !important; + font-size: 13px; +} +.datepicker td.active, +.daterangepicker td.active, +.datepicker td.active:hover, +.daterangepicker td.active:hover { + background: #2283c5 !important; +} +.datepicker td.active.disabled, +.daterangepicker td.active.disabled, +.datepicker td.active.disabled:hover, +.daterangepicker td.active.disabled:hover { + background: #8b9aa3 !important; +} +.datepicker td, +.datepicker th { + min-width: 32px; +} +.datepicker-dropdown.datepicker-orient-bottom:after, +.datepicker-dropdown.datepicker-orient-bottom:before { + top: auto; +} +.daterangepicker .calendar-date { + border-radius: 0; +} +.datepicker-months .month, +.datepicker-years .year { + border-radius: 0 !important; +} +.datepicker-months .month.active, +.datepicker-years .year.active, +.datepicker-months .month.active:hover, +.datepicker-years .year.active:hover, +.datepicker-months .month.active:focus, +.datepicker-years .year.active:focus, +.datepicker-months .month.active:active, +.datepicker-years .year.active:active { + background-image: none !important; + background-color: #2283c5 !important; +} +.bootstrap-timepicker-widget table td input { + width: 32px; +} +.well .datepicker table tr td.day:hover { + background-color: #7d8893; + color: #FFF; +} +.bootstrap-timepicker-widget table td a:hover { + border-radius: 0; +} +.daterangepicker.opensleft:before, +.daterangepicker.opensright:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); +} +.daterangepicker.opensleft:after, +.daterangepicker.opensright:after { + -moz-border-bottom-colors: #fff; +} +.datepicker-dropdown:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); +} +.datepicker-dropdown:after { + -moz-border-bottom-colors: #fff; +} +.datepicker-dropdown.datepicker-orient-bottom:before { + -moz-border-top-colors: #999; +} +.datepicker-dropdown.datepicker-orient-bottom:after { + -moz-border-top-colors: #FFF; +} +.bootstrap-timepicker-widget.dropdown-menu:before { + -moz-border-bottom-colors: rgba(0, 0, 0, 0.2); +} +.bootstrap-timepicker-widget.dropdown-menu:after { + -moz-border-bottom-colors: #FFF; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:before { + -moz-border-top-colors: #999; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:after { + -moz-border-top-colors: #FFF; +} +.bootstrap-datetimepicker-widget [class=btn] { + border-width: 0 !important; + background-color: transparent !important; + color: #7399b8 !important; + text-shadow: none !important; +} +.bootstrap-datetimepicker-widget [class=btn]:hover { + color: #1B6AAA !important; +} +.bootstrap-datetimepicker-widget .btn.btn-primary { + border-width: 3px !important; +} +.bootstrap-datetimepicker-widget .picker-switch { + margin-bottom: 2px; +} +.bootstrap-datetimepicker-widget .picker-switch .btn { + width: 90% !important; + background-color: #EEE !important; + color: #478fca !important; + font-size: 16px; +} +.bootstrap-datetimepicker-widget .picker-switch .btn:hover { + background-color: #e3edf5 !important; +} +.bootstrap-datetimepicker-widget td span { + border-radius: 0; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + color: #555 !important; +} +.ui-slider { + background-color: #D5D5D5; +} +.ui-slider-horizontal { + height: 9px; +} +.ui-slider-vertical { + width: 9px; +} +.ui-slider .ui-slider-handle { + border-radius: 0; + width: 1.45em; + height: 1.45em; + background-color: #F8F8F8; + border: 1px solid; +} +.ui-slider .ui-slider-handle:before, +.ui-slider .ui-slider-handle:after { + display: block; + content: ""; + position: absolute; + top: 4px; + left: 5px; + width: 4px; + height: 8px; + border: 1px solid; + border-width: 0 1px; + border-color: inherit; +} +.ui-slider .ui-slider-handle:after { + left: 8px; + border-width: 0 1px 0 0; +} +.ui-slider .ui-slider-handle:hover { + background-color: #FFF; +} +.ui-slider .ui-slider-handle:hover, +.ui-slider .ui-slider-handle:focus, +.ui-slider .ui-slider-handle:active { + outline: none; + -webkit-box-shadow: 1px 1px 1px 0px rgba(0,0,0,.3); + box-shadow: 1px 1px 1px 0px rgba(0,0,0,.3); +} +.ui-slider-horizontal .ui-slider-handle { + margin-left: -0.725em; + top: -0.4em; +} +.ui-slider-vertical .ui-slider-handle { + left: -0.35em; + margin-bottom: -0.65em; +} +.ui-slider-small.ui-slider-horizontal { + height: 5px; +} +.ui-slider-small.ui-slider-vertical { + width: 5px; +} +.ui-slider-small .ui-slider-handle { + border-radius: 100%; + width: 17px; + height: 17px; + margin-bottom: -0.45em; + left: -0.35em; +} +.ui-slider-small .ui-slider-handle:before, +.ui-slider-small .ui-slider-handle:after { + height: 7px; + left: 5px; + width: 3px; +} +.ui-slider-small .ui-slider-handle:after { + left: 7px; +} +.ui-slider-simple .ui-slider-handle:after, +.ui-slider-simple .ui-slider-handle:before { + display: none; +} +/* colors */ +.ui-slider-range { + background-color: #4aa4ce; +} +.ui-slider-handle { + outline: none !important; + border-color: #4aa4ce !important; +} +.ui-state-disabled.ui-slider { + background-color: #E5E5E5; +} +.ui-state-disabled .ui-slider-range { + background-color: #8daebe; +} +.ui-state-disabled .ui-slider-handle { + -webkit-box-shadow: none !important; + box-shadow: none !important; + border-color: #8daebe !important; +} +.ui-slider-green .ui-slider-range { + background-color: #8bbc67; +} +.ui-slider-green .ui-slider-handle { + border-color: #8bbc67 !important; +} +.ui-slider-green.ui-state-disabled .ui-slider-range { + background-color: #aab0a6; +} +.ui-slider-green.ui-state-disabled .ui-slider-handle { + border-color: #aab0a6 !important; +} +.ui-slider-red .ui-slider-range { + background-color: #d36e6e; +} +.ui-slider-red .ui-slider-handle { + border-color: #d36e6e !important; +} +.ui-slider-red.ui-state-disabled .ui-slider-range { + background-color: #c8acac; +} +.ui-slider-red.ui-state-disabled .ui-slider-handle { + border-color: #c8acac !important; +} +.ui-slider-purple .ui-slider-range { + background-color: #ac68ba; +} +.ui-slider-purple .ui-slider-handle { + border-color: #ac68ba !important; +} +.ui-slider-purple.ui-state-disabled .ui-slider-range { + background-color: #ada7ae; +} +.ui-slider-purple.ui-state-disabled .ui-slider-handle { + border-color: #ada7ae !important; +} +.ui-slider-orange .ui-slider-range { + background-color: #efad62; +} +.ui-slider-orange .ui-slider-handle { + border-color: #efad62 !important; +} +.ui-slider-orange.ui-state-disabled .ui-slider-range { + background-color: #e0c4a4; +} +.ui-slider-orange.ui-state-disabled .ui-slider-handle { + border-color: #e0c4a4 !important; +} +.ui-slider-dark .ui-slider-range { + background-color: #606060; +} +.ui-slider-dark .ui-slider-handle { + border-color: #606060 !important; +} +.ui-slider-dark.ui-state-disabled .ui-slider-range { + background-color: #7a7a7a; +} +.ui-slider-dark.ui-state-disabled .ui-slider-handle { + border-color: #7a7a7a !important; +} +.ui-slider-pink .ui-slider-range { + background-color: #d6487e; +} +.ui-slider-pink .ui-slider-handle { + border-color: #d6487e !important; +} +.ui-slider-pink.ui-state-disabled .ui-slider-range { + background-color: #c38ea2; +} +.ui-slider-pink.ui-state-disabled .ui-slider-handle { + border-color: #c38ea2 !important; +} +.ui-datepicker { + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + height: 26px; + min-width: 32px; + max-width: 32px; + text-align: center; + cursor: pointer; + color: transparent; + line-height: 26px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.ui-datepicker .ui-datepicker-prev .ui-icon, +.ui-datepicker .ui-datepicker-next .ui-icon { + color: transparent; + visibility: hidden; +} +.ui-datepicker .ui-datepicker-prev:hover, +.ui-datepicker .ui-datepicker-next:hover { + background-color: #EEE; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-prev:before, +.ui-datepicker .ui-datepicker-next:before { + display: inline; + font-family: FontAwesome; + font-size: 14px; + content: "\f060"; + color: #393939; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 2px; +} +.ui-datepicker .ui-datepicker-next:before { + content: "\f061"; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 2px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 2px; +} +.ui-datepicker td { + padding: 0; +} +.ui-datepicker td > a, +.ui-datepicker td > span { + display: inline-block; + height: 22px; + min-width: 24px; + max-width: 24px; + text-align: center; + color: #393939; + font-size: 13px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.ui-datepicker td > a:hover { + background-color: #EEE; +} +.ui-datepicker td > a.ui-state-highlight { + background-color: #D5E5EF; +} +.ui-datepicker td > a.ui-state-active { + background-color: #2283c5; + color: #FFF; +} +.ui-datepicker td > a.ui-priority-secondary { + color: #888; +} +.ui-datepicker td > span { + color: #999; +} +.ui-datepicker td .ui-datepicker-title select { + height: 24px; + line-height: 24px; + padding: 2px 3px; +} +.ui-datepicker td .ui-datepicker-buttonpane { + background-color: #DDD; + height: 1px; +} +/* dialog */ +.ui-widget-overlay { + background: rgba(0, 0, 0, 0.25); + opacity: 1 !important; + filter: alpha(opacity=100) !important; + z-index: 1039 !important; +} +.ui-dialog, +.ui-jqdialog { + z-index: 1040 !important; + background-color: #FFF; + padding: 0; + border: 1px solid #DDD; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.ui-dialog .ui-dialog-titlebar, +.ui-jqdialog .ui-dialog-titlebar, +.ui-dialog .ui-jqdialog-titlebar, +.ui-jqdialog .ui-jqdialog-titlebar { + background-color: #F1F1F1; + font-size: 16px; + color: #669fc7; + padding: 0; +} +.ui-dialog .ui-dialog-title, +.ui-jqdialog .ui-dialog-title, +.ui-dialog .ui-jqdialog-title, +.ui-jqdialog .ui-jqdialog-title { + float: none !important; + width: auto; +} +.ui-dialog .widget-header, +.ui-jqdialog .widget-header { + margin: 0; + border-width: 0 0 1px 0; +} +.ui-dialog .ui-dialog-buttonpane, +.ui-jqdialog .ui-dialog-buttonpane, +.ui-dialog .ui-jqdialog-buttonpane, +.ui-jqdialog .ui-jqdialog-buttonpane { + background-color: #eff3f8; + border-top: 1px solid #e4e9ee; +} +.ui-dialog .ui-dialog-buttonpane button, +.ui-jqdialog .ui-dialog-buttonpane button, +.ui-dialog .ui-jqdialog-buttonpane button, +.ui-jqdialog .ui-jqdialog-buttonpane button { + font-size: 14px; +} +.ui-dialog .ui-dialog-titlebar-close, +.ui-jqdialog .ui-dialog-titlebar-close, +.ui-dialog .ui-jqdialog-titlebar-close, +.ui-jqdialog .ui-jqdialog-titlebar-close { + border: none; + background: transparent; + opacity: 0.4; + color: #d15b47; + padding: 0; + top: 50%; + right: 8px !important; + text-align: center; +} +.ui-dialog .ui-dialog-titlebar-close:before, +.ui-jqdialog .ui-dialog-titlebar-close:before, +.ui-dialog .ui-jqdialog-titlebar-close:before, +.ui-jqdialog .ui-jqdialog-titlebar-close:before { + content: "\f00d"; + display: inline; + font-family: FontAwesome; + font-size: 16px; +} +.ui-dialog .ui-dialog-titlebar-close:hover, +.ui-jqdialog .ui-dialog-titlebar-close:hover, +.ui-dialog .ui-jqdialog-titlebar-close:hover, +.ui-jqdialog .ui-jqdialog-titlebar-close:hover { + opacity: 1; + text-decoration: none; + padding: 0; +} +.ui-dialog .ui-dialog-titlebar-close .ui-button-text, +.ui-jqdialog .ui-dialog-titlebar-close .ui-button-text, +.ui-dialog .ui-jqdialog-titlebar-close .ui-button-text, +.ui-jqdialog .ui-jqdialog-titlebar-close .ui-button-text { + text-indent: 0; + visibility: hidden; +} +.ui-dialog .widget-header .ui-dialog-titlebar-close, +.ui-jqdialog .widget-header .ui-dialog-titlebar-close, +.ui-dialog .widget-header .ui-jqdialog-titlebar-close, +.ui-jqdialog .widget-header .ui-jqdialog-titlebar-close { + right: 10px !important; +} +/* accordion */ +.ui-accordion .ui-accordion-header { + color: #478fca; + font-weight: normal; + background-color: #F9F9F9; + border: 1px solid #cdd8e3; + padding: 8px 8px 9px 24px; +} +.ui-accordion .ui-accordion-header:hover { + color: #6ea6cc; + background-color: #f1f8fd; +} +.ui-accordion .ui-accordion-header.ui-state-active { + color: #4c8fbd; + background-color: #eef4f9; + position: relative; + font-weight: bold; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + text-indent: 0; + margin-top: 0; + position: absolute; + left: 10px; + top: 7px; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon:before { + display: inline; + font-family: FontAwesome; + font-size: 15px; + content: "\f0da"; +} +.ui-accordion .ui-accordion-header.ui-state-active .ui-accordion-header-icon:before { + content: "\f0d7"; + font-weight: normal; +} +.ui-accordion .ui-accordion-content { + border: 1px solid #cdd8e3; + border-top-width: 0; + padding: 11px 16px; +} +/* tabs */ +.ui-tabs .ui-tabs-nav { + padding: 0; + border-bottom: 1px solid #C5D0DC; +} +.ui-tabs .ui-tabs-nav li.ui-state-default > a { + background-color: #F9F9F9; + border: 1px solid #C5D0DC; + border-bottom-width: 0; + color: #999; + line-height: 16px; + margin-right: -1px; + z-index: 11; + padding: 8px 12px; + position: relative; + top: 2px; +} +.ui-tabs .ui-tabs-nav li > a:focus { + outline: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active > a { + background-color: #FFF; + border: 1px solid; + border-color: #4C8FBD #C5D0DC transparent; + border-top-width: 2px; + -webkit-box-shadow: 0 -2px 3px 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 -2px 3px 0 rgba(0, 0, 0, 0.15); + color: #576373; + position: relative; + top: 1px; +} +.ui-tabs .ui-tabs-panel { + border: 1px solid #C5D0DC; + border-top-width: 0; + margin: 0; + left: auto; + right: auto; + top: auto; + bottom: auto; +} +/* menu */ +.ui-menu { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + width: 150px; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + padding: 3px; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: auto; +} +.ui-menu .ui-menu-item { + padding: 5px 10px 6px; + color: #444; + cursor: pointer; + display: block; + -webkit-box-sizing: inherit; + -moz-box-sizing: inherit; + box-sizing: inherit; +} +.ui-menu .ui-menu-item .ui-menu-icon { + float: right; + position: relative; + left: auto; + right: 4px; + bottom: auto; + text-indent: 0; +} +.ui-menu .ui-menu-item .ui-menu-icon:before { + content: "\f105"; + font-family: FontAwesome; + font-size: 14px; + display: inline; +} +.ui-menu .ui-menu-item:hover, +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active, +.ui-menu .ui-menu-item:hover > .ui-menu-icon, +.ui-menu .ui-state-focus > .ui-menu-icon, +.ui-menu .ui-state-active > .ui-menu-icon { + text-decoration: none; + background-color: #4f99c6; + color: #FFF; + margin: auto; + font-weight: normal; +} +.ui-menu .ui-menu-item:hover .ui-menu-icon, +.ui-menu .ui-state-focus .ui-menu-icon, +.ui-menu .ui-state-active .ui-menu-icon, +.ui-menu .ui-menu-item:hover > .ui-menu-icon .ui-menu-icon, +.ui-menu .ui-state-focus > .ui-menu-icon .ui-menu-icon, +.ui-menu .ui-state-active > .ui-menu-icon .ui-menu-icon { + color: #FFF; +} +.ui-menu .ui-state-disabled, +.ui-menu .ui-state-disabled .ui-menu-icon { + color: #999; + cursor: default; +} +.ui-menu .ui-state-disabled:hover, +.ui-menu .ui-state-disabled.ui-state-focus, +.ui-menu .ui-state-disabled.ui-state-active, +.ui-menu .ui-state-disabled:hover .ui-menu-icon, +.ui-menu .ui-state-disabled.ui-state-focus .ui-menu-icon, +.ui-menu .ui-state-disabled.ui-state-active .ui-menu-icon { + background-color: #FFF; + color: #999; +} +/* auto complete */ +.ui-autocomplete { + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.ui-autocomplete-category { + padding: 6px; + position: relative; + background-color: #eef4f9; + color: #478fca; + font-weight: bolder; + border: 1px solid #DAE6ED; + border-width: 1px 0; +} +.ui-spinner-button { + border-width: 0 !important; + font-size: 10px; + height: 16px; + line-height: 16px; + width: 18px; + color: #FFFFFF !important; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; + display: inline-block; + position: absolute; + text-align: center; + padding: 0; +} +.ui-spinner-button > .ace-icon { + width: 18px; + display: inline-block; +} +.ui-spinner-up { + top: 0; + right: 5px; +} +.ui-spinner-down { + bottom: 3px; + right: 5px; +} +.ui-spinner-input { + margin-top: 0; + padding: 5px; + max-width: 100px; + font-size: 14px; +} +.ui-tooltip { + background-color: #444; + color: #FFF; +} +.ui-progressbar { + background-color: #f5f5f5; + height: 22px; +} +.ui-progressbar .ui-progressbar-value { + margin: 0; +} +.ui-progressbar .ui-progressbar-value[class="progress-bar"] { + background-color: #2a91d8; +} +.ui-selectmenu-button { + border: 1px solid #aaa; +} +.ui-selectmenu-button[aria-expanded=true] { + border-color: #4492C9; +} +.ui-selectmenu-button span.ui-icon { + text-indent: 0; + margin-top: -10px; +} +.ui-selectmenu-button .ui-icon:before { + content: "\f0d7"; + display: inline-block; + color: #888; + font-family: FontAwesome; + font-size: 14px; +} +.ui-jqgrid .ui-jqgrid-view, +.ui-jqgrid .ui-paging-info, +.ui-jqgrid .ui-pg-table, +.ui-jqgrid .ui-pg-selbox { + font-size: 13px; +} +.ui-jqgrid .ui-jqgrid-title { + float: left; + margin: 8px; +} +.ui-jqgrid .ui-jqgrid-title-rtl { + float: right; + margin: 8px; +} +.ui-jqgrid-view > .ui-jqgrid-titlebar { + height: 40px; + line-height: 24px; + color: #FFF; + background: #307ecc; + padding: 0; + font-size: 15px; +} +.ui-jqgrid tr.jqgrow.ui-row-rtl td:last-child { + border-right: none; + border-left: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-jqgrid-hdiv { + background-color: #eff3f8; + border: 1px solid #D3D3D3; + border-width: 1px 0 0 1px; + line-height: 15px; + font-weight: bold; + color: #777; + text-shadow: none; +} +.ui-jqgrid .ui-jqgrid-htable thead { + background-color: #eff3f8; +} +.ui-jqgrid .ui-jqgrid-htable th span.ui-jqgrid-resize { + height: 45px !important; +} +.ui-jqgrid .ui-jqgrid-htable th div { + padding-top: 12px; + padding-bottom: 12px; +} +.ui-jqgrid-hdiv .ui-jqgrid-htable { + border-top: none; +} +.ui-jqgrid-hdiv .ui-jqgrid-htable { + border-top: 1px solid #E1E1E1; +} +.ui-jqgrid-titlebar { + position: relative; + top: 1px; + z-index: 1; +} +.ui-jqgrid tr.jqgrow, +.ui-jqgrid tr.ui-row-ltr, +.ui-jqgrid tr.ui-row-rtl { + border: none; +} +.ui-jqgrid tr.ui-row-ltr td, +.ui-jqgrid tr.ui-row-rtl td { + border-bottom: 1px solid #E1E1E1; + padding: 6px 4px; + border-color: #E1E1E1; +} +.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td { + border-right-color: #C7D3A9; +} +.ui-jqgrid tr.ui-state-highlight.ui-row-rtl td { + border-left-color: #C7D3A9; +} +.ui-jqgrid-btable .ui-widget-content.ui-priority-secondary { + background-image: none; + background-color: #F9F9F9; + opacity: 1; +} +.ui-jqgrid-btable .ui-widget-content.ui-state-hover { + background-image: none; + background-color: #EFF4F7; + opacity: 1; +} +.ui-jqgrid-btable .ui-widget-content.ui-state-highlight { + background-color: #E4EFC9; +} +.ui-jqgrid .ui-jqgrid-pager { + line-height: 15px; + height: 55px; + padding-top: 3px !important; + padding-bottom: 5px !important; + background-color: #eff3f8 !important; + border-bottom: 1px solid #E1E1E1 !important; + border-top: 1px solid #E1E1E1 !important; +} +.ui-jqgrid .ui-pg-input { + font-size: inherit; + width: 24px; + height: 20px; + line-height: 16px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + text-align: center; + padding-top: 1px; + padding-bottom: 1px; +} +.ui-jqgrid .ui-pg-selbox { + display: block; + height: 24px; + width: 60px; + margin: 0; + padding: 1px; + line-height: normal; +} +.ui-jqgrid .ui-jqgrid-htable th div { + overflow: visible; +} +.ui-jqgrid .ui-pager-control { + height: 50px; + position: relative; + padding-left: 9px; + padding-right: 9px; +} +.ui-jqgrid .ui-jqgrid-toppager { + height: auto !important; + background-color: #eff3f8; + border-bottom: 1px solid #E1E1E1 !important; +} +.ui-jqgrid .jqgrow .editable { + max-width: 90%; + max-width: calc(92%) !important; +} +.ui-pg-table .navtable .ui-corner-all { + border-radius: 0; +} +.ui-jqgrid .ui-pg-button:hover { + padding: 1px; +} +.ui-jqgrid .ui-pg-button .ui-separator { + margin-left: 4px; + margin-right: 4px; + border-color: #C9D4DB; +} +.ui-jqgrid .ui-jqgrid-btable { + border-left: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-jqgrid-bdiv { + border-top: 1px solid #E1E1E1; +} +.ui-jqgrid .loading { + position: absolute; + top: 45%; + left: 45%; + width: auto; + height: auto; + z-index: 101; + padding: 6px; + margin: 5px; + text-align: center; + font-weight: bold; + font-size: 12px; + background-color: #FFF; + border: 2px solid #8EB8D1; + color: #E2B018; +} +.ui-jqgrid .ui-search-toolbar { + border-top: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-jqgrid-labels { + border-bottom: none; + background: #F2F2F2; + background-image: -webkit-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: -o-linear-gradient(top, #f8f8f8 0%, #ececec 100%); + background-image: linear-gradient(to bottom, #f8f8f8 0%, #ececec 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#ffececec', GradientType=0); + padding: 0 !important; + border-left: 1px solid #E1E1E1 !important; +} +.ui-jqgrid .ui-jqgrid-labels th { + border-right: 1px solid #E1E1E1 !important; + text-align: left !important; +} +/* checkbox container */ +.ui-jqgrid-labels th[id*="_cb"]:first-child > div { + padding-top: 0; + text-align: center !important; +} +.ui-jqgrid-sortable { + padding-left: 4px; + font-size: 13px; + color: #777; + font-weight: bold; +} +.ui-jqgrid-sortable:hover { + color: #547ea8; +} +th[aria-selected=true] { + background-image: -webkit-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: -o-linear-gradient(top, #eff3f8 0%, #e3e7ed 100%); + background-image: linear-gradient(to bottom, #eff3f8 0%, #e3e7ed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeff3f8', endColorstr='#ffe3e7ed', GradientType=0); +} +th[aria-selected=true] .ui-jqgrid-sortable { + color: #307ecc; +} +.ui-jqgrid .ui-icon { + text-indent: 0; + color: #307ecc; + float: none; + right: 2px; +} +.rtl .ui-jqgrid .ui-icon { + right: auto; + left: 2px; +} +.ui-jqgrid .ui-icon.ui-state-disabled { + color: #BBB; +} +.ui-jqgrid .ui-icon.ui-state-disabled:hover { + padding: 0; +} +.ui-grid-ico-sort:before { + display: inline; + content: "\f0d7"; + font-family: FontAwesome; + font-size: 12px; +} +.ui-icon-asc:before { + content: "\f0d8"; +} +.ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon { + display: inline-block; + padding: 0; + width: 24px; + height: 24px; + line-height: 22px; + text-align: center; + position: static; + float: none; + margin: 0 2px !important; + color: #808080; + border: 1px solid #CCC; + background-color: #FFF; + border-radius: 100%; +} +.ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon:hover { + color: #699AB5; + border-color: #699AB5; +} +.ui-pg-table > tbody > tr > .ui-pg-button > .ui-icon:before { + width: 20px; + text-align: center; + display: inline-block; +} +.ui-pg-table > tbody > tr > .ui-pg-button.ui-state-disabled .ui-icon { + color: #B0B0B0; + background-color: #F7F7F7; + border-color: #DDD; + -moz-transform: scale(0.9); + -webkit-transform: scale(0.9); + -o-transform: scale(0.9); + -ms-transform: scale(0.9); + transform: scale(0.9); +} +.ui-jqgrid-btable input, +.ui-jqgrid-btable textarea, +.ui-jqgrid-btable select { + padding: 2px; + width: auto; + max-width: 100%; + margin-bottom: 0; +} +.ui-jqgrid-btable select { + padding: 1px; + height: 25px; + line-height: 25px; +} +.ui-pg-div .ui-icon { + display: inline-block; + width: 18px; + float: none; + position: static; + text-align: center; + opacity: 0.85; + -webkit-transition: all 0.12s; + -o-transition: all 0.12s; + transition: all 0.12s; + margin: 0 1px; + vertical-align: middle; + cursor: pointer; + font-size: 17px; +} +.ui-pg-div .ui-icon:hover { + -moz-transform: scale(1.2); + -webkit-transform: scale(1.2); + -o-transform: scale(1.2); + -ms-transform: scale(1.2); + transform: scale(1.2); + opacity: 1; + position: static; + margin: 0 1px; +} +.ui-pg-div .ui-icon:before { + font-family: FontAwesome; + display: inline; +} +.ui-jqgrid .ui-icon-pencil { + color: #478FCA; +} +.ui-jqgrid .ui-icon-pencil:before { + content: "\f040"; +} +.ui-jqgrid .ui-icon-trash { + color: #DD5A43; +} +.ui-jqgrid .ui-icon-trash:before { + content: "\f014"; +} +.ui-jqgrid .ui-icon-disk { + color: #69AA46; +} +.ui-jqgrid .ui-icon-disk:before { + content: "\f00c"; +} +.ui-jqgrid .ui-icon-cancel { + color: #DD5A43; +} +.ui-jqgrid .ui-icon-cancel:before { + content: "\f00d"; +} +.ui-jqdialog-content, +.ui-jqdialog .ui-jqdialog-content { + font-size: 13px; + padding: 4px 0 0; +} +.ui-jqdialog-content .formdata, +.ui-jqdialog .ui-jqdialog-content .formdata { + font-size: 13px; + padding: 6px 12px; +} +.ui-jqdialog-content .form-view-data, +.ui-jqdialog .ui-jqdialog-content .form-view-data { + vertical-align: middle; + font-size: 13px; +} +.ui-jqdialog-content[id*="alertcnt_"], +.ui-jqdialog .ui-jqdialog-content[id*="alertcnt_"] { + padding: 8px 11px; +} +.ui-jqdialog-content .CaptionTD { + font-size: 12px; + text-align: right; + color: #666; +} +.ui-jqdialog-content .FormData { + border-bottom: 1px dotted #E8E8E8; +} +.ui-jqdialog-content .FormData:last-child { + border-bottom: none; +} +.ui-jqdialog-content .FormData > td { + padding-top: 6px; + padding-bottom: 6px; +} +.ui-jqdialog-content input.FormElement { + width: auto; +} +.ui-jqdialog-content select.FormElement { + padding: 1px; + height: 25px; + line-height: 25px; + width: auto; +} +.ui-jqdialog-content td.EditButton { + padding: 8px; +} +.EditTable { + background-color: #eff3f8; + border-top: 1px solid #D6E1EA !important; + padding: 8px; +} +.EditTable tr:first-child { + display: none; +} +.EditTable .navButton .fm-button { + float: none !important; + width: auto !important; + margin: 1px 1px 2px !important; + background-color: transparent; + border-radius: 100%; +} +.EditTable .navButton .fm-button:hover { + background-color: transparent; +} +.EditTable .navButton .fm-button:focus { + outline: none; +} +.EditTable .navButton .fm-button .ace-icon { + display: inline-block; + color: #999; + border: 1px solid #AAA; + width: 26px; + height: 26px; + line-height: 26px; + text-align: center; + border-radius: 100%; + background-color: #FFF; +} +.EditTable .navButton .fm-button:hover .ace-icon { + color: #699AB5; + border-color: #699AB5; +} +.EditTable .navButton .fm-button.ui-state-disabled .ace-icon, +.EditTable .navButton .fm-button.ui-state-disabled:hover .ace-icon { + color: #BBB; + border-color: #CCC; + -moz-transform: scale(0.88); + -webkit-transform: scale(0.88); + -o-transform: scale(0.88); + -ms-transform: scale(0.88); + transform: scale(0.88); +} +.FormGrid .EditTable { + background-color: #FFF; + border-top: none !important; + padding: 0; +} +.FormGrid .EditTable tr:first-child { + display: none; +} +.ui-jqgrid .ui-jqgrid-view input, +.ui-jqgrid .ui-jqgrid-view select, +.ui-jqgrid .ui-jqgrid-view textarea, +.ui-jqgrid .ui-jqgrid-view button { + font-size: 13px; +} +.ui-jqdialog-content .searchFilter select { + padding: 1px; + height: 26px; + line-height: 26px; + width: auto; + max-width: 95%; + margin-bottom: 0; +} +.ui-jqdialog-content .searchFilter .input-elm { + margin-bottom: 0; + height: 18px; + line-height: 18px; + width: 95% !important; + padding-left: 1px; + padding-right: 1px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.ui-jqdialog-content .searchFilter table { + margin-left: 4px; +} +.ui-jqdialog-content .searchFilter tr td { + padding: 5px 0; +} +.ui-jqdialog-content .searchFilter .add-group, +.ui-jqdialog-content .searchFilter .add-rule, +.ui-jqdialog-content .searchFilter .delete-group { + margin-left: 4px !important; + font-size: 15px !important; +} +.ui-jqdialog-content .searchFilter .delete-rule { + border: none; + background-color: #FFF; + color: #D15B47; + font-size: 20px; + width: 22px; + line-height: 10px; + padding: 0; + text-shadow: none !important; + display: inline-block; + -webkit-transition: all 0.1s; + -o-transition: all 0.1s; + transition: all 0.1s; + opacity: 0.85; +} +.ui-jqdialog-content .searchFilter .delete-rule:hover { + -moz-transform: scale(1.1); + -webkit-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); + color: #B74635; + opacity: 1; +} +.ui-jqdialog-content .searchFilter .queryresult { + margin-bottom: 11px; +} +.ui-jqdialog-content .searchFilter .queryresult td.query { + padding: 6px 11px; + border: 1px solid #E1E1E1; + background-color: #EEEEEE; +} +.ui-jqdialog-content .searchFilter .queryresult td.query:empty { + display: none; +} +.ui-state-error { + background-color: #f2dede; + border: 1px solid #ebccd1; + color: #a94442; + margin: 4px 4px 8px; + padding: 6px 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + font-size: 13px; +} +.ui-jqdialog .ui-widget-header { + background-image: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); + border-image: none; + border-bottom: 1px solid solid; + color: #669FC7; + min-height: 38px; + position: relative; +} +.ui-jqdialog .ui-widget-header .ui-jqdialog-title { + line-height: 38px; + margin: 0; + padding: 0; + padding-left: 12px; + text-align: left; +} +.widget-header .ui-jqdialog-title { + padding-left: 0 !important; + padding-right: 0 !important; +} +.ui-jqdialog .ui-widget-header .widget-header { + border-bottom: none; +} +.ui-jqdialog .ui-jqdialog-titlebar { + border-bottom: 1px solid #DDD !important; +} +.fm-button { + margin: 0 4px; +} +.fm-button:not(.btn) { + background-color: #abbac3; + border-radius: 0 ; + box-shadow: none; + color: #FFFFFF ; + cursor: pointer; + display: inline-block; + font-size: 13px; + line-height: 28px; + padding: 0 12px 1px; + margin: 0 8px; + position: relative; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + -webkit-transition: all 0.15s; + -o-transition: all 0.15s; + transition: all 0.15s; + vertical-align: middle; +} +.fm-button.ui-state-default:hover { + background-color: #8b9aa3; +} +.ui-jqgrid .ui-jqgrid-htable .ui-search-toolbar th { + height: 30px; + padding-top: 2px; + white-space: normal; +} +.ui-jqgrid .ui-jqgrid-htable .ui-search-toolbar th div { + padding-top: 0; + padding-bottom: 0; + height: 30px; + line-height: 26px; +} +.ui-jqgrid .ui-jqgrid-titlebar-close { + top: 10%; + height: auto; + padding: 0; + margin: 2px 8px 0 0; + text-align: center; + border-radius: 4px; +} +.ui-jqgrid .ui-jqgrid-titlebar-close:hover { + background-color: rgba(255, 255, 255, 0.2); +} +.ui-jqgrid .ui-jqgrid-titlebar-close .ui-icon:before { + display: inline-block; + font-family: FontAwesome; + content: "\f077"; + color: #FFF; +} +.ui-jqgrid .ui-jqgrid-titlebar-close .ui-icon-circle-triangle-s:before { + content: "\f078"; +} +.ui-jqgrid .tree-wrap-ltr { + margin: 0 4px; + float: none; + display: inline; +} +.ui-jqgrid .tree-wrap-rtl { + margin: 2px 4px 0; +} +.ui-jqgrid .ui-subgrid { + border-bottom: 1px solid #E1E1E1; + background-color: #F6FAFF; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid-btable { + background-color: #FFF; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv { + background-color: transparent; + margin-top: 4px; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable .ui-jqgrid-labels { + border-bottom: 1px solid #E1E1E1; + background: #F1F1F1; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th[aria-selected="true"] { + background: #E5E9EF; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th .ui-jqgrid-sortable { + font-size: 12px; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th div { + padding-top: 8px; + padding-bottom: 8px; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th span.ui-jqgrid-resize { + height: 36px !important; +} +.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-bdiv { + height: auto !important; + max-height: 150px; + margin-bottom: 4px; + border-top-width: 0; + border-bottom: 1px solid #E1E1E1; +} +.ui-jqgrid .ui-sgcollapsed > a:hover { + text-decoration: none; +} +@media only screen and (max-width: 767px) { + .ui-jqgrid .ui-jqgrid-pager { + height: 90px; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control { + height: 85px; + padding-top: 9px; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td { + vertical-align: top; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center { + width: 0 !important; + position: static; + } + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center > .ui-pg-table { + margin: 36px auto 0; + position: absolute; + right: 0; + left: 0; + text-align: center; + } +} +@media only screen and (max-width: 767px) and (-webkit-min-device-pixel-ratio: 0) { + .ui-jqgrid .ui-jqgrid-pager > .ui-pager-control > .ui-pg-table > tbody > tr > td#grid-pager_center > .ui-pg-table { + width: 300px; + } +} +.dd { + position: relative; + display: block; + margin: 0; + padding: 0; + max-width: 600px; + list-style: none; + line-height: 20px; +} +.dd-list { + display: block; + position: relative; + margin: 0; + padding: 0; + list-style: none; +} +.dd-list .dd-list { + padding-left: 30px; +} +.dd-collapsed .dd-list { + display: none; +} +.dd-item, +.dd-empty, +.dd-placeholder { + display: block; + position: relative; + margin: 0; + padding: 0; + min-height: 20px; + line-height: 20px; +} +.dd-handle, +.dd2-content { + display: block; + min-height: 38px; + margin: 5px 0; + padding: 8px 12px; + background: #F8FAFF; + border: 1px solid #DAE2EA; + color: #7C9EB2; + text-decoration: none; + font-weight: bold; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.dd-handle:hover, +.dd2-content:hover { + color: #438EB9; + background: #F4F6F7; + border-color: #DCE2E8; +} +.dd-handle[class*="btn-"], +.dd2-content[class*="btn-"] { + color: #FFF; + border: none; + padding: 9px 12px; +} +.dd-handle[class*="btn-"]:hover, +.dd2-content[class*="btn-"]:hover { + opacity: 0.85; + color: #FFF; +} +.dd2-handle + .dd2-content, +.dd2-handle + .dd2-content[class*="btn-"] { + padding-left: 44px; +} +.dd-handle[class*="btn-"]:hover, +.dd2-content[class*="btn-"] .dd2-handle[class*="btn-"]:hover + .dd2-content[class*="btn-"] { + color: #FFF; +} +.dd-item > button:hover ~ .dd-handle, +.dd-item > button:hover ~ .dd2-content { + color: #438EB9; + background: #F4F6F7; + border-color: #DCE2E8; +} +.dd-item > button:hover ~ .dd-handle[class*="btn-"], +.dd-item > button:hover ~ .dd2-content[class*="btn-"] { + opacity: 0.85; + color: #FFF; +} +.dd2-handle:hover ~ .dd2-content { + color: #438EB9; + background: #F4F6F7; + border-color: #DCE2E8; +} +.dd2-handle:hover ~ .dd2-content[class*="btn-"] { + opacity: 0.85; + color: #FFF; +} +.dd2-item.dd-item > button { + margin-left: 34px; +} +.dd-item > button { + display: block; + position: relative; + z-index: 1; + cursor: pointer; + float: left; + width: 25px; + height: 20px; + margin: 5px 1px 5px 5px; + padding: 0; + text-indent: 100%; + white-space: nowrap; + overflow: hidden; + border: 0; + background: transparent; + font-size: 12px; + line-height: 1; + text-align: center; + font-weight: bold; + top: 4px; + left: 1px; + color: #707070; +} +.dd-item > button:before { + font-family: FontAwesome; + content: '\f067'; + display: block; + position: absolute; + width: 100%; + text-align: center; + text-indent: 0; + font-weight: normal; + font-size: 14px; +} +.dd-item > button[data-action="collapse"]:before { + content: '\f068'; +} +.dd-item > button:hover { + color: #707070; +} +.dd-item.dd-colored > button, +.dd-item.dd-colored > button:hover { + color: #EEE; +} +.dd-placeholder, +.dd-empty { + margin: 5px 0; + padding: 0; + min-height: 30px; + background: #F0F9FF; + border: 2px dashed #BED2DB; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.dd-empty { + border-color: #AAA; + border-style: solid; + background-color: #e5e5e5; +} +.dd-dragel { + position: absolute; + pointer-events: none; + z-index: 999; + opacity: 0.8; +} +.dd-dragel > li > .dd-handle { + color: #4B92BE; + background: #F1F5FA; + border-color: #D6E1EA; + border-left: 2px solid #777; + position: relative; +} +.dd-dragel > li > .dd-handle[class*="btn-"] { + color: #FFF; +} +.dd-dragel > .dd-item > .dd-handle { + margin-top: 0; +} +.dd-list > li[class*="item-"] { + border-width: 0; + padding: 0; +} +.dd-list > li[class*="item-"] > .dd-handle { + border-left: 2px solid; + border-left-color: inherit; +} +.dd-list > li > .dd-handle .sticker { + position: absolute; + right: 0; + top: 0; +} +.dd2-handle, +.dd-dragel > li > .dd2-handle { + left: 0; + top: 0; + width: 36px; + margin: 0; + border-width: 1px 1px 0 0; + text-align: center; + padding: 0 !important; + line-height: 38px; + height: 38px; + background: #EBEDF2; + border: 1px solid #DEE4EA; + cursor: pointer; + overflow: hidden; + position: absolute; + z-index: 1; +} +.dd2-handle:hover, +.dd-dragel > li > .dd2-handle { + background: #E3E8ED; +} +.dd2-content[class*="btn-"] { + text-shadow: none !important; +} +.dd2-handle[class*="btn-"] { + text-shadow: none !important; + background: rgba(0, 0, 0, 0.1) !important; + border-right: 1px solid #EEE; +} +.dd2-handle[class*="btn-"]:hover { + background: rgba(0, 0, 0, 0.08) !important; +} +.dd-dragel .dd2-handle[class*="btn-"] { + border-color: transparent; + border-right-color: #EEE; +} +.dd2-handle.btn-yellow { + text-shadow: none !important; + background: rgba(0, 0, 0, 0.05) !important; + border-right: 1px solid #FFF; +} +.dd2-handle.btn-yellow:hover { + background: rgba(0, 0, 0, 0.08) !important; +} +.dd-dragel .dd2-handle.btn-yellow { + border-color: transparent; + border-right-color: #FFF; +} +.dd-item > .dd2-handle .drag-icon { + display: none; +} +.dd-dragel > .dd-item > .dd2-handle .drag-icon { + display: inline; +} +.dd-dragel > .dd-item > .dd2-handle .normal-icon { + display: none; +} +.dropzone { + border-radius: 0; + border: 1px solid rgba(0, 0, 0, 0.06); +} +.dropzone .dz-default.dz-message { + background-image: none; + font-size: 24px; + text-align: center; + line-height: 32px; + left: 0; + width: 100%; + margin-left: auto; +} +.dropzone .dz-default.dz-message span { + display: inline; + color: #555; +} +.dropzone .dz-default.dz-message span .upload-icon { + opacity: 0.7; + filter: alpha(opacity=70); + margin-top: 8px; + cursor: pointer; +} +.dropzone .dz-default.dz-message span .upload-icon:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark, +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark { + background-image: none; + background-color: rgba(255, 255, 255, 0.8); + border-radius: 100%; + text-align: center; + line-height: 35px; +} +.dropzone .dz-preview .dz-error-mark:before, +.dropzone-previews .dz-preview .dz-error-mark:before { + font-family: FontAwesome; + font-size: 30px; + color: #DB6262; + content: "\f00d"; +} +.dropzone .dz-preview .dz-success-mark:before, +.dropzone-previews .dz-preview .dz-success-mark:before { + font-family: FontAwesome; + font-size: 30px; + color: #6DA552; + content: "\f00c"; +} +.dropzone a.dz-remove, +.dropzone-previews a.dz-remove { + border: none; + border-radius: 0; + color: #FFF; + background: #D15B47; + cursor: pointer; +} +.dropzone a.dz-remove:hover, +.dropzone-previews a.dz-remove:hover { + color: #FFF; + background: #B74635; +} +.dropzone .progress, +.dropzone-previews .progress { + margin-bottom: 0; +} +.dropzone .dz-preview.dz-success .progress, +.dropzone-previews .dz-preview.dz-success .progress, +.dropzone .dz-preview.dz-error .progress, +.dropzone-previews .dz-preview.dz-error .progress { + display: none; +} +input.typeahead, +input.tt-query, +input.tt-hint { + min-width: 175px; + font-size: 16px; + line-height: 24px; + border: 1px solid #CCC; + border-radius: 0; + outline: none; +} +input.tt-hint, +.form-group input.tt-hint { + background-color: #FFF !important; + color: #B0B0B0 !important; +} +.tt-dropdown-menu { + text-align: left; + position: absolute; + left: 0 !important; + right: 0 !important; + min-width: 175px; + margin-top: 2px; + padding: 8px 0; + background-color: #FFF; + border: 1px solid #D0D0D0; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.tt-suggestion { + padding: 3px 12px 4px; + font-size: 16px; + line-height: 24px; +} +.tt-suggestion.tt-cursor { + color: #FFF; + background-color: #4F99C6; + cursor: pointer; +} +.tt-suggestion p { + margin: 0; +} +input.typeahead.scrollable ~ .tt-dropdown-menu { + max-height: 200px; + overflow-y: auto; +} +.btn-group > .btn.moveall:first-child, +.btn-group > .btn.remove:first-child { + margin: 0; +} +.btn-group > .btn.moveall:first-child + .btn.move, +.btn-group > .btn.remove:first-child + .btn.removeall { + margin: 0; +} +.bootstrap-duallistbox-container .info { + font-size: 12px; +} +.bootstrap-duallistbox-container .clear1, +.bootstrap-duallistbox-container .clear2 { + font-size: 12px; +} +.multiselect-container > li > a { + padding: 0; +} +.multiselect-container > li > a > label { + padding: 7px 10px 7px 20px; +} +.cancel-on-png, +.cancel-off-png, +.star-on-png, +.star-off-png, +.star-half-png { + font-size: 2em; +} +.cancel-on-png, +.cancel-off-png, +.star-on-png, +.star-off-png, +.star-half-png { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-family: "FontAwesome"; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + speak: none; + text-transform: none; + color: #777777; +} +.cancel-on-png { + color: #dd5a43; +} +.cancel-on-png:before { + content: "\f057"; +} +.cancel-off-png { + color: #e08374; +} +.cancel-off-png:before { + content: "\f05c"; +} +.star-on-png { + color: #feb902; +} +.star-on-png:before { + content: "\f005"; +} +.star-off-png { + color: #777777; +} +.star-off-png:before { + content: "\f006"; +} +.star-half-png { + color: #feb902; +} +.star-half-png:before { + content: "\f123"; +} +/* custom animated icons */ +.icon-animated-bell { + display: inline-block; + -moz-animation: ringing 2.0s 5 ease 1.0s; + -webkit-animation: ringing 2.0s 5 ease 1.0s; + -o-animation: ringing 2.0s 5 ease 1.0s; + -ms-animation: ringing 2.0s 5 ease 1.0s; + animation: ringing 2.0s 5 ease 1.0s; + -moz-transform-origin: 50% 0%; + -webkit-transform-origin: 50% 0%; + -o-transform-origin: 50% 0%; + -ms-transform-origin: 50% 0%; + transform-origin: 50% 0%; +} +@-moz-keyframes ringing { + 0% { + -moz-transform: rotate(-15deg); + } + 2% { + -moz-transform: rotate(15deg); + } + 4% { + -moz-transform: rotate(-18deg); + } + 6% { + -moz-transform: rotate(18deg); + } + 8% { + -moz-transform: rotate(-22deg); + } + 10% { + -moz-transform: rotate(22deg); + } + 12% { + -moz-transform: rotate(-18deg); + } + 14% { + -moz-transform: rotate(18deg); + } + 16% { + -moz-transform: rotate(-12deg); + } + 18% { + -moz-transform: rotate(12deg); + } + 20% { + -moz-transform: rotate(0deg); + } +} +@-webkit-keyframes ringing { + 0% { + -webkit-transform: rotate(-15deg); + } + 2% { + -webkit-transform: rotate(15deg); + } + 4% { + -webkit-transform: rotate(-18deg); + } + 6% { + -webkit-transform: rotate(18deg); + } + 8% { + -webkit-transform: rotate(-22deg); + } + 10% { + -webkit-transform: rotate(22deg); + } + 12% { + -webkit-transform: rotate(-18deg); + } + 14% { + -webkit-transform: rotate(18deg); + } + 16% { + -webkit-transform: rotate(-12deg); + } + 18% { + -webkit-transform: rotate(12deg); + } + 20% { + -webkit-transform: rotate(0deg); + } +} +@-ms-keyframes ringing { + 0% { + -ms-transform: rotate(-15deg); + } + 2% { + -ms-transform: rotate(15deg); + } + 4% { + -ms-transform: rotate(-18deg); + } + 6% { + -ms-transform: rotate(18deg); + } + 8% { + -ms-transform: rotate(-22deg); + } + 10% { + -ms-transform: rotate(22deg); + } + 12% { + -ms-transform: rotate(-18deg); + } + 14% { + -ms-transform: rotate(18deg); + } + 16% { + -ms-transform: rotate(-12deg); + } + 18% { + -ms-transform: rotate(12deg); + } + 20% { + -ms-transform: rotate(0deg); + } +} +@keyframes ringing { + 0% { + transform: rotate(-15deg); + } + 2% { + transform: rotate(15deg); + } + 4% { + transform: rotate(-18deg); + } + 6% { + transform: rotate(18deg); + } + 8% { + transform: rotate(-22deg); + } + 10% { + transform: rotate(22deg); + } + 12% { + transform: rotate(-18deg); + } + 14% { + transform: rotate(18deg); + } + 16% { + transform: rotate(-12deg); + } + 18% { + transform: rotate(12deg); + } + 20% { + transform: rotate(0deg); + } +} +.icon-animated-vertical { + display: inline-block; + -moz-animation: vertical 2.0s 5 ease 2.0s; + -webkit-animation: vertical 2.0s 5 ease 2.0s; + -o-animation: vertical 2.0s 5 ease 2.0s; + -ms-animation: vertical 2.0s 5 ease 2.0s; + animation: vertical 2.0s 5 ease 2.0s; +} +@-moz-keyframes vertical { + 0% { + -moz-transform: translate(0, -3px); + } + 4% { + -moz-transform: translate(0, 3px); + } + 8% { + -moz-transform: translate(0, -3px); + } + 12% { + -moz-transform: translate(0, 3px); + } + 16% { + -moz-transform: translate(0, -3px); + } + 20% { + -moz-transform: translate(0, 3px); + } + 22% { + -moz-transform: translate(0, 0); + } +} +@-webkit-keyframes vertical { + 0% { + -webkit-transform: translate(0, -3px); + } + 4% { + -webkit-transform: translate(0, 3px); + } + 8% { + -webkit-transform: translate(0, -3px); + } + 12% { + -webkit-transform: translate(0, 3px); + } + 16% { + -webkit-transform: translate(0, -3px); + } + 20% { + -webkit-transform: translate(0, 3px); + } + 22% { + -webkit-transform: translate(0, 0); + } +} +@-ms-keyframes vertical { + 0% { + -ms-transform: translate(0, -3px); + } + 4% { + -ms-transform: translate(0, 3px); + } + 8% { + -ms-transform: translate(0, -3px); + } + 12% { + -ms-transform: translate(0, 3px); + } + 16% { + -ms-transform: translate(0, -3px); + } + 20% { + -ms-transform: translate(0, 3px); + } + 22% { + -ms-transform: translate(0, 0); + } +} +@keyframes vertical { + 0% { + transform: translate(0, -3px); + } + 4% { + transform: translate(0, 3px); + } + 8% { + transform: translate(0, -3px); + } + 12% { + transform: translate(0, 3px); + } + 16% { + transform: translate(0, -3px); + } + 20% { + transform: translate(0, 3px); + } + 22% { + transform: translate(0, 0); + } +} +.icon-animated-hand-pointer { + display: inline-block; + -moz-animation: hand-pointer 2.0s 4 ease 2.0s; + -webkit-animation: hand-pointer 2.0s 4 ease 2.0s; + -o-animation: hand-pointer 2.0s 4 ease 2.0s; + -ms-animation: hand-pointer 2.0s 4 ease 2.0s; + animation: hand-pointer 2.0s 4 ease 2.0s; +} +@-moz-keyframes hand-pointer { + 0% { + -moz-transform: translate(0, 0); + } + 6% { + -moz-transform: translate(5px, 0); + } + 12% { + -moz-transform: translate(0, 0); + } + 18% { + -moz-transform: translate(5px, 0); + } + 24% { + -moz-transform: translate(0, 0); + } + 30% { + -moz-transform: translate(5px, 0); + } + 36% { + -moz-transform: translate(0, 0); + } +} +.icon-animated-wrench { + display: inline-block; + -moz-animation: wrenching 2.5s 4 ease; + -webkit-animation: wrenching 2.5s 4 ease; + -o-animation: wrenching 2.5s 4 ease; + -ms-animation: wrenching 2.5s 4 ease; + animation: wrenching 2.5s 4 ease; + -moz-transform-origin: 90% 35%; + -webkit-transform-origin: 90% 35%; + -o-transform-origin: 90% 35%; + -ms-transform-origin: 90% 35%; + transform-origin: 90% 35%; +} +@-moz-keyframes wrenching { + 0% { + -moz-transform: rotate(-12deg); + } + 8% { + -moz-transform: rotate(12deg); + } + 10% { + -moz-transform: rotate(24deg); + } + 18% { + -moz-transform: rotate(-24deg); + } + 20% { + -moz-transform: rotate(-24deg); + } + 28% { + -moz-transform: rotate(24deg); + } + 30% { + -moz-transform: rotate(24deg); + } + 38% { + -moz-transform: rotate(-24deg); + } + 40% { + -moz-transform: rotate(-24deg); + } + 48% { + -moz-transform: rotate(24deg); + } + 50% { + -moz-transform: rotate(24deg); + } + 58% { + -moz-transform: rotate(-24deg); + } + 60% { + -moz-transform: rotate(-24deg); + } + 68% { + -moz-transform: rotate(24deg); + } + 75% { + -moz-transform: rotate(0deg); + } +} +@-webkit-keyframes wrenching { + 0% { + -webkit-transform: rotate(-12deg); + } + 8% { + -webkit-transform: rotate(12deg); + } + 10% { + -webkit-transform: rotate(24deg); + } + 18% { + -webkit-transform: rotate(-24deg); + } + 20% { + -webkit-transform: rotate(-24deg); + } + 28% { + -webkit-transform: rotate(24deg); + } + 30% { + -webkit-transform: rotate(24deg); + } + 38% { + -webkit-transform: rotate(-24deg); + } + 40% { + -webkit-transform: rotate(-24deg); + } + 48% { + -webkit-transform: rotate(24deg); + } + 50% { + -webkit-transform: rotate(24deg); + } + 58% { + -webkit-transform: rotate(-24deg); + } + 60% { + -webkit-transform: rotate(-24deg); + } + 68% { + -webkit-transform: rotate(24deg); + } + 75% { + -webkit-transform: rotate(0deg); + } +} +@-o-keyframes wrenching { + 0% { + -o-transform: rotate(-12deg); + } + 8% { + -o-transform: rotate(12deg); + } + 10% { + -o-transform: rotate(24deg); + } + 18% { + -o-transform: rotate(-24deg); + } + 20% { + -o-transform: rotate(-24deg); + } + 28% { + -o-transform: rotate(24deg); + } + 30% { + -o-transform: rotate(24deg); + } + 38% { + -o-transform: rotate(-24deg); + } + 40% { + -o-transform: rotate(-24deg); + } + 48% { + -o-transform: rotate(24deg); + } + 50% { + -o-transform: rotate(24deg); + } + 58% { + -o-transform: rotate(-24deg); + } + 60% { + -o-transform: rotate(-24deg); + } + 68% { + -o-transform: rotate(24deg); + } + 75% { + -o-transform: rotate(0deg); + } +} +@-ms-keyframes wrenching { + 0% { + -ms-transform: rotate(-12deg); + } + 8% { + -ms-transform: rotate(12deg); + } + 10% { + -ms-transform: rotate(24deg); + } + 18% { + -ms-transform: rotate(-24deg); + } + 20% { + -ms-transform: rotate(-24deg); + } + 28% { + -ms-transform: rotate(24deg); + } + 30% { + -ms-transform: rotate(24deg); + } + 38% { + -ms-transform: rotate(-24deg); + } + 40% { + -ms-transform: rotate(-24deg); + } + 48% { + -ms-transform: rotate(24deg); + } + 50% { + -ms-transform: rotate(24deg); + } + 58% { + -ms-transform: rotate(-24deg); + } + 60% { + -ms-transform: rotate(-24deg); + } + 68% { + -ms-transform: rotate(24deg); + } + 75% { + -ms-transform: rotate(0deg); + } +} +@keyframes wrenching { + 0% { + transform: rotate(-12deg); + } + 8% { + transform: rotate(12deg); + } + 10% { + transform: rotate(24deg); + } + 18% { + transform: rotate(-24deg); + } + 20% { + transform: rotate(-24deg); + } + 28% { + transform: rotate(24deg); + } + 30% { + transform: rotate(24deg); + } + 38% { + transform: rotate(-24deg); + } + 40% { + transform: rotate(-24deg); + } + 48% { + transform: rotate(24deg); + } + 50% { + transform: rotate(24deg); + } + 58% { + transform: rotate(-24deg); + } + 60% { + transform: rotate(-24deg); + } + 68% { + transform: rotate(24deg); + } + 75% { + transform: rotate(0deg); + } +} +@-moz-keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@-webkit-keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@-ms-keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@keyframes blinking { + 0% { + opacity: 1; + } + 40% { + opacity: 0; + } + 80% { + opacity: 1; + } +} +@-moz-keyframes pulsating { + 0% { + -moz-transform: scale(1); + } + 5% { + -moz-transform: scale(0.75); + } + 10% { + -moz-transform: scale(1); + } + 15% { + -moz-transform: scale(1.25); + } + 20% { + -moz-transform: scale(1); + } + 25% { + -moz-transform: scale(0.75); + } + 30% { + -moz-transform: scale(1); + } + 35% { + -moz-transform: scale(1.25); + } + 40% { + -moz-transform: scale(1); + } +} +@-webkit-keyframes pulsating { + 0% { + -webkit-transform: scale(1); + } + 5% { + -webkit-transform: scale(0.75); + } + 10% { + -webkit-transform: scale(1); + } + 15% { + -webkit-transform: scale(1.25); + } + 20% { + -webkit-transform: scale(1); + } + 25% { + -webkit-transform: scale(0.75); + } + 30% { + -webkit-transform: scale(1); + } + 35% { + -webkit-transform: scale(1.25); + } + 40% { + -webkit-transform: scale(1); + } +} +@-ms-keyframes pulsating { + 0% { + -ms-transform: scale(1); + } + 5% { + -ms-transform: scale(0.75); + } + 10% { + -ms-transform: scale(1); + } + 15% { + -ms-transform: scale(1.25); + } + 20% { + -ms-transform: scale(1); + } + 25% { + -ms-transform: scale(0.75); + } + 30% { + -ms-transform: scale(1); + } + 35% { + -ms-transform: scale(1.25); + } + 40% { + -ms-transform: scale(1); + } +} +@keyframes pulsating { + 0% { + transform: scale(1); + } + 5% { + transform: scale(0.75); + } + 10% { + transform: scale(1); + } + 15% { + transform: scale(1.25); + } + 20% { + transform: scale(1); + } + 25% { + transform: scale(0.75); + } + 30% { + transform: scale(1); + } + 35% { + transform: scale(1.25); + } + 40% { + transform: scale(1); + } +} +.btn-scroll-up { + border-width: 0; + position: fixed; + right: 2px; + z-index: 99; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + opacity: 0; + filter: alpha(opacity=0); + bottom: -24px; + visibility: hidden; +} +.btn-scroll-up.display { + opacity: 0.7; + filter: alpha(opacity=70); + bottom: 2px; + visibility: visible; +} +.btn-scroll-up:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.btn-scroll-up:focus { + outline: none; +} +@media (min-width: 768px) { + .main-container.container > .btn-scroll-up { + right: auto; + margin-left: 714px; + } +} +@media (min-width: 992px) { + .main-container.container > .btn-scroll-up { + right: auto; + margin-left: 934px; + } +} +@media (min-width: 1200px) { + .main-container.container > .btn-scroll-up { + right: auto; + margin-left: 1134px; + } +} +.ace-settings-container { + position: absolute; + right: 0; + top: auto; + z-index: 12; +} +.btn.btn-app.ace-settings-btn { + float: left; + display: block; + text-align: center; + border-radius: 6px 0 0 6px; + opacity: 0.55; + vertical-align: top; + margin: 0; +} +.btn.btn-app.ace-settings-btn:hover, +.btn.btn-app.ace-settings-btn.open { + opacity: 1; +} +.btn.btn-app.ace-settings-btn.btn-xs { + width: 42px; +} +.ace-settings-box { + display: block; + float: left; + max-width: 0; + max-height: 0; + overflow: hidden; + padding: 0; + -moz-transform: translate(0,0); + -webkit-transform: translate(0,0); + -o-transform: translate(0,0); + -ms-transform: translate(0,0); + transform: translate(0,0); + background-color: #FFF; + border: 0 solid #ffb34b; + -webkit-transition: max-width 0.25s linear 0s, max-height 0s linear 0.25s, padding 0s linear 0.25s, border-width 0s linear 0.25s; + -o-transition: max-width 0.25s linear 0s, max-height 0s linear 0.25s, padding 0s linear 0.25s, border-width 0s linear 0.25s; + transition: max-width 0.25s linear 0s, max-height 0s linear 0.25s, padding 0s linear 0.25s, border-width 0s linear 0.25s; +} +.ace-settings-box.open { + max-width: 320px; + max-height: 1000px; + padding: 0 14px; + border-width: 2px; + -webkit-transition-delay: 0s; + -moz-transition-delay: 0s; + -o-transition-delay: 0s; + transition-delay: 0s; +} +.ace-settings-box.open .ace-settings-item { + z-index: auto; + min-width: 140px; +} +.ace-settings-box .ace-settings-item { + margin: 6px 0; + color: #444; + max-height: 24px; + position: relative; + z-index: -1; + white-space: nowrap; +} +.ace-settings-box .ace-settings-item > label.lbl { + font-size: 13px; +} +@media (max-width: 480px) { + .ace-settings-container { + text-align: right; + } + .ace-settings-box { + float: none !important; + text-align: left; + } + .btn.ace-settings-btn { + float: none !important; + display: inline-block; + } +} +@media (max-width: 320px) { + .ace-settings-box > .clearfix > .pull-left, + .ace-settings-box > .clearfix > .pull-right { + float: none !important; + } +} +.grid2, +.grid3, +.grid4 { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: block; + margin: 0 1%; + padding: 0 2%; + float: left; + border-left: 1px solid #E3E3E3; +} +.grid2:first-child, +.grid3:first-child, +.grid4:first-child { + border-left: none; +} +.grid2 { + width: 48%; +} +.grid3 { + width: 31.33%; +} +.grid4 { + width: 23%; + padding: 0 1%; +} +.draggable-placeholder { + border: 2px dashed #D9D9D9 !important; + background-color: #F7F7F7 !important; +} +.easyPieChart, +.easy-pie-chart { + position: relative; + text-align: center; +} +.easyPieChart canvas, +.easy-pie-chart canvas { + position: absolute; + top: 0; + left: 0; +} +.knob-container { + direction: ltr; + text-align: left; +} +.tags { + display: inline-block; + padding: 4px 6px; + color: #777777; + vertical-align: middle; + background-color: #FFF; + border: 1px solid #d5d5d5; + width: 206px; +} +.tags:hover { + border-color: #b5b5b5; +} +.tags-hover, +.tags-hover:hover { + border-color: #f59942; + outline: 0; +} +.tags[class*="span"] { + float: none; + margin-left: 0; +} +.tags input[type="text"], +.tags input[type="text"]:focus { + border: none; + display: inline; + outline: 0; + margin: 0; + padding: 0; + line-height: 18px; + -webkit-box-shadow: none; + box-shadow: none; + width: 100%; +} +.tags .tag { + display: inline-block; + position: relative; + font-size: 13px; + font-weight: normal; + vertical-align: baseline; + white-space: nowrap; + background-color: #91b8d0; + color: #FFF; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15); + padding: 4px 22px 5px 9px; + margin-bottom: 3px; + margin-right: 3px; + -webkit-transition: all 0.2s; + -o-transition: all 0.2s; + transition: all 0.2s; + /** + &:nth-child(5n+1) { + background-color:#48A2E0; + } + &:nth-child(5n+2) { + background-color:#34C896; + } + &:nth-child(5n+3) { + background-color:#B57BB3; + } + &:nth-child(5n+4) { + background-color:#CC7DA8; + } + &:nth-child(5n+5) { + background-color:#666; + } +*/ +} +.tags .tag:empty { + display: none; +} +.tags .tag-important { + background-color: #d15b47; +} +.tags .tag-warning { + background-color: #ffb752; +} +.tags .tag-success { + background-color: #87b87f; +} +.tags .tag-info { + background-color: #6fb3e0; +} +.tags .tag-inverse { + background-color: #555555; +} +.tags .tag .close { + font-size: 15px; + line-height: 20px; + opacity: 1; + filter: alpha(opacity=100); + color: #FFF; + text-shadow: none; + float: none; + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 18px; + text-align: center; +} +.tags .tag .close:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.page-content > .row .col-xs-12, +.page-content > .row .col-sm-12, +.page-content > .row .col-md-12, +.page-content > .row .col-lg-12 { + float: left; + max-width: 100%; +} +.col-xs-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; +} +@media (min-width: 768px) { + .col-sm-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; + } +} +@media (min-width: 992px) { + .col-md-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; + } +} +@media (min-width: 1200px) { + .col-lg-reset { + width: auto; + padding-left: 0; + padding-right: 0; + float: none !important; + } +} +.jqstooltip, +.legendColorBox div { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.legendLabel { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 22px; + padding-left: 2px; + font-size: 10px; +} +@media only screen and (max-width: 991px) { + body { + overflow-x: hidden; + } +} +.navbar-fixed-top + .main-container { + padding-top: 45px; +} +@media (max-width: 479px) { + .navbar-fixed-top + .main-container { + padding-top: 90px; + } + .navbar-fixed-top.navbar-collapse + .main-container { + padding-top: 45px; + } +} +@media only screen and (max-width: 360px) { + .grid2, + .grid3, + .grid4 { + float: none; + display: block; + width: 96%; + border-left-width: 0; + position: relative; + margin-bottom: 11px; + border-bottom: 1px solid #E3E3E3; + padding-bottom: 4px; + } + .grid2 > [class*="pull-"], + .grid3 > [class*="pull-"], + .grid4 > [class*="pull-"] { + float: none !important; + display: inline-block; + position: absolute; + right: 11px; + top: 0; + margin-top: 0; + } + .grid2:last-child, + .grid3:last-child, + .grid4:last-child { + border-bottom-width: 0; + } +} +@media only screen and (max-width: 480px) { + .hidden-480 { + display: none !important; + } +} +@media only screen and (max-width: 320px) { + .hidden-320 { + display: none !important; + } +} +.no-skin { + /** + .nav-list > li.disabled.active:after { + border-color: #999; + } + .nav-list li.disabled li.active > a:after, + .nav-list li.active.disabled > a:after { + -moz-border-right-colors: #999 !important; + border-right-color: #999 !important; + } + */ +} +.no-skin .navbar .navbar-toggle { + background-color: #75B3D7; +} +.no-skin .navbar .navbar-toggle:focus { + background-color: #75B3D7; + border-color: transparent; +} +.no-skin .navbar .navbar-toggle:hover { + background-color: #61a8d1; + border-color: rgba(255, 255, 255, 0.1); +} +.no-skin .navbar .navbar-toggle.display, +.no-skin .navbar .navbar-toggle[data-toggle=collapse]:not(.collapsed) { + background-color: #4d9dcc; + box-shadow: inset 1px 1px 2px 0 rgba(0, 0, 0, 0.25); + border-color: rgba(255, 255, 255, 0.35); +} +.no-skin .sidebar { + background-color: #f2f2f2; + border-style: solid; + border-color: #cccccc; + border-width: 0 1px 0 0; +} +.no-skin .nav-list .open > a, +.no-skin .nav-list .open > a:hover, +.no-skin .nav-list .open > a:focus { + background-color: #fafafa; +} +.no-skin .nav-list > li { + border-color: #e5e5e5; +} +.no-skin .nav-list > li > a { + background-color: #f8f8f8; + color: #585858; +} +.no-skin .nav-list > li > a:focus { + background-color: #f8f8f8; + color: #1963aa; +} +.no-skin .nav-list > li:hover > a { + background-color: #ffffff; + color: #266cad; +} +.no-skin .nav-list > li.open > a { + background-color: #fafafa; + color: #1963aa; +} +.no-skin .nav-list > li.active > a { + font-weight: bold; + color: #2b7dbc; +} +.no-skin .nav-list > li.active > a, +.no-skin .nav-list > li.active > a:hover, +.no-skin .nav-list > li.active > a:focus { + background-color: #ffffff; +} +.no-skin .nav-list > li .submenu { + background-color: #ffffff; + border-color: #e5e5e5; +} +.no-skin .nav-list > li .submenu > li > a { + border-top-color: #e4e4e4; + background-color: #ffffff; + color: #616161; +} +.no-skin .nav-list > li .submenu > li > a:hover { + color: #4b88b7; + background-color: #f1f5f9; +} +.no-skin .nav-list > li .submenu > li.active > a { + color: #2b7dbc; +} +.no-skin .nav-list > li .submenu > li.active > a > .menu-icon { + color: #c86139; +} +.no-skin .nav-list > li .submenu > li.active.open > a > .menu-icon { + color: inherit; +} +@media only screen and (min-width: 992px) { + .no-skin .nav-list > li .submenu > li.active.hover > a.dropdown-toggle > .menu-icon { + color: inherit; + } +} +.no-skin .nav-list > li .submenu > li.active:not(.open) > a { + background-color: #f5f7fa; +} +.no-skin .nav-list > li .submenu > li.active:not(.open) > a:hover { + background-color: #f1f5f9; +} +.no-skin .nav-list > li > .submenu .open > a, +.no-skin .nav-list > li > .submenu .open > a:hover, +.no-skin .nav-list > li > .submenu .open > a:focus { + border-color: #e4e4e4; +} +.no-skin .nav-list > li > .submenu li > .submenu > li a { + color: #757575; +} +.no-skin .nav-list > li > .submenu li > .submenu > li a:hover { + color: #4b88b7; + background-color: #f1f5f9; +} +.no-skin .nav-list > li > .submenu li.open > a { + color: #4b88b7; +} +.no-skin .nav-list > li > .submenu li > .submenu li.open > a, +.no-skin .nav-list > li > .submenu li > .submenu li.active > a { + color: #4b88b7; +} +.no-skin .nav-list > li > .submenu:before, +.no-skin .nav-list > li > .submenu > li:before { + border-color: #9dbdd6; +} +.no-skin .nav-list > li.active > .submenu:before, +.no-skin .nav-list > li.active > .submenu > li:before { + border-color: #8eb3d0; +} +.no-skin .sidebar-toggle { + background-color: #f3f3f3; + border-color: #e0e0e0; +} +.no-skin .sidebar-toggle > .ace-icon { + border-color: #bbbbbb; + color: #aaaaaa; + background-color: #ffffff; +} +.no-skin .sidebar-shortcuts { + background-color: #fafafa; +} +.no-skin .sidebar-fixed .sidebar-shortcuts { + border-color: #dddddd; +} +.no-skin .sidebar-shortcuts-mini { + background-color: #ffffff; +} +.no-skin .nav-list li > .arrow:before { + border-right-color: #B8B8B8; + -moz-border-right-colors: #B8B8B8; + border-width: 10px 10px 10px 0; + left: -11px; +} +.no-skin .nav-list li > .arrow:after { + border-right-color: #ffffff; + -moz-border-right-colors: #ffffff; + border-width: 10px 10px 10px 0; + left: -10px; +} +.no-skin .nav-list > li.pull_up > .arrow:after { + border-right-color: #ffffff !important; + -moz-border-right-colors: #ffffff !important; + border-width: 10px 10px 10px 0 !important; + left: -10px !important; +} +.no-skin .nav-list > li.pull_up > .arrow:before { + border-width: 10px 10px 10px 0 !important; + left: -11px !important; +} +.no-skin .nav-list li.active > a:after { + border-right-color: #2b7dbc; + -moz-border-right-colors: #2b7dbc; +} +.no-skin .nav-list > li.active:after { + display: block; + content: ""; + position: absolute; + right: -2px; + top: -1px; + bottom: 0; + z-index: 1; + border: 2px solid; + border-width: 0 2px 0 0; + border-color: #2b7dbc; +} +.no-skin .sidebar-scroll .nav-list > li.active:after { + right: 0; +} +@media only screen and (max-width: 991px) { + .no-skin .sidebar.responsive .nav-list > li.active.open > a:after, + .no-skin .sidebar.responsive-max .nav-list > li.active.open > a:after { + display: block; + } + .no-skin .sidebar.responsive .nav-list li li.active > a:after, + .no-skin .sidebar.responsive-max .nav-list li li.active > a:after { + display: none; + } + .no-skin .sidebar.responsive .nav-list > li.active:after, + .no-skin .sidebar.responsive-max .nav-list > li.active:after { + height: 41px; + } +} +.no-skin .sidebar.menu-min .nav-list > li > a > .menu-text { + background-color: #f5f5f5; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; +} +.no-skin .sidebar.menu-min .nav-list > li > a.dropdown-toggle > .menu-text { + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); +} +.no-skin .sidebar.menu-min .nav-list > li.active > .submenu { + border-left-color: #83b6d1; +} +.no-skin .sidebar.menu-min .nav-list > li > .submenu { + background-color: #ffffff; + border: 1px solid #cccccc; + border-top-color: #e6e6e6; + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); +} +.no-skin .sidebar.menu-min .nav-list > li > .arrow:after { + border-right-color: #f5f5f5; + -moz-border-right-colors: #f5f5f5; + border-width: 8px 8px 8px 0; + left: -8px; +} +.no-skin .sidebar.menu-min .nav-list > li > .arrow:before { + border-width: 8px 8px 8px 0; + left: -9px; +} +.no-skin .sidebar.menu-min .nav-list > li.active > .arrow:before { + border-right-color: #5a9ec2; + -moz-border-right-colors: #5a9ec2; +} +.no-skin .sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #83b6d1; +} +.no-skin .sidebar.menu-min .sidebar-shortcuts-large { + background-color: #ffffff; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; +} +.no-skin .sidebar.menu-min .sidebar-toggle > .ace-icon { + border-color: #b1b1b1; +} +@media (max-width: 991px) { + .no-skin .sidebar.responsive-min .nav-list > li > a > .menu-text { + background-color: #f5f5f5; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; + } + .no-skin .sidebar.responsive-min .nav-list > li > a.dropdown-toggle > .menu-text { + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + } + .no-skin .sidebar.responsive-min .nav-list > li.active > .submenu { + border-left-color: #83b6d1; + } + .no-skin .sidebar.responsive-min .nav-list > li > .submenu { + background-color: #ffffff; + border: 1px solid #cccccc; + border-top-color: #e6e6e6; + -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.1); + } + .no-skin .sidebar.responsive-min .nav-list > li > .arrow:after { + border-right-color: #f5f5f5; + -moz-border-right-colors: #f5f5f5; + border-width: 8px 8px 8px 0; + left: -8px; + } + .no-skin .sidebar.responsive-min .nav-list > li > .arrow:before { + border-width: 8px 8px 8px 0; + left: -9px; + } + .no-skin .sidebar.responsive-min .nav-list > li.active > .arrow:before { + border-right-color: #5a9ec2; + -moz-border-right-colors: #5a9ec2; + } + .no-skin .sidebar.responsive-min .nav-list > li.active > a > .menu-text { + border-left-color: #83b6d1; + } + .no-skin .sidebar.responsive-min .sidebar-shortcuts-large { + background-color: #ffffff; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; + } + .no-skin .sidebar.responsive-min .sidebar-toggle > .ace-icon { + border-color: #b1b1b1; + } +} +@media only screen and (min-width: 992px) { + .no-skin .nav-list li.hover > .submenu { + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + border-color: #cccccc; + } + .no-skin .nav-list li.hover > .submenu > li.active > a { + background-color: #f5f5f5; + } + .no-skin .nav-list li.hover > .submenu > li:hover > a { + background-color: #eef3f7; + color: #2e7db4; + } +} +@media only screen and (min-width: 992px) and (max-width: 991px) { + .no-skin .sidebar.navbar-collapse .nav-list li li.hover.active.open > a { + background-color: #ffffff; + } + .no-skin .sidebar.navbar-collapse .nav-list li li.hover:hover > a { + background-color: #ffffff; + } + .no-skin .sidebar.navbar-collapse .nav-list li li.hover > a:hover, + .no-skin .sidebar.navbar-collapse .nav-list li li.hover.open > a:hover, + .no-skin .sidebar.navbar-collapse .nav-list li li.hover.open.active > a:hover { + background-color: #f1f5f9; + } + .no-skin .sidebar.navbar-collapse .nav-list > li .submenu > li.active.hover > a.dropdown-toggle > .menu-icon { + color: #c86139; + } + .no-skin .sidebar.navbar-collapse .nav-list > li .submenu > li.active.open.hover > a.dropdown-toggle > .menu-icon { + color: inherit; + } +} +@media only screen and (min-width: 992px) { + .no-skin .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a { + color: #585858; + } + .no-skin .sidebar.navbar-collapse .nav-list > li.open.hover:not(:hover):not(:focus):not(.active) > a > .arrow { + color: inherit; + } + .no-skin .sidebar.navbar-collapse .nav-list > li.open.hover:hover > a { + background-color: #ffffff; + } + .no-skin .sidebar.navbar-collapse .nav-list > li > .submenu li.open.hover:not(:hover):not(:focus):not(.active) > a { + color: #616161; + } + .no-skin .sidebar.navbar-collapse .nav-list > li > .submenu li.open.hover:not(:hover):not(:focus):not(.active) > a > .arrow { + color: inherit; + } +} +@media only screen and (min-width: 992px) and (max-width: 991px) { + .no-skin .sidebar.navbar-collapse .nav-list li.hover > .submenu { + border-top-color: #e5e5e5; + background-color: #ffffff; + } + .no-skin .nav-list li.hover > .submenu > li.active:not(.open) > a { + background-color: #f5f7fa; + } + .no-skin .nav-list li.hover > .submenu > li.active:not(.open) > a:hover { + background-color: #f1f5f9; + } +} +@media only screen and (min-width: 992px) { + .no-skin .sidebar.h-sidebar { + background-color: #f8f8f8; + } + .no-skin .sidebar.h-sidebar:before { + background-color: #e4e4e4; + -webkit-box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.05) inset; + box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.05) inset; + } + .no-skin .sidebar.h-sidebar .nav-list > li:hover, + .no-skin .sidebar.h-sidebar .nav-list > li:hover + li { + border-left-color: #cedde5; + } + .no-skin .sidebar.h-sidebar .nav-list > li:last-child:hover { + border-right-color: #cedde5; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active, + .no-skin .sidebar.h-sidebar .nav-list > li.active + li, + .no-skin .sidebar.h-sidebar .nav-list > li:hover + li.active { + border-left-color: #79b0ce; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active:last-child { + border-right-color: #79b0ce; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active:before { + background-color: #2b7dbc; + } + .no-skin .sidebar.h-sidebar .nav-list > li.active > a:after { + border-width: 0 0 2px 0; + border-color: transparent; + border-bottom-color: #FFF; + left: 0; + right: 0; + top: auto; + bottom: -2px; + } + .no-skin .sidebar.h-sidebar .sidebar-shortcuts-large { + background-color: #FFF; + border-color: #cccccc; + -webkit-box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 2px 1px 2px 0 rgba(0,0,0,0.1); + } + .no-skin .sidebar.h-sidebar .sidebar-shortcuts-large:after { + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .no-skin .sidebar.h-sidebar .nav-list > li.hover > .submenu { + border-color: #cccccc; + } + .no-skin .sidebar.h-sidebar.menu-min .nav-list > li.hover > .submenu { + border-top-color: #e6e6e6; + } + .no-skin .sidebar.h-sidebar .nav-list > li.hover > .arrow:after { + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + -moz-border-left-colors: none; + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .no-skin .sidebar.h-sidebar .nav-list > li.hover > .arrow:before { + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + -moz-border-left-colors: none; + -moz-border-bottom-colors: #B8B8B8; + border-bottom-color: #B8B8B8; + } + .no-skin .sidebar.h-sidebar.menu-min .nav-list > li.hover > .arrow:after { + -moz-border-bottom-colors: #F5F5F5; + border-bottom-color: #F5F5F5; + } + .no-skin .sidebar.h-sidebar.menu-min .nav-list > li.active > a > .menu-text { + border-left-color: #cccccc; + } +} +@media only screen and (max-width: 991px) { + .no-skin .sidebar { + border-width: 0 1px 1px 0; + border-top-color: #d6d6d6; + } + .no-skin .menu-toggler + .sidebar.responsive { + border-top-width: 1px; + } + .no-skin .sidebar.responsive-min { + border-width: 0 1px 0 0; + } + .no-skin .sidebar.navbar-collapse { + border-width: 0; + border-bottom-width: 1px !important; + border-bottom-color: #cccccc; + -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1) !important; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1) !important; + } + .no-skin .sidebar.navbar-collapse.menu-min .nav-list > li > .submenu { + background-color: #ffffff; + } +} +.no-skin .sidebar-scroll .sidebar-shortcuts { + border-bottom-color: #dddddd; +} +.no-skin .sidebar-scroll .sidebar-toggle { + border-top-color: #dddddd; +} +.no-skin .main-container .menu-toggler { + background-color: #444444; +} +.no-skin .main-container .menu-toggler:before { + border-top-color: #87b87f; + border-bottom-color: #6fb3e0; +} +.no-skin .main-container .menu-toggler:after { + border-top-color: #ffa24d; + border-bottom-color: #d15b47; +} +.no-skin .main-container .menu-toggler > .toggler-text { + border-top-color: #444444; + -moz-border-top-colors: #444444; +} +.no-skin .nav-list > li.disabled:before { + display: none !important; +} +.no-skin .nav-list > li.disabled > a { + background-color: #ebebeb !important; + color: #656565 !important; +} +.no-skin .nav-list li .submenu > li.disabled > a, +.no-skin .nav-list li.disabled .submenu > li > a { + background-color: #f2f2f2 !important; + color: #7a7a7a !important; + cursor: not-allowed !important; +} +.no-skin .nav-list li .submenu > li.disabled > a > .menu-icon, +.no-skin .nav-list li.disabled .submenu > li > a > .menu-icon { + display: none; +} +.nav-list li.highlight li.active > a:after, +.nav-list li li.highlight.active > a:after, +.nav-list li.highlight li.active > a:before, +.nav-list li li.highlight.active > a:before { + display: none; +} +.nav-list > li.highlight.active > a:after, +.nav-list > li.highlight.active > a:before { + display: block; +} +.no-skin .nav-list > li.highlight:hover, +.no-skin .nav-list > li.highlight.active { + border-color: #c8d8e2; +} +.no-skin .nav-list > li.highlight:hover + li, +.no-skin .nav-list > li.highlight.active + li { + border-top-color: #c8d8e2; +} +.no-skin .nav-list > li.highlight:hover > a, +.no-skin .nav-list > li.highlight.active > a { + background-color: #FFF; +} +.no-skin .nav-list > li.highlight.active:after { + display: none; +} +.no-skin .nav-list > li.highlight.active:before { + display: block; + background-color: #4f90c2; +} +.no-skin .nav-list > li.highlight.active > a { + background-color: #f2f6f9 !important; +} +.no-skin .nav-list > li.highlight.active > a:before, +.no-skin .nav-list > li.highlight.active > a:after { + display: block; + content: ""; + position: absolute; + top: -1px; + right: -10px; + bottom: auto; + z-index: 1; + border-style: solid; + border-width: 20px 0 21px 10px; + border-color: transparent; +} +.no-skin .nav-list > li.highlight.active > a:before { + border-left-color: #a0bccd; + -moz-border-left-colors: #a0bccd; + right: -11px; +} +.no-skin .nav-list > li.highlight.active > a:after { + border-left-color: #f2f6f9; + -moz-border-left-colors: #f2f6f9; +} +.no-skin .nav-list li li.highlight.active > a { + background-color: #f2f6f9; +} +.no-skin .nav-list li li.highlight.active.open > a { + background-color: #FFF; +} +.no-skin .nav-list li li.highlight.active.open > a:hover { + background-color: #f1f5f9; +} +@media (min-width: 992px) { + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active > a:after { + display: block; + content: ""; + position: absolute; + left: 0; + top: auto; + right: auto; + bottom: -2px; + left: 50%; + margin-left: -7px; + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-left-colors: none; + -moz-border-top-colors: none; + border-width: 8px 7px; + border-bottom-color: #FFF; + -moz-border-bottom-colors: #FFF; + } + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active > a:before { + content: ""; + position: absolute; + display: block; + left: 0; + top: auto; + right: auto; + bottom: -1px; + left: 50%; + margin-left: -7px; + border-width: 8px; + border-color: transparent; + -moz-border-right-colors: none; + -moz-border-left-colors: none; + -moz-border-top-colors: none; + border-bottom-color: #74add7; + -moz-border-bottom-colors: #74add7; + } + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:after, + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active.hover-show > a:after, + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:before, + .no-skin .sidebar.h-sidebar .nav-list > li.highlight.active.hover-show > a:before { + display: none; + } +} +@media (min-width: 992px) { + .sidebar.compact .nav-list li.highlight.active > a:after, + .sidebar.compact .nav-list li.highlight.active > a:before { + display: none; + } + .sidebar.compact.menu-min .nav-list li.highlight.active > a:after, + .sidebar.compact.menu-min .nav-list li.highlight.active > a:before { + display: block; + } +} +@media (min-width: 992px) { + .sidebar.h-sidebar .nav-list li.highlight.active > a:after, + .sidebar.h-sidebar .nav-list li.highlight.active > a:before { + display: block; + border-width: 8px !important; + -moz-border-left-colors: none !important; + -moz-border-right-colors: none !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + } + .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:after, + .sidebar.h-sidebar .nav-list > li.highlight.active:hover > a:before { + display: none !important; + } +} +.sidebar-scroll .nav-list > li.active.highlight > a:after, +.sidebar-scroll .nav-list > li.active.highlight > a:before { + display: none !important; +} +.onpage-help-backdrop { + position: absolute; + z-index: 99990; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: #000; + filter: alpha(opacity=5); + background-color: rgba(0, 0, 0, 0.05); +} +.onpage-help-section { + display: block; + position: absolute; + z-index: 100000; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4DFFFFFF', endColorstr='#4DFFFFFF', GradientType=0); + background-color: rgba(255, 255, 255, 0.3); + border: 1px dashed #8BBCD3; + border-radius: 4px; + transition: background-color 0.2s, border-color 0.2s; + -webkit-transition: background-color 0.2s, border-color 0.2s; + text-align: center; + vertical-align: middle; + outline: none !important; +} +.onpage-help-section > .ie-hover-fix { + /* ie8-9 fix*/ + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: #FFF; + filter: alpha(opacity=1); +} +.onpage-help-section:focus, +.onpage-help-section:active { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33C9D8EA', endColorstr='#33C9D8EA', GradientType=0); + background-color: rgba(201, 216, 234, 0.2); + border-color: #77ACC4; +} +.onpage-help-section:hover { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#66C9D8EA', endColorstr='#66C9D8EA', GradientType=0); + background-color: rgba(201, 216, 234, 0.4); + border-color: #77ACC4; + border-style: solid; +} +.onpage-help-section > .help-icon-1 { + font-size: 18px; + display: inline-block; + position: absolute; + z-index: 1; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + opacity: 0; + filter: alpha(opacity=0); + color: #FFF; + text-shadow: 0 0 2px black; + background-color: #85B8DB; + border: 2px solid #FFF; + border-radius: 100%; + box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.4); + width: 48px; + height: 48px; + line-height: 46px; + transition: opacity 0.2s; + -webkit-transition: opacity 0.2s; +} +.onpage-help-section:focus > .help-icon-1, +.onpage-help-section:active > .help-icon-1 { + opacity: 0.5; +} +.onpage-help-section:hover > .help-icon-1 { + opacity: 1; + filter: alpha(opacity=100); +} +.onpage-help-section.help-section-small > .help-icon-1 { + font-size: 18px; + width: 28px; + height: 28px; + line-height: 26px; + border-radius: 12px; +} +.onpage-help-section.help-section-smaller > .help-icon-1 { + font-size: 14px; + width: 20px; + height: 20px; + line-height: 17px; + border-radius: 8px; +} +.onpage-help-section > .help-icon-2 { + position: absolute; + z-index: 2; + left: -4px; + top: -4px; + width: 18px; + height: 18px; + line-height: 16px; + display: block; + font-size: 16px; + color: orange; + background-color: #FFF; + border: 1px solid orange; + border-radius: 4px; + opacity: 1; + transition: all 0.2s; + -webkit-transition: all 0.2s; +} +.onpage-help-section:hover > .help-icon-2 { + color: #59A34E; + border-color: #59A34E; + transform: scale(1.25); + -webkit-transform: scale(1.25); +} +.onpage-help-modal { + z-index: 100010; +} +.onpage-help-modal + .modal-backdrop { + z-index: 100009; +} +.onpage-help-modal-buttons button { + border-radius: 100%; + border-width: 2px !important; +} +.onpage-help-modal-buttons button:focus { + outline: none !important; +} +.onpage-help-modal-buttons button.disabled { + transform: scale(0.9); + -webkit-transform: scale(0.9); +} +.onpage-help-content { + max-width: 800px; + margin: 0 auto; +} +.code-modal.onpage-help-modal .modal-dialog { + margin-top: 6px; + margin-bottom: 6px; +} +.code-modal.onpage-help-modal .modal-header { + padding-top: 6px; + padding-bottom: 6px; +} +.code-modal.onpage-help-modal .modal-body { + padding: 10px 12px; +} +.onpage-help-modal pre { + border-width: 0; + box-shadow: none; + border-radius: 0; + margin-top: 8px; +} +.onpage-help-modal .modal-title code { + font-size: 13px; +} +.onpage-help-modal .modal-body { + font-size: 14px; +} +@media print { + .navbar { + display: none !important; + /** + background: transparent none !important; + border-bottom: 1px solid #DDD; + + .navbar-brand { + color: @text-color !important; + } + + .ace-nav { + display: none !important; + } + */ + } + .sidebar { + display: none !important; + } + .main-content { + margin-left: 0 !important; + margin-right: 0 !important; + } + .main-content .nav-search { + display: none !important; + } + .main-content .breadcrumbs { + float: right; + border-width: 0 !important; + } + .main-content .breadcrumbs .breadcrumb > li + li:before { + content: "/"; + } + .main-content .breadcrumbs .breadcrumb .home-icon { + display: none; + } + .ace-settings-container { + display: none !important; + } + .footer { + width: 100%; + height: auto; + position: relative; + } + .footer .footer-inner, + .footer .footer-inner .footer-content { + width: 100%; + } + .btn-scroll-up { + display: none !important; + } + .btn, + .btn.btn-app { + background: transparent none !important; + border-width: 1px !important; + border-radius: 0 !important; + color: #555 !important; + } + .label { + border: 1px solid #666 !important; + } + .label[class*=arrowed]:before, + .label[class*=arrowed]:after { + display: none !important; + } +} diff --git a/web/vendor/ace/css/ace.onpage-help.css b/web/vendor/ace/css/ace.onpage-help.css new file mode 100755 index 0000000..1a5dc3c --- /dev/null +++ b/web/vendor/ace/css/ace.onpage-help.css @@ -0,0 +1,222 @@ +/** +You don't need this file. +It's used for Ace demo only, to style the button that launches help, help content, etc ... +*/ + +.onpage-help-container:focus, .onpage-help-toggle-btn:focus { + outline: none; +} +.onpage-help-toggle-container { + position: fixed; + top: 135px; +} +.onpage-help-toggle-container.active { + z-index: 100001; +} + + +@media (min-width: 768px) { + .main-container.container ~ .onpage-help-container .onpage-help-toggle-container { + right: auto; + margin-left: 690px; + } + .rtl .main-container.container ~ .onpage-help-container .onpage-help-toggle-container { + right: auto; + left: auto; + margin-left: auto; + margin-right: 690px; + } +} +@media (min-width: 992px) { + .h-navbar ~ .onpage-help-container .onpage-help-toggle-container { + margin-top: 48px; + } + + .main-container.container ~ .onpage-help-container .onpage-help-toggle-container { + right: auto; + margin-left: 910px; + } + .rtl .main-container.container ~ .onpage-help-container .onpage-help-toggle-container { + right: auto; + left: auto; + margin-left: auto; + margin-right: 910px; + } +} +@media (min-width: 1200px) { + .main-container.container ~ .onpage-help-container .onpage-help-toggle-container { + right: auto; + margin-left: 1110px; + } + .rtl .main-container.container ~ .onpage-help-container .onpage-help-toggle-container { + right: auto; + left: auto; + margin-left: auto; + margin-right: 1110px; + } +} + + + +.onpage-help-toggle-text { + -moz-animation: pulsating 2s 2 linear 1s; + -webkit-animation: pulsating 2s 2 linear 1s; + -o-animation: pulsating 2s 2 linear 1s; + -ms-animation: pulsating 2s 2 linear 1s; + animation: pulsating 2s 2 linear 1s; +} + + + +.onpage-help-content { + background-color: #FFF; + padding: 8px 12px; + border-top: 1px solid #C5D0DC; +} +.onpage-help-content:only-of-type { + border-top-width: 0; +} +.onpage-help-content .help-content + .hr { + border-width: 0 0; + border-style: dotted; + margin: 16px 0; +} +.onpage-help-content .help-title { + border-bottom: 2px solid #DCE8F1; + padding-bottom: 8px; +} + +.onpage-help-content .panel-help { + border-radius: 0; + border-width: 0 0 1px; + border-bottom: 1px solid #DCE8F1; + box-shadow: none; +} +.onpage-help-content .panel-help > .panel-heading { + color: #4383B4; + background-color: transparent; + margin-bottom: 5px; +} +.onpage-help-content .panel-help > .panel-heading > .panel-title { + font-size: 18px; +} +.onpage-help-content .panel-help > .panel-heading > .panel-title > a:focus { + outline: none; +} +.onpage-help-content .panel-help > .panel-heading > .panel-title > a:hover { + background-color: #DCE8F1; + text-decoration: none; +} +.onpage-help-content .panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-style: dotted; +} +@media (max-width: 767px) { + .onpage-help-content .panel-default > .panel-heading, + .onpage-help-content .panel-default > .panel-heading + .panel-collapse .panel-body { + padding-right: 5px; + padding-left: 5px; + } + .onpage-help-content .thumbnail { + max-width: 100%; + } + .onpage-help-content .thumbnail img { + max-width: 100%; + } + + .onpage-help-modal .modal-body { + padding-right: 10px; + padding-left: 10px; + } + .onpage-help-modal .modal-title code { + white-space: normal; + } +} + +.onpage-help-modal .modal-title { + color: #478FCA; +} + + + +.onpage-help-content .info-list { + margin: 0; +} +.onpage-help-content .info-list > li:nth-child(odd) > .ace-icon:first-child { + color: #478FCA; +} +.onpage-help-content .info-list > li:nth-child(even) > .ace-icon:first-child { + color: #69AA46; +} +.onpage-help-content .info-list > li:not(.hr) { + margin-top: 0; + margin-bottom: 0; + padding: 16px 12px; + line-height: 22px; +} +.onpage-help-content .info-list > li:not(.hr):nth-child(even) { + background-color: #FFF; + border: 1px solid #E9E9E9; +} +.onpage-help-content .info-list > li:not(.hr):nth-child(odd) { + background-color: #F0F4F9; +} + +.onpage-help-content .info-list > li:not(.hr):nth-child(even) code { + background-color: #F0F4F9; +} +.onpage-help-content .info-list > li:not(.hr):nth-child(odd) code { + background-color: #FFF; +} + + +.onpage-help-content .help-more { + color: #425663; + border-bottom: 1px dotted #AAA; + padding-bottom: 1px; +} +.onpage-help-content .help-more:hover { + text-decoration: none; + border-bottom-color: #628DB2; + background-color: #E4EAC7; +} + +.onpage-help-content u.dotted { + text-decoration: none; + border-bottom: 1px dotted #999; +} + +/* because .close here is a rainbow highlighted token not a bootstrap close button */ +.onpage-help-content pre .close { + float: inherit; + font-size: inherit; + font-weight: inherit; + line-height: inherit; + opacity: inherit; + text-shadow: inherit; +} + +.onpage-help-content .open-file { + cursor: pointer; + -webkit-transition: all 0.12s; + transition: all 0.12s; +} +.onpage-help-content .open-file:hover { + background-color: #CEE0EA !important; +} +.onpage-help-content .open-file .brief-show { + display: none; +} +.onpage-help-content .open-file:hover .brief-show { + display: inline; +} + + +.onpage-help-content a[href^="http"]:before { + font-family: FontAwesome; + font-size: 15px; + content: "\f08e"; + display: inline; + margin-right: 3px; +} + + diff --git a/web/vendor/ace/css/bootstrap-datetimepicker.css b/web/vendor/ace/css/bootstrap-datetimepicker.css new file mode 100755 index 0000000..bd37b08 --- /dev/null +++ b/web/vendor/ace/css/bootstrap-datetimepicker.css @@ -0,0 +1,238 @@ +/*! + * Datetimepicker for Bootstrap v3 +//! version : 3.1.3 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */ +.bootstrap-datetimepicker-widget { + top: 0; + left: 0; + width: 250px; + padding: 4px; + margin-top: 1px; + z-index: 99999 !important; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget.timepicker-sbs { + width: 600px; +} +.bootstrap-datetimepicker-widget.bottom:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 7px; +} +.bootstrap-datetimepicker-widget.bottom:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + position: absolute; + top: -6px; + left: 8px; +} +.bootstrap-datetimepicker-widget.top:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 7px solid #ccc; + border-top-color: rgba(0, 0, 0, 0.2); + position: absolute; + bottom: -7px; + left: 6px; +} +.bootstrap-datetimepicker-widget.top:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid white; + position: absolute; + bottom: -6px; + left: 7px; +} +.bootstrap-datetimepicker-widget .dow { + width: 14.2857%; +} +.bootstrap-datetimepicker-widget.pull-right:before { + left: auto; + right: 6px; +} +.bootstrap-datetimepicker-widget.pull-right:after { + left: auto; + right: 7px; +} +.bootstrap-datetimepicker-widget > ul { + list-style-type: none; + margin: 0; +} +.bootstrap-datetimepicker-widget a[data-action] { + padding: 6px 0; +} +.bootstrap-datetimepicker-widget a[data-action]:active { + box-shadow: none; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + width: 54px; + font-weight: bold; + font-size: 1.2em; + margin: 0; +} +.bootstrap-datetimepicker-widget button[data-action] { + padding: 6px; +} +.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator { + width: 4px; + padding: 0; + margin: 0; +} +.bootstrap-datetimepicker-widget .datepicker > div { + display: none; +} +.bootstrap-datetimepicker-widget .picker-switch { + text-align: center; +} +.bootstrap-datetimepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-datetimepicker-widget td, +.bootstrap-datetimepicker-widget th { + text-align: center; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget td { + height: 54px; + line-height: 54px; + width: 54px; +} +.bootstrap-datetimepicker-widget td.cw { + font-size: 10px; + height: 20px; + line-height: 20px; + color: #777777; +} +.bootstrap-datetimepicker-widget td.day { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget td.day:hover, +.bootstrap-datetimepicker-widget td.hour:hover, +.bootstrap-datetimepicker-widget td.minute:hover, +.bootstrap-datetimepicker-widget td.second:hover { + background: #eeeeee; + cursor: pointer; +} +.bootstrap-datetimepicker-widget td.old, +.bootstrap-datetimepicker-widget td.new { + color: #777777; +} +.bootstrap-datetimepicker-widget td.today { + position: relative; +} +.bootstrap-datetimepicker-widget td.today:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-bottom: 7px solid #428bca; + border-top-color: rgba(0, 0, 0, 0.2); + position: absolute; + bottom: 4px; + right: 4px; +} +.bootstrap-datetimepicker-widget td.active, +.bootstrap-datetimepicker-widget td.active:hover { + background-color: #428bca; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget td.active.today:before { + border-bottom-color: #fff; +} +.bootstrap-datetimepicker-widget td.disabled, +.bootstrap-datetimepicker-widget td.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget td span { + display: inline-block; + width: 54px; + height: 54px; + line-height: 54px; + margin: 2px 1.5px; + cursor: pointer; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget td span:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget td span.active { + background-color: #428bca; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget td span.old { + color: #777777; +} +.bootstrap-datetimepicker-widget td span.disabled, +.bootstrap-datetimepicker-widget td span.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget th { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget th.picker-switch { + width: 145px; +} +.bootstrap-datetimepicker-widget th.next, +.bootstrap-datetimepicker-widget th.prev { + font-size: 21px; +} +.bootstrap-datetimepicker-widget th.disabled, +.bootstrap-datetimepicker-widget th.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget thead tr:first-child th { + cursor: pointer; +} +.bootstrap-datetimepicker-widget thead tr:first-child th:hover { + background: #eeeeee; +} +.input-group.date .input-group-addon span { + display: block; + cursor: pointer; + width: 16px; + height: 16px; +} +.bootstrap-datetimepicker-widget.left-oriented:before { + left: auto; + right: 6px; +} +.bootstrap-datetimepicker-widget.left-oriented:after { + left: auto; + right: 7px; +} +.bootstrap-datetimepicker-widget ul.list-unstyled li div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td { + padding: 0px !important; +} +@media screen and (max-width: 767px) { + .bootstrap-datetimepicker-widget.timepicker-sbs { + width: 283px; + } +} diff --git a/web/vendor/ace/css/bootstrap-duallistbox.css b/web/vendor/ace/css/bootstrap-duallistbox.css new file mode 100755 index 0000000..12a67d8 --- /dev/null +++ b/web/vendor/ace/css/bootstrap-duallistbox.css @@ -0,0 +1,78 @@ +.bootstrap-duallistbox-container .buttons { + width: 100%; + margin-bottom: -1px; +} + +.bootstrap-duallistbox-container label { + display: block; +} + +.bootstrap-duallistbox-container .info { + display: inline-block; + margin-bottom: 5px; + font-size: 11px; +} + +.bootstrap-duallistbox-container .clear1, +.bootstrap-duallistbox-container .clear2 { + display: none; + font-size: 10px; +} + +.bootstrap-duallistbox-container .box1.filtered .clear1, +.bootstrap-duallistbox-container .box2.filtered .clear2 { + display: inline-block; +} + +.bootstrap-duallistbox-container .move, +.bootstrap-duallistbox-container .remove { + width: 60%; +} + +.bootstrap-duallistbox-container .btn-group .btn { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.bootstrap-duallistbox-container select { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.bootstrap-duallistbox-container .moveall, +.bootstrap-duallistbox-container .removeall { + width: 40%; +} + +.bootstrap-duallistbox-container.bs2compatible .btn-group > .btn + .btn { + margin-left: 0; +} + +.bootstrap-duallistbox-container select { + width: 100%; + height: 300px; + padding: 0; +} + +.bootstrap-duallistbox-container .filter { + display: inline-block; + width: 100%; + height: 31px; + margin: 0 0 5px 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.bootstrap-duallistbox-container .filter.placeholder { + color: #aaa; +} + +.bootstrap-duallistbox-container.moveonselect .move, +.bootstrap-duallistbox-container.moveonselect .remove { + display:none; +} + +.bootstrap-duallistbox-container.moveonselect .moveall, +.bootstrap-duallistbox-container.moveonselect .removeall { + width: 100%; +} diff --git a/web/vendor/ace/css/bootstrap-editable.css b/web/vendor/ace/css/bootstrap-editable.css new file mode 100755 index 0000000..eaef0de --- /dev/null +++ b/web/vendor/ace/css/bootstrap-editable.css @@ -0,0 +1,663 @@ +/*! X-editable - v1.5.1 +* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery +* http://github.com/vitalets/x-editable +* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */ +.editableform { + margin-bottom: 0; /* overwrites bootstrap margin */ +} + +.editableform .control-group { + margin-bottom: 0; /* overwrites bootstrap margin */ + white-space: nowrap; /* prevent wrapping buttons on new line */ + line-height: 20px; /* overwriting bootstrap line-height. See #133 */ +} + +/* + BS3 width:1005 for inputs breaks editable form in popup + See: https://github.com/vitalets/x-editable/issues/393 +*/ +.editableform .form-control { + width: auto; +} + +.editable-buttons { + display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */ + vertical-align: top; + margin-left: 7px; + /* inline-block emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-buttons.editable-buttons-bottom { + display: block; + margin-top: 7px; + margin-left: 0; +} + +.editable-input { + vertical-align: top; + display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */ + width: auto; /* bootstrap-responsive has width: 100% that breakes layout */ + white-space: normal; /* reset white-space decalred in parent*/ + /* display-inline emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-buttons .editable-cancel { + margin-left: 7px; +} + +/*for jquery-ui buttons need set height to look more pretty*/ +.editable-buttons button.ui-button-icon-only { + height: 24px; + width: 30px; +} + +.editableform-loading { + background: url('../img/loading.gif') center center no-repeat; + height: 25px; + width: auto; + min-width: 25px; +} + +.editable-inline .editableform-loading { + background-position: left 5px; +} + + .editable-error-block { + max-width: 300px; + margin: 5px 0 0 0; + width: auto; + white-space: normal; +} + +/*add padding for jquery ui*/ +.editable-error-block.ui-state-error { + padding: 3px; +} + +.editable-error { + color: red; +} + +/* ---- For specific types ---- */ + +.editableform .editable-date { + padding: 0; + margin: 0; + float: left; +} + +/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */ +.editable-inline .add-on .icon-th { + margin-top: 3px; + margin-left: 1px; +} + + +/* checklist vertical alignment */ +.editable-checklist label input[type="checkbox"], +.editable-checklist label span { + vertical-align: middle; + margin: 0; +} + +.editable-checklist label { + white-space: nowrap; +} + +/* set exact width of textarea to fit buttons toolbar */ +.editable-wysihtml5 { + width: 566px; + height: 250px; +} + +/* clear button shown as link in date inputs */ +.editable-clear { + clear: both; + font-size: 0.9em; + text-decoration: none; + text-align: right; +} + +/* IOS-style clear button for text inputs */ +.editable-clear-x { + background: url('../img/clear.png') center center no-repeat; + display: block; + width: 13px; + height: 13px; + position: absolute; + opacity: 0.6; + z-index: 100; + + top: 50%; + right: 6px; + margin-top: -6px; + +} + +.editable-clear-x:hover { + opacity: 1; +} + +.editable-pre-wrapped { + white-space: pre-wrap; +} +.editable-container.editable-popup { + max-width: none !important; /* without this rule poshytip/tooltip does not stretch */ +} + +.editable-container.popover { + width: auto; /* without this rule popover does not stretch */ +} + +.editable-container.editable-inline { + display: inline-block; + vertical-align: middle; + width: auto; + /* inline-block emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-container.ui-widget { + font-size: inherit; /* jqueryui widget font 1.1em too big, overwrite it */ + z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */ +} +.editable-click, +a.editable-click, +a.editable-click:hover { + text-decoration: none; + border-bottom: dashed 1px #0088cc; +} + +.editable-click.editable-disabled, +a.editable-click.editable-disabled, +a.editable-click.editable-disabled:hover { + color: #585858; + cursor: default; + border-bottom: none; +} + +.editable-empty, .editable-empty:hover, .editable-empty:focus{ + font-style: italic; + color: #DD1144; + /* border-bottom: none; */ + text-decoration: none; +} + +.editable-unsaved { + font-weight: bold; +} + +.editable-unsaved:after { +/* content: '*'*/ +} + +.editable-bg-transition { + -webkit-transition: background-color 1400ms ease-out; + -moz-transition: background-color 1400ms ease-out; + -o-transition: background-color 1400ms ease-out; + -ms-transition: background-color 1400ms ease-out; + transition: background-color 1400ms ease-out; +} + +/*see https://github.com/vitalets/x-editable/issues/139 */ +.form-horizontal .editable +{ + padding-top: 5px; + display:inline-block; +} + + +/*! + * Datepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.datepicker { + padding: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + direction: ltr; + /*.dow { + border-top: 1px solid #ddd !important; + }*/ + +} +.datepicker-inline { + width: 220px; +} +.datepicker.datepicker-rtl { + direction: rtl; +} +.datepicker.datepicker-rtl table tr td span { + float: right; +} +.datepicker-dropdown { + top: 0; + left: 0; +} +.datepicker-dropdown:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 6px; +} +.datepicker-dropdown:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 7px; +} +.datepicker > div { + display: none; +} +.datepicker.days div.datepicker-days { + display: block; +} +.datepicker.months div.datepicker-months { + display: block; +} +.datepicker.years div.datepicker-years { + display: block; +} +.datepicker table { + margin: 0; +} +.datepicker td, +.datepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: none; +} +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} +.datepicker table tr td.day:hover { + background: #eeeeee; + cursor: pointer; +} +.datepicker table tr td.old, +.datepicker table tr td.new { + color: #999999; +} +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + background-color: #fde19a; + background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); + background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); + background-image: linear-gradient(top, #fdd49a, #fdf59a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); + border-color: #fdf59a #fdf59a #fbed50; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #000; +} +.datepicker table tr td.today:hover, +.datepicker table tr td.today:hover:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today:hover.disabled, +.datepicker table tr td.today.disabled.disabled, +.datepicker table tr td.today.disabled:hover.disabled, +.datepicker table tr td.today[disabled], +.datepicker table tr td.today:hover[disabled], +.datepicker table tr td.today.disabled[disabled], +.datepicker table tr td.today.disabled:hover[disabled] { + background-color: #fdf59a; +} +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active { + background-color: #fbf069 \9; +} +.datepicker table tr td.today:hover:hover { + color: #000; +} +.datepicker table tr td.today.active:hover { + color: #fff; +} +.datepicker table tr td.range, +.datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:hover { + background: #eeeeee; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.datepicker table tr td.range.today, +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:hover { + background-color: #f3d17a; + background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a); + background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a)); + background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a); + background-image: -o-linear-gradient(top, #f3c17a, #f3e97a); + background-image: linear-gradient(top, #f3c17a, #f3e97a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0); + border-color: #f3e97a #f3e97a #edde34; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:hover:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today:hover.disabled, +.datepicker table tr td.range.today.disabled.disabled, +.datepicker table tr td.range.today.disabled:hover.disabled, +.datepicker table tr td.range.today[disabled], +.datepicker table tr td.range.today:hover[disabled], +.datepicker table tr td.range.today.disabled[disabled], +.datepicker table tr td.range.today.disabled:hover[disabled] { + background-color: #f3e97a; +} +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active { + background-color: #efe24b \9; +} +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + background-color: #9e9e9e; + background-image: -moz-linear-gradient(top, #b3b3b3, #808080); + background-image: -ms-linear-gradient(top, #b3b3b3, #808080); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080)); + background-image: -webkit-linear-gradient(top, #b3b3b3, #808080); + background-image: -o-linear-gradient(top, #b3b3b3, #808080); + background-image: linear-gradient(top, #b3b3b3, #808080); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0); + border-color: #808080 #808080 #595959; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected:hover:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected:hover.disabled, +.datepicker table tr td.selected.disabled.disabled, +.datepicker table tr td.selected.disabled:hover.disabled, +.datepicker table tr td.selected[disabled], +.datepicker table tr td.selected:hover[disabled], +.datepicker table tr td.selected.disabled[disabled], +.datepicker table tr td.selected.disabled:hover[disabled] { + background-color: #808080; +} +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active { + background-color: #666666 \9; +} +.datepicker table tr td.active, +.datepicker table tr td.active:hover, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.active:hover, +.datepicker table tr td.active:hover:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active:hover.disabled, +.datepicker table tr td.active.disabled.disabled, +.datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active[disabled], +.datepicker table tr td.active:hover[disabled], +.datepicker table tr td.active.disabled[disabled], +.datepicker table tr td.active.disabled:hover[disabled] { + background-color: #0044cc; +} +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active { + background-color: #003399 \9; +} +.datepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.datepicker table tr td span:hover { + background: #eeeeee; +} +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active:hover.disabled, +.datepicker table tr td span.active.disabled.disabled, +.datepicker table tr td span.active.disabled:hover.disabled, +.datepicker table tr td span.active[disabled], +.datepicker table tr td span.active:hover[disabled], +.datepicker table tr td span.active.disabled[disabled], +.datepicker table tr td span.active.disabled:hover[disabled] { + background-color: #0044cc; +} +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active { + background-color: #003399 \9; +} +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: #999999; +} +.datepicker th.datepicker-switch { + width: 145px; +} +.datepicker thead tr:first-child th, +.datepicker tfoot tr th { + cursor: pointer; +} +.datepicker thead tr:first-child th:hover, +.datepicker tfoot tr th:hover { + background: #eeeeee; +} +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} +.datepicker thead tr:first-child th.cw { + cursor: default; + background-color: transparent; +} +.input-append.date .add-on i, +.input-prepend.date .add-on i { + display: block; + cursor: pointer; + width: 16px; + height: 16px; +} +.input-daterange input { + text-align: center; +} +.input-daterange input:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-daterange input:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-daterange .add-on { + display: inline-block; + width: auto; + min-width: 16px; + height: 18px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + vertical-align: middle; + background-color: #eeeeee; + border: 1px solid #ccc; + margin-left: -5px; + margin-right: -5px; +} diff --git a/web/vendor/ace/css/bootstrap-multiselect.css b/web/vendor/ace/css/bootstrap-multiselect.css new file mode 100755 index 0000000..6b69d8e --- /dev/null +++ b/web/vendor/ace/css/bootstrap-multiselect.css @@ -0,0 +1 @@ +.multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .input-group{margin:5px}.multiselect-container>li{padding:0}.multiselect-container>li>a.multiselect-all label{font-weight:700}.multiselect-container>li.multiselect-group label{margin:0;padding:3px 20px;height:100%;font-weight:700}.multiselect-container>li.multiselect-group-clickable label{cursor:pointer}.multiselect-container>li>a{padding:0}.multiselect-container>li>a>label{margin:0;height:100%;cursor:pointer;font-weight:400;padding:3px 20px 3px 40px}.multiselect-container>li>a>label.radio,.multiselect-container>li>a>label.checkbox{margin:0}.multiselect-container>li>a>label>input[type=checkbox]{margin-bottom:5px}.filter .btn{padding:6px 3px}.btn-group>.btn-group:nth-child(2)>.multiselect.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.form-inline .multiselect-container label.checkbox,.form-inline .multiselect-container label.radio{padding:3px 20px 3px 40px}.form-inline .multiselect-container li a label.checkbox input[type=checkbox],.form-inline .multiselect-container li a label.radio input[type=radio]{margin-left:-20px;margin-right:0} \ No newline at end of file diff --git a/web/vendor/ace/css/bootstrap-timepicker.css b/web/vendor/ace/css/bootstrap-timepicker.css new file mode 100755 index 0000000..fa34752 --- /dev/null +++ b/web/vendor/ace/css/bootstrap-timepicker.css @@ -0,0 +1,146 @@ +/*! + * Timepicker Component for Twitter Bootstrap + * + * Copyright 2013 Joris de Wit + * + * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +.bootstrap-timepicker { + position: relative; +} +.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu { + left: auto; + right: 0; +} +.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before { + left: auto; + right: 12px; +} +.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after { + left: auto; + right: 13px; +} +.bootstrap-timepicker .add-on { + cursor: pointer; +} +.bootstrap-timepicker .add-on i { + display: inline-block; + width: 16px; + height: 16px; +} +.bootstrap-timepicker-widget.dropdown-menu { + padding: 4px; +} +.bootstrap-timepicker-widget.dropdown-menu.open { + display: inline-block; +} +.bootstrap-timepicker-widget.dropdown-menu:before { + border-bottom: 7px solid rgba(0, 0, 0, 0.2); + border-left: 7px solid transparent; + border-right: 7px solid transparent; + content: ""; + display: inline-block; + position: absolute; +} +.bootstrap-timepicker-widget.dropdown-menu:after { + border-bottom: 6px solid #FFFFFF; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + content: ""; + display: inline-block; + position: absolute; +} +.bootstrap-timepicker-widget.timepicker-orient-left:before { + left: 6px; +} +.bootstrap-timepicker-widget.timepicker-orient-left:after { + left: 7px; +} +.bootstrap-timepicker-widget.timepicker-orient-right:before { + right: 6px; +} +.bootstrap-timepicker-widget.timepicker-orient-right:after { + right: 7px; +} +.bootstrap-timepicker-widget.timepicker-orient-top:before { + top: -7px; +} +.bootstrap-timepicker-widget.timepicker-orient-top:after { + top: -6px; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:before { + bottom: -7px; + border-bottom: 0; + border-top: 7px solid #999; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:after { + bottom: -6px; + border-bottom: 0; + border-top: 6px solid #ffffff; +} +.bootstrap-timepicker-widget a.btn, +.bootstrap-timepicker-widget input { + border-radius: 4px; +} +.bootstrap-timepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-timepicker-widget table td { + text-align: center; + height: 30px; + margin: 0; + padding: 2px; +} +.bootstrap-timepicker-widget table td:not(.separator) { + min-width: 30px; +} +.bootstrap-timepicker-widget table td span { + width: 100%; +} +.bootstrap-timepicker-widget table td a { + border: 1px transparent solid; + width: 100%; + display: inline-block; + margin: 0; + padding: 8px 0; + outline: 0; + color: #333; +} +.bootstrap-timepicker-widget table td a:hover { + text-decoration: none; + background-color: #eee; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border-color: #ddd; +} +.bootstrap-timepicker-widget table td a i { + margin-top: 2px; + font-size: 18px; +} +.bootstrap-timepicker-widget table td input { + width: 25px; + margin: 0; + text-align: center; +} +.bootstrap-timepicker-widget .modal-content { + padding: 4px; +} +@media (min-width: 767px) { + .bootstrap-timepicker-widget.modal { + width: 200px; + margin-left: -100px; + } +} +@media (max-width: 767px) { + .bootstrap-timepicker { + width: 100%; + } + .bootstrap-timepicker .dropdown-menu { + width: 100%; + } +} diff --git a/web/vendor/ace/css/bootstrap.css b/web/vendor/ace/css/bootstrap.css new file mode 100755 index 0000000..8e45463 --- /dev/null +++ b/web/vendor/ace/css/bootstrap.css @@ -0,0 +1,6286 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + box-shadow: none !important; + text-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]: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; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333333; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + background-color: #fcf8e3; + padding: .2em; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 992px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eeeeee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; + text-align: right; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #ffffff; + background-color: #333333; + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + margin-right: auto; + margin-left: auto; + padding-left: 12px; + padding-right: 12px; +} +@media (min-width: 768px) { + .container { + width: 744px; + } +} +@media (min-width: 992px) { + .container { + width: 964px; + } +} +@media (min-width: 1200px) { + .container { + width: 1164px; + } +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 12px; + padding-right: 12px; +} +.row { + margin-left: -12px; + margin-right: -12px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 12px; + padding-right: 12px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.666%; +} +.col-xs-10 { + width: 83.333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.666%; +} +.col-xs-7 { + width: 58.333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.666%; +} +.col-xs-4 { + width: 33.333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.666%; +} +.col-xs-1 { + width: 8.333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.666%; +} +.col-xs-pull-10 { + right: 83.333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.666%; +} +.col-xs-pull-7 { + right: 58.333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.666%; +} +.col-xs-pull-4 { + right: 33.333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.666%; +} +.col-xs-pull-1 { + right: 8.333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.666%; +} +.col-xs-push-10 { + left: 83.333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.666%; +} +.col-xs-push-7 { + left: 58.333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.666%; +} +.col-xs-push-4 { + left: 33.333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.666%; +} +.col-xs-push-1 { + left: 8.333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.666%; +} +.col-xs-offset-10 { + margin-left: 83.333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.666%; +} +.col-xs-offset-7 { + margin-left: 58.333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.666%; +} +.col-xs-offset-4 { + margin-left: 33.333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.666%; +} +.col-xs-offset-1 { + margin-left: 8.333%; +} +.col-xs-offset-0 { + margin-left: 0%; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.666%; + } + .col-sm-10 { + width: 83.333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.666%; + } + .col-sm-7 { + width: 58.333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.666%; + } + .col-sm-4 { + width: 33.333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.666%; + } + .col-sm-1 { + width: 8.333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.666%; + } + .col-sm-pull-10 { + right: 83.333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.666%; + } + .col-sm-pull-7 { + right: 58.333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.666%; + } + .col-sm-pull-4 { + right: 33.333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.666%; + } + .col-sm-pull-1 { + right: 8.333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.666%; + } + .col-sm-push-10 { + left: 83.333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.666%; + } + .col-sm-push-7 { + left: 58.333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.666%; + } + .col-sm-push-4 { + left: 33.333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.666%; + } + .col-sm-push-1 { + left: 8.333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.666%; + } + .col-sm-offset-10 { + margin-left: 83.333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.666%; + } + .col-sm-offset-7 { + margin-left: 58.333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.666%; + } + .col-sm-offset-4 { + margin-left: 33.333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.666%; + } + .col-sm-offset-1 { + margin-left: 8.333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.666%; + } + .col-md-10 { + width: 83.333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.666%; + } + .col-md-7 { + width: 58.333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.666%; + } + .col-md-4 { + width: 33.333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.666%; + } + .col-md-1 { + width: 8.333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.666%; + } + .col-md-pull-10 { + right: 83.333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.666%; + } + .col-md-pull-7 { + right: 58.333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.666%; + } + .col-md-pull-4 { + right: 33.333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.666%; + } + .col-md-pull-1 { + right: 8.333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.666%; + } + .col-md-push-10 { + left: 83.333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.666%; + } + .col-md-push-7 { + left: 58.333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.666%; + } + .col-md-push-4 { + left: 33.333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.666%; + } + .col-md-push-1 { + left: 8.333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.666%; + } + .col-md-offset-10 { + margin-left: 83.333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.666%; + } + .col-md-offset-7 { + margin-left: 58.333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.666%; + } + .col-md-offset-4 { + margin-left: 33.333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.666%; + } + .col-md-offset-1 { + margin-left: 8.333%; + } + .col-md-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.666%; + } + .col-lg-10 { + width: 83.333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.666%; + } + .col-lg-7 { + width: 58.333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.666%; + } + .col-lg-4 { + width: 33.333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.666%; + } + .col-lg-1 { + width: 8.333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.666%; + } + .col-lg-pull-10 { + right: 83.333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.666%; + } + .col-lg-pull-7 { + right: 58.333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.666%; + } + .col-lg-pull-4 { + right: 33.333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.666%; + } + .col-lg-pull-1 { + right: 8.333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.666%; + } + .col-lg-push-10 { + left: 83.333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.666%; + } + .col-lg-push-7 { + left: 58.333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.666%; + } + .col-lg-push-4 { + left: 33.333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.666%; + } + .col-lg-push-1 { + left: 8.333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.666%; + } + .col-lg-offset-10 { + margin-left: 83.333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.666%; + } + .col-lg-offset-7 { + margin-left: 58.333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.666%; + } + .col-lg-offset-4 { + margin-left: 33.333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.666%; + } + .col-lg-offset-1 { + margin-left: 8.333%; + } + .col-lg-offset-0 { + margin-left: 0%; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #dddddd; +} +.table .table { + background-color: #ffffff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + float: none; + display: table-column; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + overflow-x: auto; + min-height: 0.01%; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #999999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999999; +} +.form-control::-webkit-input-placeholder { + color: #999999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} +.input-sm, +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm, +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +textarea.form-group-sm .form-control, +select[multiple].input-sm, +select[multiple].form-group-sm .form-control { + height: auto; +} +.input-lg, +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg, +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +textarea.form-group-lg .form-control, +select[multiple].input-lg, +select[multiple].form-group-lg .form-control { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + border-color: #3c763d; + background-color: #dff0d8; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + border-color: #8a6d3b; + background-color: #fcf8e3; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + border-color: #a94442; + background-color: #f2dede; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 7px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-left: -12px; + margin-right: -12px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 7px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 12px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.3px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333333; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; +} +.btn-default .badge { + color: #ffffff; + background-color: #333333; +} +.btn-primary { + color: #ffffff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #ffffff; +} +.btn-link { + color: #337ab7; + font-weight: normal; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #337ab7; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 992px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 4px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.nav > li.disabled > a { + color: #777777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777777; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #dddddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 992px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 992px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + overflow-x: visible; + padding-right: 12px; + padding-left: 12px; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 992px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + visibility: visible !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -12px; + margin-left: -12px; +} +@media (min-width: 992px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 992px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 992px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + padding: 15px 12px; + font-size: 18px; + line-height: 20px; + height: 50px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 992px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -12px; + } +} +.navbar-toggle { + position: relative; + float: right; + margin-right: 12px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 992px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -12px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 991px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 992px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + margin-left: -12px; + margin-right: -12px; + padding: 10px 12px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 8px; + margin-bottom: 8px; +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 991px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 992px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 992px) { + .navbar-text { + float: left; + margin-left: 12px; + margin-right: 12px; + } +} +@media (min-width: 992px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -12px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777777; +} +.navbar-default .navbar-nav > li > a { + color: #777777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #dddddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: #e7e7e7; + color: #555555; +} +@media (max-width: 991px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777777; +} +.navbar-default .navbar-link:hover { + color: #333333; +} +.navbar-default .btn-link { + color: #777777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #cccccc; +} +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #080808; + color: #ffffff; +} +@media (max-width: 991px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #ffffff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + content: "/\00a0"; + padding: 0 5px; + color: #cccccc; +} +.breadcrumb > .active { + color: #777777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + line-height: 1.42857143; + text-decoration: none; + color: #337ab7; + background-color: #ffffff; + border: 1px solid #dddddd; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #23527c; + background-color: #eeeeee; + border-color: #dddddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + background-color: #337ab7; + border-color: #337ab7; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777777; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777777; + background-color: #ffffff; + cursor: not-allowed; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #777777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #ffffff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eeeeee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #3c763d; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #31708f; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + background-color: #fcf8e3; + border-color: #faebcc; + color: #8a6d3b; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + background-color: #f2dede; + border-color: #ebccd1; + color: #a94442; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item { + color: #555555; +} +a.list-group-item .list-group-item-heading { + color: #333333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + color: #555555; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #eeeeee; + color: #777777; + cursor: not-allowed; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #dddddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + border: 0; + margin-bottom: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #dddddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} +.panel-default { + border-color: #dddddd; +} +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #ffffff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.42857143px; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + visibility: visible; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: normal; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + background-color: #ffffff; + background-clip: padding-box; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + transition: transform 0.6s ease-in-out; + backface-visibility: hidden; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + transform: translate3d(0, 0, 0); + left: 0; + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.carousel-control:hover, +.carousel-control:focus { + outline: 0; + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); +} +.carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} diff --git a/web/vendor/ace/css/chosen-sprite.png b/web/vendor/ace/css/chosen-sprite.png new file mode 100755 index 0000000..c57da70 Binary files /dev/null and b/web/vendor/ace/css/chosen-sprite.png differ diff --git a/web/vendor/ace/css/chosen-sprite@2x.png b/web/vendor/ace/css/chosen-sprite@2x.png new file mode 100755 index 0000000..6b50545 Binary files /dev/null and b/web/vendor/ace/css/chosen-sprite@2x.png differ diff --git a/web/vendor/ace/css/chosen.css b/web/vendor/ace/css/chosen.css new file mode 100755 index 0000000..463f8f1 --- /dev/null +++ b/web/vendor/ace/css/chosen.css @@ -0,0 +1,437 @@ +/*! +Chosen, a Select Box Enhancer for jQuery and Prototype +by Patrick Filler for Harvest, http://getharvest.com + +Version 1.2.0 +Full source at https://github.com/harvesthq/chosen +Copyright (c) 2011-2014 Harvest http://getharvest.com + +MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +This file is generated by `grunt build`, do not edit it by hand. +*/ + +/* @group Base */ +.chosen-container { + position: relative; + display: inline-block; + vertical-align: middle; + font-size: 13px; + zoom: 1; + *display: inline; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.chosen-container * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.chosen-container .chosen-drop { + position: absolute; + top: 100%; + left: -9999px; + z-index: 1010; + width: 100%; + border: 1px solid #aaa; + border-top: 0; + background: #fff; + box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15); +} +.chosen-container.chosen-with-drop .chosen-drop { + left: 0; +} +.chosen-container a { + cursor: pointer; +} + +/* @end */ +/* @group Single Chosen */ +.chosen-container-single .chosen-single { + position: relative; + display: block; + overflow: hidden; + padding: 0 0 0 8px; + height: 25px; + border: 1px solid #aaa; + border-radius: 5px; + background-color: #fff; + background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4)); + background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background-clip: padding-box; + box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1); + color: #444; + text-decoration: none; + white-space: nowrap; + line-height: 24px; +} +.chosen-container-single .chosen-default { + color: #999; +} +.chosen-container-single .chosen-single span { + display: block; + overflow: hidden; + margin-right: 26px; + text-overflow: ellipsis; + white-space: nowrap; +} +.chosen-container-single .chosen-single-with-deselect span { + margin-right: 38px; +} +.chosen-container-single .chosen-single abbr { + position: absolute; + top: 6px; + right: 26px; + display: block; + width: 12px; + height: 12px; + background: url('chosen-sprite.png') -42px 1px no-repeat; + font-size: 1px; +} +.chosen-container-single .chosen-single abbr:hover { + background-position: -42px -10px; +} +.chosen-container-single.chosen-disabled .chosen-single abbr:hover { + background-position: -42px -10px; +} +.chosen-container-single .chosen-single div { + position: absolute; + top: 0; + right: 0; + display: block; + width: 18px; + height: 100%; +} +.chosen-container-single .chosen-single div b { + display: block; + width: 100%; + height: 100%; + background: url('chosen-sprite.png') no-repeat 0px 2px; +} +.chosen-container-single .chosen-search { + position: relative; + z-index: 1010; + margin: 0; + padding: 3px 4px; + white-space: nowrap; +} +.chosen-container-single .chosen-search input[type="text"] { + margin: 1px 0; + padding: 4px 20px 4px 5px; + width: 100%; + height: auto; + outline: 0; + border: 1px solid #aaa; + background: white url('chosen-sprite.png') no-repeat 100% -20px; + background: url('chosen-sprite.png') no-repeat 100% -20px; + font-size: 1em; + font-family: sans-serif; + line-height: normal; + border-radius: 0; +} +.chosen-container-single .chosen-drop { + margin-top: -1px; + border-radius: 0 0 4px 4px; + background-clip: padding-box; +} +.chosen-container-single.chosen-container-single-nosearch .chosen-search { + position: absolute; + left: -9999px; +} + +/* @end */ +/* @group Results */ +.chosen-container .chosen-results { + color: #444; + position: relative; + overflow-x: hidden; + overflow-y: auto; + margin: 0 4px 4px 0; + padding: 0 0 0 4px; + max-height: 240px; + -webkit-overflow-scrolling: touch; +} +.chosen-container .chosen-results li { + display: none; + margin: 0; + padding: 5px 6px; + list-style: none; + line-height: 15px; + word-wrap: break-word; + -webkit-touch-callout: none; +} +.chosen-container .chosen-results li.active-result { + display: list-item; + cursor: pointer; +} +.chosen-container .chosen-results li.disabled-result { + display: list-item; + color: #ccc; + cursor: default; +} +.chosen-container .chosen-results li.highlighted { + background-color: #3875d7; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc)); + background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%); + background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%); + background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%); + background-image: linear-gradient(#3875d7 20%, #2a62bc 90%); + color: #fff; +} +.chosen-container .chosen-results li.no-results { + color: #777; + display: list-item; + background: #f4f4f4; +} +.chosen-container .chosen-results li.group-result { + display: list-item; + font-weight: bold; + cursor: default; +} +.chosen-container .chosen-results li.group-option { + padding-left: 15px; +} +.chosen-container .chosen-results li em { + font-style: normal; + text-decoration: underline; +} + +/* @end */ +/* @group Multi Chosen */ +.chosen-container-multi .chosen-choices { + position: relative; + overflow: hidden; + margin: 0; + padding: 0 5px; + width: 100%; + height: auto !important; + height: 1%; + border: 1px solid #aaa; + background-color: #fff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); + background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%); + background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%); + background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%); + background-image: linear-gradient(#eeeeee 1%, #ffffff 15%); + cursor: text; +} +.chosen-container-multi .chosen-choices li { + float: left; + list-style: none; +} +.chosen-container-multi .chosen-choices li.search-field { + margin: 0; + padding: 0; + white-space: nowrap; +} +.chosen-container-multi .chosen-choices li.search-field input[type="text"] { + margin: 1px 0; + padding: 0; + height: 25px; + outline: 0; + border: 0 !important; + background: transparent !important; + box-shadow: none; + color: #999; + font-size: 100%; + font-family: sans-serif; + line-height: normal; + border-radius: 0; +} +.chosen-container-multi .chosen-choices li.search-choice { + position: relative; + margin: 3px 5px 3px 0; + padding: 3px 20px 3px 5px; + border: 1px solid #aaa; + max-width: 100%; + border-radius: 3px; + background-color: #eeeeee; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); + background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-size: 100% 19px; + background-repeat: repeat-x; + background-clip: padding-box; + box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05); + color: #333; + line-height: 13px; + cursor: default; +} +.chosen-container-multi .chosen-choices li.search-choice span { + word-wrap: break-word; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + position: absolute; + top: 4px; + right: 3px; + display: block; + width: 12px; + height: 12px; + background: url('chosen-sprite.png') -42px 1px no-repeat; + font-size: 1px; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { + background-position: -42px -10px; +} +.chosen-container-multi .chosen-choices li.search-choice-disabled { + padding-right: 5px; + border: 1px solid #ccc; + background-color: #e4e4e4; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); + background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + color: #666; +} +.chosen-container-multi .chosen-choices li.search-choice-focus { + background: #d4d4d4; +} +.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close { + background-position: -42px -10px; +} +.chosen-container-multi .chosen-results { + margin: 0; + padding: 0; +} +.chosen-container-multi .chosen-drop .result-selected { + display: list-item; + color: #ccc; + cursor: default; +} + +/* @end */ +/* @group Active */ +.chosen-container-active .chosen-single { + border: 1px solid #5897fb; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); +} +.chosen-container-active.chosen-with-drop .chosen-single { + border: 1px solid #aaa; + -moz-border-radius-bottomright: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + border-bottom-left-radius: 0; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff)); + background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%); + background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%); + background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%); + background-image: linear-gradient(#eeeeee 20%, #ffffff 80%); + box-shadow: 0 1px 0 #fff inset; +} +.chosen-container-active.chosen-with-drop .chosen-single div { + border-left: none; + background: transparent; +} +.chosen-container-active.chosen-with-drop .chosen-single div b { + background-position: -18px 2px; +} +.chosen-container-active .chosen-choices { + border: 1px solid #5897fb; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); +} +.chosen-container-active .chosen-choices li.search-field input[type="text"] { + color: #222 !important; +} + +/* @end */ +/* @group Disabled Support */ +.chosen-disabled { + opacity: 0.5 !important; + cursor: default; +} +.chosen-disabled .chosen-single { + cursor: default; +} +.chosen-disabled .chosen-choices .search-choice .search-choice-close { + cursor: default; +} + +/* @end */ +/* @group Right to Left */ +.chosen-rtl { + text-align: right; +} +.chosen-rtl .chosen-single { + overflow: visible; + padding: 0 8px 0 0; +} +.chosen-rtl .chosen-single span { + margin-right: 0; + margin-left: 26px; + direction: rtl; +} +.chosen-rtl .chosen-single-with-deselect span { + margin-left: 38px; +} +.chosen-rtl .chosen-single div { + right: auto; + left: 3px; +} +.chosen-rtl .chosen-single abbr { + right: auto; + left: 26px; +} +.chosen-rtl .chosen-choices li { + float: right; +} +.chosen-rtl .chosen-choices li.search-field input[type="text"] { + direction: rtl; +} +.chosen-rtl .chosen-choices li.search-choice { + margin: 3px 5px 3px 0; + padding: 3px 5px 3px 19px; +} +.chosen-rtl .chosen-choices li.search-choice .search-choice-close { + right: auto; + left: 4px; +} +.chosen-rtl.chosen-container-single-nosearch .chosen-search, +.chosen-rtl .chosen-drop { + left: 9999px; +} +.chosen-rtl.chosen-container-single .chosen-results { + margin: 0 0 4px 4px; + padding: 0 4px 0 0; +} +.chosen-rtl .chosen-results li.group-option { + padding-right: 15px; + padding-left: 0; +} +.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div { + border-right: none; +} +.chosen-rtl .chosen-search input[type="text"] { + padding: 4px 5px 4px 20px; + background: white url('chosen-sprite.png') no-repeat -30px -20px; + background: url('chosen-sprite.png') no-repeat -30px -20px; + direction: rtl; +} +.chosen-rtl.chosen-container-single .chosen-single div b { + background-position: 6px 2px; +} +.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b { + background-position: -12px 2px; +} + +/* @end */ +/* @group Retina compatibility */ +@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) { + .chosen-rtl .chosen-search input[type="text"], + .chosen-container-single .chosen-single abbr, + .chosen-container-single .chosen-single div b, + .chosen-container-single .chosen-search input[type="text"], + .chosen-container-multi .chosen-choices .search-choice .search-choice-close, + .chosen-container .chosen-results-scroll-down span, + .chosen-container .chosen-results-scroll-up span { + background-image: url('chosen-sprite@2x.png') !important; + background-size: 52px 37px !important; + background-repeat: no-repeat !important; + } +} +/* @end */ diff --git a/web/vendor/ace/css/colorbox.css b/web/vendor/ace/css/colorbox.css new file mode 100755 index 0000000..8a4ff99 --- /dev/null +++ b/web/vendor/ace/css/colorbox.css @@ -0,0 +1,70 @@ +/* + Colorbox Core Style: + The following CSS is consistent between example themes and should not be altered. +*/ +#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} +#cboxWrapper {max-width:none;} +#cboxOverlay{position:fixed; width:100%; height:100%;} +#cboxMiddleLeft, #cboxBottomLeft{clear:left;} +#cboxContent{position:relative;} +#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;} +#cboxTitle{margin:0;} +#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;} +#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} +.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;} +.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;} +#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;} + +/* + User Style: + Change the following styles to modify the appearance of Colorbox. They are + ordered & tabbed in a way that represents the nesting of the generated HTML. +*/ +#cboxOverlay{background:url(images/overlay.png) repeat 0 0; opacity: 0.9; filter: alpha(opacity = 90);} +#colorbox{outline:0;} + #cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px 0;} + #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px 0;} + #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px -29px;} + #cboxBottomRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px -29px;} + #cboxMiddleLeft{width:21px; background:url(images/controls.png) left top repeat-y;} + #cboxMiddleRight{width:21px; background:url(images/controls.png) right top repeat-y;} + #cboxTopCenter{height:21px; background:url(images/border.png) 0 0 repeat-x;} + #cboxBottomCenter{height:21px; background:url(images/border.png) 0 -29px repeat-x;} + #cboxContent{background:#fff; overflow:hidden;} + .cboxIframe{background:#fff;} + #cboxError{padding:50px; border:1px solid #ccc;} + #cboxLoadedContent{margin-bottom:28px;} + #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;} + #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} + #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;} + #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;} + + /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */ + #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; } + + /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */ + #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;} + + #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} + #cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxPrevious:hover{background-position:-75px -25px;} + #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxNext:hover{background-position:-50px -25px;} + #cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxClose:hover{background-position:-25px -25px;} + +/* + The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill + when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9. + See: http://jacklmoore.com/notes/ie-transparency-problems/ +*/ +.cboxIE #cboxTopLeft, +.cboxIE #cboxTopCenter, +.cboxIE #cboxTopRight, +.cboxIE #cboxBottomLeft, +.cboxIE #cboxBottomCenter, +.cboxIE #cboxBottomRight, +.cboxIE #cboxMiddleLeft, +.cboxIE #cboxMiddleRight { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); +} \ No newline at end of file diff --git a/web/vendor/ace/css/colorpicker.css b/web/vendor/ace/css/colorpicker.css new file mode 100755 index 0000000..df6e6c5 --- /dev/null +++ b/web/vendor/ace/css/colorpicker.css @@ -0,0 +1,127 @@ +/*! +* Colorpicker for Bootstrap +* +* Copyright 2012 Stefan Petre +* Licensed under the Apache License v2.0 +* http://www.apache.org/licenses/LICENSE-2.0 +* +*/ +.colorpicker-saturation { + width: 100px; + height: 100px; + background-image: url(img/saturation.png); + cursor: crosshair; + float: left; +} +.colorpicker-saturation i { + display: block; + height: 5px; + width: 5px; + border: 1px solid #000; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + position: absolute; + top: 0; + left: 0; + margin: -4px 0 0 -4px; +} +.colorpicker-saturation i b { + display: block; + height: 5px; + width: 5px; + border: 1px solid #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.colorpicker-hue, .colorpicker-alpha { + width: 15px; + height: 100px; + float: left; + cursor: row-resize; + margin-left: 4px; + margin-bottom: 4px; +} +.colorpicker-hue i, .colorpicker-alpha i { + display: block; + height: 1px; + background: #000; + border-top: 1px solid #fff; + position: absolute; + top: 0; + left: 0; + width: 100%; + margin-top: -1px; +} +.colorpicker-hue { + background-image: url(img/hue.png); +} +.colorpicker-alpha { + background-image: url(img/alpha.png); + display: none; +} +.colorpicker { + *zoom: 1; + top: 0; + left: 0; + padding: 4px; + min-width: 120px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.colorpicker:before, .colorpicker:after { + display: table; + content: ""; +} +.colorpicker:after { + clear: both; +} +.colorpicker:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 6px; +} +.colorpicker:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 7px; +} +.colorpicker div { + position: relative; +} +.colorpicker.alpha { + min-width: 140px; +} +.colorpicker.alpha .colorpicker-alpha { + display: block; +} +.colorpicker-color { + height: 10px; + margin-top: 5px; + clear: both; + background-image: url(img/alpha.png); + background-position: 0 100%; +} +.colorpicker-color div { + height: 10px; +} +.input-append.color .add-on i, .input-prepend.color .add-on i { + display: block; + cursor: pointer; + width: 16px; + height: 16px; +} \ No newline at end of file diff --git a/web/vendor/ace/css/datepicker.css b/web/vendor/ace/css/datepicker.css new file mode 100755 index 0000000..aa78b1d --- /dev/null +++ b/web/vendor/ace/css/datepicker.css @@ -0,0 +1,790 @@ +/*! + * Datepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.datepicker { + padding: 4px; + border-radius: 4px; + direction: ltr; + /*.dow { + border-top: 1px solid #ddd !important; + }*/ +} +.datepicker-inline { + width: 220px; +} +.datepicker.datepicker-rtl { + direction: rtl; +} +.datepicker.datepicker-rtl table tr td span { + float: right; +} +.datepicker-dropdown { + top: 0; + left: 0; +} +.datepicker-dropdown:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-top: 0; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; +} +.datepicker-dropdown:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-top: 0; + position: absolute; +} +.datepicker-dropdown.datepicker-orient-left:before { + left: 6px; +} +.datepicker-dropdown.datepicker-orient-left:after { + left: 7px; +} +.datepicker-dropdown.datepicker-orient-right:before { + right: 6px; +} +.datepicker-dropdown.datepicker-orient-right:after { + right: 7px; +} +.datepicker-dropdown.datepicker-orient-top:before { + top: -7px; +} +.datepicker-dropdown.datepicker-orient-top:after { + top: -6px; +} +.datepicker-dropdown.datepicker-orient-bottom:before { + bottom: -7px; + border-bottom: 0; + border-top: 7px solid #999; +} +.datepicker-dropdown.datepicker-orient-bottom:after { + bottom: -6px; + border-bottom: 0; + border-top: 6px solid #fff; +} +.datepicker > div { + display: none; +} +.datepicker.days div.datepicker-days { + display: block; +} +.datepicker.months div.datepicker-months { + display: block; +} +.datepicker.years div.datepicker-years { + display: block; +} +.datepicker table { + margin: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.datepicker table tr td, +.datepicker table tr th { + text-align: center; + width: 30px; + height: 30px; + border-radius: 4px; + border: none; +} +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} +.datepicker table tr td.day:hover, +.datepicker table tr td.day.focused { + background: #eeeeee; + cursor: pointer; +} +.datepicker table tr td.old, +.datepicker table tr td.new { + color: #999999; +} +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + color: #000000; + background-color: #ffdb99; + border-color: #ffb733; +} +.datepicker table tr td.today:hover, +.datepicker table tr td.today:hover:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today:focus, +.datepicker table tr td.today:hover:focus, +.datepicker table tr td.today.disabled:focus, +.datepicker table tr td.today.disabled:hover:focus, +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.today, +.open .dropdown-toggle.datepicker table tr td.today:hover, +.open .dropdown-toggle.datepicker table tr td.today.disabled, +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { + color: #000000; + background-color: #ffcd70; + border-color: #f59e00; +} +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.today, +.open .dropdown-toggle.datepicker table tr td.today:hover, +.open .dropdown-toggle.datepicker table tr td.today.disabled, +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { + background-image: none; +} +.datepicker table tr td.today.disabled, +.datepicker table tr td.today:hover.disabled, +.datepicker table tr td.today.disabled.disabled, +.datepicker table tr td.today.disabled:hover.disabled, +.datepicker table tr td.today[disabled], +.datepicker table tr td.today:hover[disabled], +.datepicker table tr td.today.disabled[disabled], +.datepicker table tr td.today.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.today, +fieldset[disabled] .datepicker table tr td.today:hover, +fieldset[disabled] .datepicker table tr td.today.disabled, +fieldset[disabled] .datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today:hover.disabled:hover, +.datepicker table tr td.today.disabled.disabled:hover, +.datepicker table tr td.today.disabled:hover.disabled:hover, +.datepicker table tr td.today[disabled]:hover, +.datepicker table tr td.today:hover[disabled]:hover, +.datepicker table tr td.today.disabled[disabled]:hover, +.datepicker table tr td.today.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.today:hover, +fieldset[disabled] .datepicker table tr td.today:hover:hover, +fieldset[disabled] .datepicker table tr td.today.disabled:hover, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today.disabled:focus, +.datepicker table tr td.today:hover.disabled:focus, +.datepicker table tr td.today.disabled.disabled:focus, +.datepicker table tr td.today.disabled:hover.disabled:focus, +.datepicker table tr td.today[disabled]:focus, +.datepicker table tr td.today:hover[disabled]:focus, +.datepicker table tr td.today.disabled[disabled]:focus, +.datepicker table tr td.today.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.today:focus, +fieldset[disabled] .datepicker table tr td.today:hover:focus, +fieldset[disabled] .datepicker table tr td.today.disabled:focus, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today:hover.disabled:active, +.datepicker table tr td.today.disabled.disabled:active, +.datepicker table tr td.today.disabled:hover.disabled:active, +.datepicker table tr td.today[disabled]:active, +.datepicker table tr td.today:hover[disabled]:active, +.datepicker table tr td.today.disabled[disabled]:active, +.datepicker table tr td.today.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.today:active, +fieldset[disabled] .datepicker table tr td.today:hover:active, +fieldset[disabled] .datepicker table tr td.today.disabled:active, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today:hover.disabled.active, +.datepicker table tr td.today.disabled.disabled.active, +.datepicker table tr td.today.disabled:hover.disabled.active, +.datepicker table tr td.today[disabled].active, +.datepicker table tr td.today:hover[disabled].active, +.datepicker table tr td.today.disabled[disabled].active, +.datepicker table tr td.today.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.today.active, +fieldset[disabled] .datepicker table tr td.today:hover.active, +fieldset[disabled] .datepicker table tr td.today.disabled.active, +fieldset[disabled] .datepicker table tr td.today.disabled:hover.active { + background-color: #ffdb99; + border-color: #ffb733; +} +.datepicker table tr td.today:hover:hover { + color: #000; +} +.datepicker table tr td.today.active:hover { + color: #fff; +} +.datepicker table tr td.range, +.datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:hover { + background: #eeeeee; + border-radius: 0; +} +.datepicker table tr td.range.today, +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:hover { + color: #000000; + background-color: #f7ca77; + border-color: #f1a417; + border-radius: 0; +} +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:hover:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today:focus, +.datepicker table tr td.range.today:hover:focus, +.datepicker table tr td.range.today.disabled:focus, +.datepicker table tr td.range.today.disabled:hover:focus, +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.range.today, +.open .dropdown-toggle.datepicker table tr td.range.today:hover, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { + color: #000000; + background-color: #f4bb51; + border-color: #bf800c; +} +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.range.today, +.open .dropdown-toggle.datepicker table tr td.range.today:hover, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { + background-image: none; +} +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today:hover.disabled, +.datepicker table tr td.range.today.disabled.disabled, +.datepicker table tr td.range.today.disabled:hover.disabled, +.datepicker table tr td.range.today[disabled], +.datepicker table tr td.range.today:hover[disabled], +.datepicker table tr td.range.today.disabled[disabled], +.datepicker table tr td.range.today.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.range.today, +fieldset[disabled] .datepicker table tr td.range.today:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today:hover.disabled:hover, +.datepicker table tr td.range.today.disabled.disabled:hover, +.datepicker table tr td.range.today.disabled:hover.disabled:hover, +.datepicker table tr td.range.today[disabled]:hover, +.datepicker table tr td.range.today:hover[disabled]:hover, +.datepicker table tr td.range.today.disabled[disabled]:hover, +.datepicker table tr td.range.today.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.range.today:hover, +fieldset[disabled] .datepicker table tr td.range.today:hover:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today.disabled:focus, +.datepicker table tr td.range.today:hover.disabled:focus, +.datepicker table tr td.range.today.disabled.disabled:focus, +.datepicker table tr td.range.today.disabled:hover.disabled:focus, +.datepicker table tr td.range.today[disabled]:focus, +.datepicker table tr td.range.today:hover[disabled]:focus, +.datepicker table tr td.range.today.disabled[disabled]:focus, +.datepicker table tr td.range.today.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.range.today:focus, +fieldset[disabled] .datepicker table tr td.range.today:hover:focus, +fieldset[disabled] .datepicker table tr td.range.today.disabled:focus, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today:hover.disabled:active, +.datepicker table tr td.range.today.disabled.disabled:active, +.datepicker table tr td.range.today.disabled:hover.disabled:active, +.datepicker table tr td.range.today[disabled]:active, +.datepicker table tr td.range.today:hover[disabled]:active, +.datepicker table tr td.range.today.disabled[disabled]:active, +.datepicker table tr td.range.today.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.range.today:active, +fieldset[disabled] .datepicker table tr td.range.today:hover:active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today:hover.disabled.active, +.datepicker table tr td.range.today.disabled.disabled.active, +.datepicker table tr td.range.today.disabled:hover.disabled.active, +.datepicker table tr td.range.today[disabled].active, +.datepicker table tr td.range.today:hover[disabled].active, +.datepicker table tr td.range.today.disabled[disabled].active, +.datepicker table tr td.range.today.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.range.today.active, +fieldset[disabled] .datepicker table tr td.range.today:hover.active, +fieldset[disabled] .datepicker table tr td.range.today.disabled.active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active { + background-color: #f7ca77; + border-color: #f1a417; +} +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + color: #ffffff; + background-color: #999999; + border-color: #555555; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected:hover:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected:focus, +.datepicker table tr td.selected:hover:focus, +.datepicker table tr td.selected.disabled:focus, +.datepicker table tr td.selected.disabled:hover:focus, +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.selected, +.open .dropdown-toggle.datepicker table tr td.selected:hover, +.open .dropdown-toggle.datepicker table tr td.selected.disabled, +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { + color: #ffffff; + background-color: #858585; + border-color: #373737; +} +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.selected, +.open .dropdown-toggle.datepicker table tr td.selected:hover, +.open .dropdown-toggle.datepicker table tr td.selected.disabled, +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { + background-image: none; +} +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected:hover.disabled, +.datepicker table tr td.selected.disabled.disabled, +.datepicker table tr td.selected.disabled:hover.disabled, +.datepicker table tr td.selected[disabled], +.datepicker table tr td.selected:hover[disabled], +.datepicker table tr td.selected.disabled[disabled], +.datepicker table tr td.selected.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.selected, +fieldset[disabled] .datepicker table tr td.selected:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected:hover.disabled:hover, +.datepicker table tr td.selected.disabled.disabled:hover, +.datepicker table tr td.selected.disabled:hover.disabled:hover, +.datepicker table tr td.selected[disabled]:hover, +.datepicker table tr td.selected:hover[disabled]:hover, +.datepicker table tr td.selected.disabled[disabled]:hover, +.datepicker table tr td.selected.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.selected:hover, +fieldset[disabled] .datepicker table tr td.selected:hover:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected.disabled:focus, +.datepicker table tr td.selected:hover.disabled:focus, +.datepicker table tr td.selected.disabled.disabled:focus, +.datepicker table tr td.selected.disabled:hover.disabled:focus, +.datepicker table tr td.selected[disabled]:focus, +.datepicker table tr td.selected:hover[disabled]:focus, +.datepicker table tr td.selected.disabled[disabled]:focus, +.datepicker table tr td.selected.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.selected:focus, +fieldset[disabled] .datepicker table tr td.selected:hover:focus, +fieldset[disabled] .datepicker table tr td.selected.disabled:focus, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected:hover.disabled:active, +.datepicker table tr td.selected.disabled.disabled:active, +.datepicker table tr td.selected.disabled:hover.disabled:active, +.datepicker table tr td.selected[disabled]:active, +.datepicker table tr td.selected:hover[disabled]:active, +.datepicker table tr td.selected.disabled[disabled]:active, +.datepicker table tr td.selected.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.selected:active, +fieldset[disabled] .datepicker table tr td.selected:hover:active, +fieldset[disabled] .datepicker table tr td.selected.disabled:active, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected:hover.disabled.active, +.datepicker table tr td.selected.disabled.disabled.active, +.datepicker table tr td.selected.disabled:hover.disabled.active, +.datepicker table tr td.selected[disabled].active, +.datepicker table tr td.selected:hover[disabled].active, +.datepicker table tr td.selected.disabled[disabled].active, +.datepicker table tr td.selected.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.selected.active, +fieldset[disabled] .datepicker table tr td.selected:hover.active, +fieldset[disabled] .datepicker table tr td.selected.disabled.active, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active { + background-color: #999999; + border-color: #555555; +} +.datepicker table tr td.active, +.datepicker table tr td.active:hover, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active.disabled:hover { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.active:hover, +.datepicker table tr td.active:hover:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active:focus, +.datepicker table tr td.active:hover:focus, +.datepicker table tr td.active.disabled:focus, +.datepicker table tr td.active.disabled:hover:focus, +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.active, +.open .dropdown-toggle.datepicker table tr td.active:hover, +.open .dropdown-toggle.datepicker table tr td.active.disabled, +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.active, +.open .dropdown-toggle.datepicker table tr td.active:hover, +.open .dropdown-toggle.datepicker table tr td.active.disabled, +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { + background-image: none; +} +.datepicker table tr td.active.disabled, +.datepicker table tr td.active:hover.disabled, +.datepicker table tr td.active.disabled.disabled, +.datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active[disabled], +.datepicker table tr td.active:hover[disabled], +.datepicker table tr td.active.disabled[disabled], +.datepicker table tr td.active.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.active, +fieldset[disabled] .datepicker table tr td.active:hover, +fieldset[disabled] .datepicker table tr td.active.disabled, +fieldset[disabled] .datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active:hover.disabled:hover, +.datepicker table tr td.active.disabled.disabled:hover, +.datepicker table tr td.active.disabled:hover.disabled:hover, +.datepicker table tr td.active[disabled]:hover, +.datepicker table tr td.active:hover[disabled]:hover, +.datepicker table tr td.active.disabled[disabled]:hover, +.datepicker table tr td.active.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.active:hover, +fieldset[disabled] .datepicker table tr td.active:hover:hover, +fieldset[disabled] .datepicker table tr td.active.disabled:hover, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active.disabled:focus, +.datepicker table tr td.active:hover.disabled:focus, +.datepicker table tr td.active.disabled.disabled:focus, +.datepicker table tr td.active.disabled:hover.disabled:focus, +.datepicker table tr td.active[disabled]:focus, +.datepicker table tr td.active:hover[disabled]:focus, +.datepicker table tr td.active.disabled[disabled]:focus, +.datepicker table tr td.active.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.active:focus, +fieldset[disabled] .datepicker table tr td.active:hover:focus, +fieldset[disabled] .datepicker table tr td.active.disabled:focus, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active:hover.disabled:active, +.datepicker table tr td.active.disabled.disabled:active, +.datepicker table tr td.active.disabled:hover.disabled:active, +.datepicker table tr td.active[disabled]:active, +.datepicker table tr td.active:hover[disabled]:active, +.datepicker table tr td.active.disabled[disabled]:active, +.datepicker table tr td.active.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.active:active, +fieldset[disabled] .datepicker table tr td.active:hover:active, +fieldset[disabled] .datepicker table tr td.active.disabled:active, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active:hover.disabled.active, +.datepicker table tr td.active.disabled.disabled.active, +.datepicker table tr td.active.disabled:hover.disabled.active, +.datepicker table tr td.active[disabled].active, +.datepicker table tr td.active:hover[disabled].active, +.datepicker table tr td.active.disabled[disabled].active, +.datepicker table tr td.active.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.active.active, +fieldset[disabled] .datepicker table tr td.active:hover.active, +fieldset[disabled] .datepicker table tr td.active.disabled.active, +fieldset[disabled] .datepicker table tr td.active.disabled:hover.active { + background-color: #428bca; + border-color: #357ebd; +} +.datepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + border-radius: 4px; +} +.datepicker table tr td span:hover { + background: #eeeeee; +} +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:focus, +.datepicker table tr td span.active:hover:focus, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td span.active, +.open .dropdown-toggle.datepicker table tr td span.active:hover, +.open .dropdown-toggle.datepicker table tr td span.active.disabled, +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td span.active, +.open .dropdown-toggle.datepicker table tr td span.active:hover, +.open .dropdown-toggle.datepicker table tr td span.active.disabled, +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + background-image: none; +} +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active:hover.disabled, +.datepicker table tr td span.active.disabled.disabled, +.datepicker table tr td span.active.disabled:hover.disabled, +.datepicker table tr td span.active[disabled], +.datepicker table tr td span.active:hover[disabled], +.datepicker table tr td span.active.disabled[disabled], +.datepicker table tr td span.active.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td span.active, +fieldset[disabled] .datepicker table tr td span.active:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active:hover.disabled:hover, +.datepicker table tr td span.active.disabled.disabled:hover, +.datepicker table tr td span.active.disabled:hover.disabled:hover, +.datepicker table tr td span.active[disabled]:hover, +.datepicker table tr td span.active:hover[disabled]:hover, +.datepicker table tr td span.active.disabled[disabled]:hover, +.datepicker table tr td span.active.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td span.active:hover, +fieldset[disabled] .datepicker table tr td span.active:hover:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active:hover.disabled:focus, +.datepicker table tr td span.active.disabled.disabled:focus, +.datepicker table tr td span.active.disabled:hover.disabled:focus, +.datepicker table tr td span.active[disabled]:focus, +.datepicker table tr td span.active:hover[disabled]:focus, +.datepicker table tr td span.active.disabled[disabled]:focus, +.datepicker table tr td span.active.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td span.active:focus, +fieldset[disabled] .datepicker table tr td span.active:hover:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active:hover.disabled:active, +.datepicker table tr td span.active.disabled.disabled:active, +.datepicker table tr td span.active.disabled:hover.disabled:active, +.datepicker table tr td span.active[disabled]:active, +.datepicker table tr td span.active:hover[disabled]:active, +.datepicker table tr td span.active.disabled[disabled]:active, +.datepicker table tr td span.active.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td span.active:active, +fieldset[disabled] .datepicker table tr td span.active:hover:active, +fieldset[disabled] .datepicker table tr td span.active.disabled:active, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active:hover.disabled.active, +.datepicker table tr td span.active.disabled.disabled.active, +.datepicker table tr td span.active.disabled:hover.disabled.active, +.datepicker table tr td span.active[disabled].active, +.datepicker table tr td span.active:hover[disabled].active, +.datepicker table tr td span.active.disabled[disabled].active, +.datepicker table tr td span.active.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td span.active.active, +fieldset[disabled] .datepicker table tr td span.active:hover.active, +fieldset[disabled] .datepicker table tr td span.active.disabled.active, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active { + background-color: #428bca; + border-color: #357ebd; +} +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: #999999; +} +.datepicker th.datepicker-switch { + width: 145px; +} +.datepicker thead tr:first-child th, +.datepicker tfoot tr th { + cursor: pointer; +} +.datepicker thead tr:first-child th:hover, +.datepicker tfoot tr th:hover { + background: #eeeeee; +} +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} +.datepicker thead tr:first-child th.cw { + cursor: default; + background-color: transparent; +} +.input-group.date .input-group-addon i { + cursor: pointer; + width: 16px; + height: 16px; +} +.input-daterange input { + text-align: center; +} +.input-daterange input:first-child { + border-radius: 3px 0 0 3px; +} +.input-daterange input:last-child { + border-radius: 0 3px 3px 0; +} +.input-daterange .input-group-addon { + width: auto; + min-width: 16px; + padding: 4px 5px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + text-shadow: 0 1px 0 #fff; + vertical-align: middle; + background-color: #eeeeee; + border: solid #cccccc; + border-width: 1px 0; + margin-left: -5px; + margin-right: -5px; +} +.datepicker.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + float: left; + display: none; + min-width: 160px; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 5px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + *border-right-width: 2px; + *border-bottom-width: 2px; + color: #333333; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 1.428571429; +} +.datepicker.dropdown-menu th, +.datepicker.dropdown-menu td { + padding: 4px 5px; +} diff --git a/web/vendor/ace/css/daterangepicker.css b/web/vendor/ace/css/daterangepicker.css new file mode 100755 index 0000000..1ab86c3 --- /dev/null +++ b/web/vendor/ace/css/daterangepicker.css @@ -0,0 +1,320 @@ +/*! + * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x + * + * Copyright 2013 Dan Grossman ( http://www.dangrossman.info ) + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Built for http://www.improvely.com + */ + + .daterangepicker.dropdown-menu { + max-width: none; + z-index: 3000; +} + +.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { + float: left; + margin: 4px; +} + +.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar, +.daterangepicker.openscenter .ranges, .daterangepicker.openscenter .calendar { + float: right; + margin: 4px; +} + +.daterangepicker.single .ranges, .daterangepicker.single .calendar { + float: none; +} + +.daterangepicker .ranges { + width: 160px; + text-align: left; +} + +.daterangepicker .ranges .range_inputs>div { + float: left; +} + +.daterangepicker .ranges .range_inputs>div:nth-child(2) { + padding-left: 11px; +} + +.daterangepicker .calendar { + display: none; + max-width: 270px; +} + +.daterangepicker.show-calendar .calendar { + display: block; +} + +.daterangepicker .calendar.single .calendar-date { + border: none; +} + +.daterangepicker .calendar th, .daterangepicker .calendar td { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + white-space: nowrap; + text-align: center; + min-width: 32px; +} + +.daterangepicker .daterangepicker_start_input label, +.daterangepicker .daterangepicker_end_input label { + color: #333; + display: block; + font-size: 11px; + font-weight: normal; + height: 20px; + line-height: 20px; + margin-bottom: 2px; + text-shadow: #fff 1px 1px 0px; + text-transform: uppercase; + width: 74px; +} + +.daterangepicker .ranges input { + font-size: 11px; +} + +.daterangepicker .ranges .input-mini { + border: 1px solid #ccc; + border-radius: 4px; + color: #555; + display: block; + font-size: 11px; + height: 30px; + line-height: 30px; + vertical-align: middle; + margin: 0 0 10px 0; + padding: 0 6px; + width: 74px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0; + padding: 0; +} + +.daterangepicker .ranges li { + font-size: 13px; + background: #f5f5f5; + border: 1px solid #f5f5f5; + color: #08c; + padding: 3px 12px; + margin-bottom: 8px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + cursor: pointer; +} + +.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { + background: #08c; + border: 1px solid #08c; + color: #fff; +} + +.daterangepicker .calendar-date { + border: 1px solid #ddd; + padding: 4px; + border-radius: 4px; + background: #fff; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 8px auto 0 auto; + line-height: 30px; +} + +.daterangepicker { + position: absolute; + background: #fff; + top: 100px; + left: 20px; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.daterangepicker.opensleft:before { + position: absolute; + top: -7px; + right: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensleft:after { + position: absolute; + top: -6px; + right: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker.openscenter:before { + position: absolute; + top: -7px; + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.openscenter:after { + position: absolute; + top: -6px; + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker.opensright:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensright:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker table { + width: 100%; + margin: 0; +} + +.daterangepicker td, .daterangepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + cursor: pointer; + white-space: nowrap; +} + +.daterangepicker td.off { + color: #999; +} + +.daterangepicker td.disabled, .daterangepicker option.disabled { + color: #999; +} + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background: #eee; +} + +.daterangepicker td.in-range { + background: #ebf4f8; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.daterangepicker td.start-date { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.daterangepicker td.end-date { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.daterangepicker td.start-date.end-date { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: #3071a9; + color: #fff; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { + width: 50px; + margin-bottom: 0; +} + +.daterangepicker_start_input { + float: left; +} + +.daterangepicker_end_input { + float: left; + padding-left: 11px +} + +.daterangepicker th.month { + width: auto; +} diff --git a/web/vendor/ace/css/dropzone.css b/web/vendor/ace/css/dropzone.css new file mode 100755 index 0000000..cc20394 --- /dev/null +++ b/web/vendor/ace/css/dropzone.css @@ -0,0 +1,397 @@ +/* The MIT License */ +.dropzone, +.dropzone *, +.dropzone-previews, +.dropzone-previews * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.dropzone { + position: relative; + border: 1px solid rgba(0,0,0,0.08); + background: rgba(0,0,0,0.02); + padding: 1em; +} +.dropzone.dz-clickable { + cursor: pointer; +} +.dropzone.dz-clickable .dz-message, +.dropzone.dz-clickable .dz-message span { + cursor: pointer; +} +.dropzone.dz-clickable * { + cursor: default; +} +.dropzone .dz-message { + opacity: 1; + -ms-filter: none; + filter: none; +} +.dropzone.dz-drag-hover { + border-color: rgba(0,0,0,0.15); + background: rgba(0,0,0,0.04); +} +.dropzone.dz-started .dz-message { + display: none; +} +.dropzone .dz-preview, +.dropzone-previews .dz-preview { + background: rgba(255,255,255,0.8); + position: relative; + display: inline-block; + margin: 17px; + vertical-align: top; + border: 1px solid #acacac; + padding: 6px 6px 6px 6px; +} +.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail], +.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] { + display: none; +} +.dropzone .dz-preview .dz-details, +.dropzone-previews .dz-preview .dz-details { + width: 100px; + height: 100px; + position: relative; + background: #ebebeb; + padding: 5px; + margin-bottom: 22px; +} +.dropzone .dz-preview .dz-details .dz-filename, +.dropzone-previews .dz-preview .dz-details .dz-filename { + overflow: hidden; + height: 100%; +} +.dropzone .dz-preview .dz-details img, +.dropzone-previews .dz-preview .dz-details img { + position: absolute; + top: 0; + left: 0; + width: 100px; + height: 100px; +} +.dropzone .dz-preview .dz-details .dz-size, +.dropzone-previews .dz-preview .dz-details .dz-size { + position: absolute; + bottom: -28px; + left: 3px; + height: 28px; + line-height: 28px; +} +.dropzone .dz-preview.dz-error .dz-error-mark, +.dropzone-previews .dz-preview.dz-error .dz-error-mark { + display: block; +} +.dropzone .dz-preview.dz-success .dz-success-mark, +.dropzone-previews .dz-preview.dz-success .dz-success-mark { + display: block; +} +.dropzone .dz-preview:hover .dz-details img, +.dropzone-previews .dz-preview:hover .dz-details img { + display: none; +} +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark, +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark { + display: none; + position: absolute; + width: 40px; + height: 40px; + font-size: 30px; + text-align: center; + right: -10px; + top: -10px; +} +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark { + color: #8cc657; +} +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark { + color: #ee162d; +} +.dropzone .dz-preview .dz-progress, +.dropzone-previews .dz-preview .dz-progress { + position: absolute; + top: 100px; + left: 6px; + right: 6px; + height: 6px; + background: #d7d7d7; + display: none; +} +.dropzone .dz-preview .dz-progress .dz-upload, +.dropzone-previews .dz-preview .dz-progress .dz-upload { + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 0%; + background-color: #8cc657; +} +.dropzone .dz-preview.dz-processing .dz-progress, +.dropzone-previews .dz-preview.dz-processing .dz-progress { + display: block; +} +.dropzone .dz-preview .dz-error-message, +.dropzone-previews .dz-preview .dz-error-message { + display: none; + position: absolute; + top: -5px; + left: -20px; + background: rgba(245,245,245,0.8); + padding: 8px 10px; + color: #800; + min-width: 140px; + max-width: 500px; + z-index: 500; +} +.dropzone .dz-preview:hover.dz-error .dz-error-message, +.dropzone-previews .dz-preview:hover.dz-error .dz-error-message { + display: block; +} +.dropzone { + border: 1px solid rgba(0,0,0,0.03); + min-height: 360px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: rgba(0,0,0,0.03); + padding: 23px; +} +.dropzone .dz-default.dz-message { + opacity: 1; + -ms-filter: none; + filter: none; + -webkit-transition: opacity 0.3s ease-in-out; + -moz-transition: opacity 0.3s ease-in-out; + -o-transition: opacity 0.3s ease-in-out; + -ms-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; + background-image: url("../images/spritemap.png"); + background-repeat: no-repeat; + background-position: 0 0; + position: absolute; + width: 428px; + height: 123px; + margin-left: -214px; + margin-top: -61.5px; + top: 50%; + left: 50%; +} +@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) { + .dropzone .dz-default.dz-message { + background-image: url("../images/spritemap@2x.png"); + -webkit-background-size: 428px 406px; + -moz-background-size: 428px 406px; + background-size: 428px 406px; + } +} +.dropzone .dz-default.dz-message span { + display: none; +} +.dropzone.dz-square .dz-default.dz-message { + background-position: 0 -123px; + width: 268px; + margin-left: -134px; + height: 174px; + margin-top: -87px; +} +.dropzone.dz-drag-hover .dz-message { + opacity: 0.15; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)"; + filter: alpha(opacity=15); +} +.dropzone.dz-started .dz-message { + display: block; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); +} +.dropzone .dz-preview, +.dropzone-previews .dz-preview { + -webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16); + box-shadow: 1px 1px 4px rgba(0,0,0,0.16); + font-size: 14px; +} +.dropzone .dz-preview.dz-image-preview:hover .dz-details img, +.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img { + display: block; + opacity: 0.1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)"; + filter: alpha(opacity=10); +} +.dropzone .dz-preview.dz-success .dz-success-mark, +.dropzone-previews .dz-preview.dz-success .dz-success-mark { + opacity: 1; + -ms-filter: none; + filter: none; +} +.dropzone .dz-preview.dz-error .dz-error-mark, +.dropzone-previews .dz-preview.dz-error .dz-error-mark { + opacity: 1; + -ms-filter: none; + filter: none; +} +.dropzone .dz-preview.dz-error .dz-progress .dz-upload, +.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload { + background: #ee1e2d; +} +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark, +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark { + display: block; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: opacity 0.4s ease-in-out; + -moz-transition: opacity 0.4s ease-in-out; + -o-transition: opacity 0.4s ease-in-out; + -ms-transition: opacity 0.4s ease-in-out; + transition: opacity 0.4s ease-in-out; + background-image: url("../images/spritemap.png"); + background-repeat: no-repeat; +} +@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) { + .dropzone .dz-preview .dz-error-mark, + .dropzone-previews .dz-preview .dz-error-mark, + .dropzone .dz-preview .dz-success-mark, + .dropzone-previews .dz-preview .dz-success-mark { + background-image: url("../images/spritemap@2x.png"); + -webkit-background-size: 428px 406px; + -moz-background-size: 428px 406px; + background-size: 428px 406px; + } +} +.dropzone .dz-preview .dz-error-mark span, +.dropzone-previews .dz-preview .dz-error-mark span, +.dropzone .dz-preview .dz-success-mark span, +.dropzone-previews .dz-preview .dz-success-mark span { + display: none; +} +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark { + background-position: -268px -123px; +} +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark { + background-position: -268px -163px; +} +.dropzone .dz-preview .dz-progress .dz-upload, +.dropzone-previews .dz-preview .dz-progress .dz-upload { + -webkit-animation: loading 0.4s linear infinite; + -moz-animation: loading 0.4s linear infinite; + -o-animation: loading 0.4s linear infinite; + -ms-animation: loading 0.4s linear infinite; + animation: loading 0.4s linear infinite; + -webkit-transition: width 0.3s ease-in-out; + -moz-transition: width 0.3s ease-in-out; + -o-transition: width 0.3s ease-in-out; + -ms-transition: width 0.3s ease-in-out; + transition: width 0.3s ease-in-out; + -webkit-border-radius: 2px; + border-radius: 2px; + position: absolute; + top: 0; + left: 0; + width: 0%; + height: 100%; + background-image: url("../images/spritemap.png"); + background-repeat: repeat-x; + background-position: 0px -400px; +} +@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) { + .dropzone .dz-preview .dz-progress .dz-upload, + .dropzone-previews .dz-preview .dz-progress .dz-upload { + background-image: url("../images/spritemap@2x.png"); + -webkit-background-size: 428px 406px; + -moz-background-size: 428px 406px; + background-size: 428px 406px; + } +} +.dropzone .dz-preview.dz-success .dz-progress, +.dropzone-previews .dz-preview.dz-success .dz-progress { + display: block; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: opacity 0.4s ease-in-out; + -moz-transition: opacity 0.4s ease-in-out; + -o-transition: opacity 0.4s ease-in-out; + -ms-transition: opacity 0.4s ease-in-out; + transition: opacity 0.4s ease-in-out; +} +.dropzone .dz-preview .dz-error-message, +.dropzone-previews .dz-preview .dz-error-message { + display: block; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: opacity 0.3s ease-in-out; + -moz-transition: opacity 0.3s ease-in-out; + -o-transition: opacity 0.3s ease-in-out; + -ms-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; +} +.dropzone .dz-preview:hover.dz-error .dz-error-message, +.dropzone-previews .dz-preview:hover.dz-error .dz-error-message { + opacity: 1; + -ms-filter: none; + filter: none; +} +.dropzone a.dz-remove, +.dropzone-previews a.dz-remove { + background-image: -webkit-linear-gradient(top, #fafafa, #eee); + background-image: -moz-linear-gradient(top, #fafafa, #eee); + background-image: -o-linear-gradient(top, #fafafa, #eee); + background-image: -ms-linear-gradient(top, #fafafa, #eee); + background-image: linear-gradient(to bottom, #fafafa, #eee); + -webkit-border-radius: 2px; + border-radius: 2px; + border: 1px solid #eee; + text-decoration: none; + display: block; + padding: 4px 5px; + text-align: center; + color: #aaa; + margin-top: 26px; +} +.dropzone a.dz-remove:hover, +.dropzone-previews a.dz-remove:hover { + color: #666; +} +@-moz-keyframes loading { + from { + background-position: 0 -400px; + } + to { + background-position: -7px -400px; + } +} +@-webkit-keyframes loading { + from { + background-position: 0 -400px; + } + to { + background-position: -7px -400px; + } +} +@-o-keyframes loading { + from { + background-position: 0 -400px; + } + to { + background-position: -7px -400px; + } +} +@keyframes loading { + from { + background-position: 0 -400px; + } + to { + background-position: -7px -400px; + } +} diff --git a/web/vendor/ace/css/font-awesome.css b/web/vendor/ace/css/font-awesome.css new file mode 100755 index 0000000..4040b3c --- /dev/null +++ b/web/vendor/ace/css/font-awesome.css @@ -0,0 +1,1672 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.2.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} diff --git a/web/vendor/ace/css/fullcalendar.css b/web/vendor/ace/css/fullcalendar.css new file mode 100755 index 0000000..95896bc --- /dev/null +++ b/web/vendor/ace/css/fullcalendar.css @@ -0,0 +1,977 @@ +/*! + * FullCalendar v2.2.3 Stylesheet + * Docs & License: http://arshaw.com/fullcalendar/ + * (c) 2013 Adam Shaw + */ + + +.fc { + direction: ltr; + text-align: left; +} + +.fc-rtl { + text-align: right; +} + +body .fc { /* extra precedence to overcome jqui */ + font-size: 1em; +} + + +/* Colors +--------------------------------------------------------------------------------------------------*/ + +.fc-unthemed th, +.fc-unthemed td, +.fc-unthemed hr, +.fc-unthemed thead, +.fc-unthemed tbody, +.fc-unthemed .fc-row, +.fc-unthemed .fc-popover { + border-color: #ddd; +} + +.fc-unthemed .fc-popover { + background-color: #fff; +} + +.fc-unthemed hr, +.fc-unthemed .fc-popover .fc-header { + background: #eee; +} + +.fc-unthemed .fc-popover .fc-header .fc-close { + color: #666; +} + +.fc-unthemed .fc-today { + background: #fcf8e3; +} + +.fc-highlight { /* when user is selecting cells */ + background: #bce8f1; + opacity: .3; + filter: alpha(opacity=30); /* for IE */ +} + +.fc-bgevent { /* default look for background events */ + background: rgb(143, 223, 130); + opacity: .3; + filter: alpha(opacity=30); /* for IE */ +} + +.fc-nonbusiness { /* default look for non-business-hours areas */ + /* will inherit .fc-bgevent's styles */ + background: #ccc; +} + + +/* Icons (inline elements with styled text that mock arrow icons) +--------------------------------------------------------------------------------------------------*/ + +.fc-icon { + display: inline-block; + font-size: 2em; + line-height: .5em; + height: .5em; /* will make the total height 1em */ + font-family: "Courier New", Courier, monospace; +} + +.fc-icon-left-single-arrow:after { + content: "\02039"; + font-weight: bold; +} + +.fc-icon-right-single-arrow:after { + content: "\0203A"; + font-weight: bold; +} + +.fc-icon-left-double-arrow:after { + content: "\000AB"; +} + +.fc-icon-right-double-arrow:after { + content: "\000BB"; +} + +.fc-icon-x:after { + content: "\000D7"; +} + + +/* Buttons (styled \ + \ + \ + '; + break; + + case 'insertImage': + toolbar += '
      '; + toolbar += '
      '; + break; + + case 'foreColor': + case 'backColor': + toolbar += ' '; + toolbar += ' '; + break; + + case 'viewSource': + toolbar += ' '; + break; + default: + toolbar += ' '; + break; + } + } + toolbar += ' '; + //////////// + var speech_input; + if (options.speech_button && 'onwebkitspeechchange' in (speech_input = document.createElement('input'))) { + toolbar += ' '; + } + speech_input = null; + //////////// + toolbar += ' '; + + + //if we have a function to decide where to put the toolbar, then call that + if(options.toolbar_place) toolbar = options.toolbar_place.call(this, toolbar); + //otherwise put it just before our DIV + else toolbar = $(this).before(toolbar).prev(); + + toolbar.find('a[title]').tooltip({animation:false, container:'body'}); + toolbar.find('.dropdown-menu input[type=text]').on('click', function() {return false}) + .on('change', function() {$(this).closest('.dropdown-menu').siblings('.dropdown-toggle').dropdown('toggle')}) + .on('keydown', function (e) { + if(e.which == 27) { + this.value = ''; + $(this).change(); + } + else if(e.which == 13) { + e.preventDefault(); + e.stopPropagation(); + $(this).change(); + } + }); + + toolbar.find('input[type=file]').prev().on(ace.click_event, function (e) { + $(this).next().click(); + }); + toolbar.find('.wysiwyg_colorpicker').each(function() { + $(this).ace_colorpicker({pull_right:true}).change(function(){ + $(this).nextAll('input').eq(0).val(this.value).change(); + }).next().find('.btn-colorpicker').tooltip({title: this.title, animation:false, container:'body'}) + }); + + + var self = $(this); + //view source + var view_source = false; + toolbar.find('a[data-view=source]').on('click', function(e){ + e.preventDefault(); + + if(!view_source) { + $('", + email: + "", + select: + "", + checkbox: + "
      ", + date: + "", + time: + "", + number: + "", + password: + "" + } + }; + + var defaults = { + // default language + locale: "en", + // show backdrop or not + backdrop: true, + // animate the modal in/out + animate: true, + // additional class string applied to the top level dialog + className: null, + // whether or not to include a close button + closeButton: true, + // show the dialog immediately by default + show: true, + // dialog container + container: "body" + }; + + // our public object; augmented after our private API + var exports = {}; + + /** + * @private + */ + function _t(key) { + var locale = locales[defaults.locale]; + return locale ? locale[key] : locales.en[key]; + } + + function processCallback(e, dialog, callback) { + e.stopPropagation(); + e.preventDefault(); + + // by default we assume a callback will get rid of the dialog, + // although it is given the opportunity to override this + + // so, if the callback can be invoked and it *explicitly returns false* + // then we'll set a flag to keep the dialog active... + var preserveDialog = $.isFunction(callback) && callback(e) === false; + + // ... otherwise we'll bin it + if (!preserveDialog) { + dialog.modal("hide"); + } + } + + function getKeyLength(obj) { + // @TODO defer to Object.keys(x).length if available? + var k, t = 0; + for (k in obj) { + t ++; + } + return t; + } + + function each(collection, iterator) { + var index = 0; + $.each(collection, function(key, value) { + iterator(key, value, index++); + }); + } + + function sanitize(options) { + var buttons; + var total; + + if (typeof options !== "object") { + throw new Error("Please supply an object of options"); + } + + if (!options.message) { + throw new Error("Please specify a message"); + } + + // make sure any supplied options take precedence over defaults + options = $.extend({}, defaults, options); + + if (!options.buttons) { + options.buttons = {}; + } + + // we only support Bootstrap's "static" and false backdrop args + // supporting true would mean you could dismiss the dialog without + // explicitly interacting with it + options.backdrop = options.backdrop ? "static" : false; + + buttons = options.buttons; + + total = getKeyLength(buttons); + + each(buttons, function(key, button, index) { + + if ($.isFunction(button)) { + // short form, assume value is our callback. Since button + // isn't an object it isn't a reference either so re-assign it + button = buttons[key] = { + callback: button + }; + } + + // before any further checks make sure by now button is the correct type + if ($.type(button) !== "object") { + throw new Error("button with key " + key + " must be an object"); + } + + if (!button.label) { + // the lack of an explicit label means we'll assume the key is good enough + button.label = key; + } + + if (!button.className) { + if (total <= 2 && index === total-1) { + // always add a primary to the main option in a two-button dialog + button.className = "btn-primary"; + } else { + button.className = "btn-default"; + } + } + }); + + return options; + } + + /** + * map a flexible set of arguments into a single returned object + * if args.length is already one just return it, otherwise + * use the properties argument to map the unnamed args to + * object properties + * so in the latter case: + * mapArguments(["foo", $.noop], ["message", "callback"]) + * -> { message: "foo", callback: $.noop } + */ + function mapArguments(args, properties) { + var argn = args.length; + var options = {}; + + if (argn < 1 || argn > 2) { + throw new Error("Invalid argument length"); + } + + if (argn === 2 || typeof args[0] === "string") { + options[properties[0]] = args[0]; + options[properties[1]] = args[1]; + } else { + options = args[0]; + } + + return options; + } + + /** + * merge a set of default dialog options with user supplied arguments + */ + function mergeArguments(defaults, args, properties) { + return $.extend( + // deep merge + true, + // ensure the target is an empty, unreferenced object + {}, + // the base options object for this type of dialog (often just buttons) + defaults, + // args could be an object or array; if it's an array properties will + // map it to a proper options object + mapArguments( + args, + properties + ) + ); + } + + /** + * this entry-level method makes heavy use of composition to take a simple + * range of inputs and return valid options suitable for passing to bootbox.dialog + */ + function mergeDialogOptions(className, labels, properties, args) { + // build up a base set of dialog properties + var baseOptions = { + className: "bootbox-" + className, + buttons: createLabels.apply(null, labels) + }; + + // ensure the buttons properties generated, *after* merging + // with user args are still valid against the supplied labels + return validateButtons( + // merge the generated base properties with user supplied arguments + mergeArguments( + baseOptions, + args, + // if args.length > 1, properties specify how each arg maps to an object key + properties + ), + labels + ); + } + + /** + * from a given list of arguments return a suitable object of button labels + * all this does is normalise the given labels and translate them where possible + * e.g. "ok", "confirm" -> { ok: "OK, cancel: "Annuleren" } + */ + function createLabels() { + var buttons = {}; + + for (var i = 0, j = arguments.length; i < j; i++) { + var argument = arguments[i]; + var key = argument.toLowerCase(); + var value = argument.toUpperCase(); + + buttons[key] = { + label: _t(value) + }; + } + + return buttons; + } + + function validateButtons(options, buttons) { + var allowedButtons = {}; + each(buttons, function(key, value) { + allowedButtons[value] = true; + }); + + each(options.buttons, function(key) { + if (allowedButtons[key] === undefined) { + throw new Error("button key " + key + " is not allowed (options are " + buttons.join("\n") + ")"); + } + }); + + return options; + } + + exports.alert = function() { + var options; + + options = mergeDialogOptions("alert", ["ok"], ["message", "callback"], arguments); + + if (options.callback && !$.isFunction(options.callback)) { + throw new Error("alert requires callback property to be a function when provided"); + } + + /** + * overrides + */ + options.buttons.ok.callback = options.onEscape = function() { + if ($.isFunction(options.callback)) { + return options.callback(); + } + return true; + }; + + return exports.dialog(options); + }; + + exports.confirm = function() { + var options; + + options = mergeDialogOptions("confirm", ["cancel", "confirm"], ["message", "callback"], arguments); + + /** + * overrides; undo anything the user tried to set they shouldn't have + */ + options.buttons.cancel.callback = options.onEscape = function() { + return options.callback(false); + }; + + options.buttons.confirm.callback = function() { + return options.callback(true); + }; + + // confirm specific validation + if (!$.isFunction(options.callback)) { + throw new Error("confirm requires a callback"); + } + + return exports.dialog(options); + }; + + exports.prompt = function() { + var options; + var defaults; + var dialog; + var form; + var input; + var shouldShow; + var inputOptions; + + // we have to create our form first otherwise + // its value is undefined when gearing up our options + // @TODO this could be solved by allowing message to + // be a function instead... + form = $(templates.form); + + // prompt defaults are more complex than others in that + // users can override more defaults + // @TODO I don't like that prompt has to do a lot of heavy + // lifting which mergeDialogOptions can *almost* support already + // just because of 'value' and 'inputType' - can we refactor? + defaults = { + className: "bootbox-prompt", + buttons: createLabels("cancel", "confirm"), + value: "", + inputType: "text" + }; + + options = validateButtons( + mergeArguments(defaults, arguments, ["title", "callback"]), + ["cancel", "confirm"] + ); + + // capture the user's show value; we always set this to false before + // spawning the dialog to give us a chance to attach some handlers to + // it, but we need to make sure we respect a preference not to show it + shouldShow = (options.show === undefined) ? true : options.show; + + /** + * overrides; undo anything the user tried to set they shouldn't have + */ + options.message = form; + + options.buttons.cancel.callback = options.onEscape = function() { + return options.callback(null); + }; + + options.buttons.confirm.callback = function() { + var value; + + switch (options.inputType) { + case "text": + case "textarea": + case "email": + case "select": + case "date": + case "time": + case "number": + case "password": + value = input.val(); + break; + + case "checkbox": + var checkedItems = input.find("input:checked"); + + // we assume that checkboxes are always multiple, + // hence we default to an empty array + value = []; + + each(checkedItems, function(_, item) { + value.push($(item).val()); + }); + break; + } + + return options.callback(value); + }; + + options.show = false; + + // prompt specific validation + if (!options.title) { + throw new Error("prompt requires a title"); + } + + if (!$.isFunction(options.callback)) { + throw new Error("prompt requires a callback"); + } + + if (!templates.inputs[options.inputType]) { + throw new Error("invalid prompt type"); + } + + // create the input based on the supplied type + input = $(templates.inputs[options.inputType]); + + switch (options.inputType) { + case "text": + case "textarea": + case "email": + case "date": + case "time": + case "number": + case "password": + input.val(options.value); + break; + + case "select": + var groups = {}; + inputOptions = options.inputOptions || []; + + if (!inputOptions.length) { + throw new Error("prompt with select requires options"); + } + + each(inputOptions, function(_, option) { + + // assume the element to attach to is the input... + var elem = input; + + if (option.value === undefined || option.text === undefined) { + throw new Error("given options in wrong format"); + } + + + // ... but override that element if this option sits in a group + + if (option.group) { + // initialise group if necessary + if (!groups[option.group]) { + groups[option.group] = $("").attr("label", option.group); + } + + elem = groups[option.group]; + } + + elem.append(""); + }); + + each(groups, function(_, group) { + input.append(group); + }); + + // safe to set a select's value as per a normal input + input.val(options.value); + break; + + case "checkbox": + var values = $.isArray(options.value) ? options.value : [options.value]; + inputOptions = options.inputOptions || []; + + if (!inputOptions.length) { + throw new Error("prompt with checkbox requires options"); + } + + if (!inputOptions[0].value || !inputOptions[0].text) { + throw new Error("given options in wrong format"); + } + + // checkboxes have to nest within a containing element, so + // they break the rules a bit and we end up re-assigning + // our 'input' element to this container instead + input = $("
      "); + + each(inputOptions, function(_, option) { + var checkbox = $(templates.inputs[options.inputType]); + + checkbox.find("input").attr("value", option.value); + checkbox.find("label").append(option.text); + + // we've ensured values is an array so we can always iterate over it + each(values, function(_, value) { + if (value === option.value) { + checkbox.find("input").prop("checked", true); + } + }); + + input.append(checkbox); + }); + break; + } + + if (options.placeholder) { + input.attr("placeholder", options.placeholder); + } + + if(options.pattern){ + input.attr("pattern", options.pattern); + } + + // now place it in our form + form.append(input); + + form.on("submit", function(e) { + e.preventDefault(); + // Fix for SammyJS (or similar JS routing library) hijacking the form post. + e.stopPropagation(); + // @TODO can we actually click *the* button object instead? + // e.g. buttons.confirm.click() or similar + dialog.find(".btn-primary").click(); + }); + + dialog = exports.dialog(options); + + // clear the existing handler focusing the submit button... + dialog.off("shown.bs.modal"); + + // ...and replace it with one focusing our input, if possible + dialog.on("shown.bs.modal", function() { + input.focus(); + }); + + if (shouldShow === true) { + dialog.modal("show"); + } + + return dialog; + }; + + exports.dialog = function(options) { + options = sanitize(options); + + var dialog = $(templates.dialog); + var innerDialog = dialog.find(".modal-dialog"); + var body = dialog.find(".modal-body"); + var buttons = options.buttons; + var buttonStr = ""; + var callbacks = { + onEscape: options.onEscape + }; + + each(buttons, function(key, button) { + + // @TODO I don't like this string appending to itself; bit dirty. Needs reworking + // can we just build up button elements instead? slower but neater. Then button + // can just become a template too + buttonStr += ""; + callbacks[key] = button.callback; + }); + + body.find(".bootbox-body").html(options.message); + + if (options.animate === true) { + dialog.addClass("fade"); + } + + if (options.className) { + dialog.addClass(options.className); + } + + if (options.size === "large") { + innerDialog.addClass("modal-lg"); + } + + if (options.size === "small") { + innerDialog.addClass("modal-sm"); + } + + if (options.title) { + body.before(templates.header); + } + + if (options.closeButton) { + var closeButton = $(templates.closeButton); + + if (options.title) { + dialog.find(".modal-header").prepend(closeButton); + } else { + closeButton.css("margin-top", "-10px").prependTo(body); + } + } + + if (options.title) { + dialog.find(".modal-title").html(options.title); + } + + if (buttonStr.length) { + body.after(templates.footer); + dialog.find(".modal-footer").html(buttonStr); + } + + + /** + * Bootstrap event listeners; used handle extra + * setup & teardown required after the underlying + * modal has performed certain actions + */ + + dialog.on("hidden.bs.modal", function(e) { + // ensure we don't accidentally intercept hidden events triggered + // by children of the current dialog. We shouldn't anymore now BS + // namespaces its events; but still worth doing + if (e.target === this) { + dialog.remove(); + } + }); + + /* + dialog.on("show.bs.modal", function() { + // sadly this doesn't work; show is called *just* before + // the backdrop is added so we'd need a setTimeout hack or + // otherwise... leaving in as would be nice + if (options.backdrop) { + dialog.next(".modal-backdrop").addClass("bootbox-backdrop"); + } + }); + */ + + dialog.on("shown.bs.modal", function() { + dialog.find(".btn-primary:first").focus(); + }); + + /** + * Bootbox event listeners; experimental and may not last + * just an attempt to decouple some behaviours from their + * respective triggers + */ + + dialog.on("escape.close.bb", function(e) { + if (callbacks.onEscape) { + processCallback(e, dialog, callbacks.onEscape); + } + }); + + /** + * Standard jQuery event listeners; used to handle user + * interaction with our dialog + */ + + dialog.on("click", ".modal-footer button", function(e) { + var callbackKey = $(this).data("bb-handler"); + + processCallback(e, dialog, callbacks[callbackKey]); + + }); + + dialog.on("click", ".bootbox-close-button", function(e) { + // onEscape might be falsy but that's fine; the fact is + // if the user has managed to click the close button we + // have to close the dialog, callback or not + processCallback(e, dialog, callbacks.onEscape); + }); + + dialog.on("keyup", function(e) { + if (e.which === 27) { + dialog.trigger("escape.close.bb"); + } + }); + + // the remainder of this method simply deals with adding our + // dialogent to the DOM, augmenting it with Bootstrap's modal + // functionality and then giving the resulting object back + // to our caller + + $(options.container).append(dialog); + + dialog.modal({ + backdrop: options.backdrop, + keyboard: false, + show: false + }); + + if (options.show) { + dialog.modal("show"); + } + + // @TODO should we return the raw element here or should + // we wrap it in an object on which we can expose some neater + // methods, e.g. var d = bootbox.alert(); d.hide(); instead + // of d.modal("hide"); + + /* + function BBDialog(elem) { + this.elem = elem; + } + + BBDialog.prototype = { + hide: function() { + return this.elem.modal("hide"); + }, + show: function() { + return this.elem.modal("show"); + } + }; + */ + + return dialog; + + }; + + exports.setDefaults = function() { + var values = {}; + + if (arguments.length === 2) { + // allow passing of single key/value... + values[arguments[0]] = arguments[1]; + } else { + // ... and as an object too + values = arguments[0]; + } + + $.extend(defaults, values); + }; + + exports.hideAll = function() { + $(".bootbox").modal("hide"); + + return exports; + }; + + + /** + * standard locales. Please add more according to ISO 639-1 standard. Multiple language variants are + * unlikely to be required. If this gets too large it can be split out into separate JS files. + */ + var locales = { + br : { + OK : "OK", + CANCEL : "Cancelar", + CONFIRM : "Sim" + }, + cs : { + OK : "OK", + CANCEL : "Zrušit", + CONFIRM : "Potvrdit" + }, + da : { + OK : "OK", + CANCEL : "Annuller", + CONFIRM : "Accepter" + }, + de : { + OK : "OK", + CANCEL : "Abbrechen", + CONFIRM : "Akzeptieren" + }, + el : { + OK : "Εντάξει", + CANCEL : "Ακύρωση", + CONFIRM : "Επιβεβαίωση" + }, + en : { + OK : "OK", + CANCEL : "Cancel", + CONFIRM : "OK" + }, + es : { + OK : "OK", + CANCEL : "Cancelar", + CONFIRM : "Aceptar" + }, + et : { + OK : "OK", + CANCEL : "Katkesta", + CONFIRM : "OK" + }, + fi : { + OK : "OK", + CANCEL : "Peruuta", + CONFIRM : "OK" + }, + fr : { + OK : "OK", + CANCEL : "Annuler", + CONFIRM : "D'accord" + }, + he : { + OK : "אישור", + CANCEL : "ביטול", + CONFIRM : "אישור" + }, + id : { + OK : "OK", + CANCEL : "Batal", + CONFIRM : "OK" + }, + it : { + OK : "OK", + CANCEL : "Annulla", + CONFIRM : "Conferma" + }, + ja : { + OK : "OK", + CANCEL : "キャンセル", + CONFIRM : "確認" + }, + lt : { + OK : "Gerai", + CANCEL : "Atšaukti", + CONFIRM : "Patvirtinti" + }, + lv : { + OK : "Labi", + CANCEL : "Atcelt", + CONFIRM : "Apstiprināt" + }, + nl : { + OK : "OK", + CANCEL : "Annuleren", + CONFIRM : "Accepteren" + }, + no : { + OK : "OK", + CANCEL : "Avbryt", + CONFIRM : "OK" + }, + pl : { + OK : "OK", + CANCEL : "Anuluj", + CONFIRM : "Potwierdź" + }, + pt : { + OK : "OK", + CANCEL : "Cancelar", + CONFIRM : "Confirmar" + }, + ru : { + OK : "OK", + CANCEL : "Отмена", + CONFIRM : "Применить" + }, + sv : { + OK : "OK", + CANCEL : "Avbryt", + CONFIRM : "OK" + }, + tr : { + OK : "Tamam", + CANCEL : "İptal", + CONFIRM : "Onayla" + }, + zh_CN : { + OK : "OK", + CANCEL : "取消", + CONFIRM : "确认" + }, + zh_TW : { + OK : "OK", + CANCEL : "取消", + CONFIRM : "確認" + } + }; + + exports.init = function(_$) { + return init(_$ || $); + }; + + return exports; +})); diff --git a/web/vendor/ace/js/bootstrap-colorpicker.js b/web/vendor/ace/js/bootstrap-colorpicker.js new file mode 100755 index 0000000..5cc0076 --- /dev/null +++ b/web/vendor/ace/js/bootstrap-colorpicker.js @@ -0,0 +1,540 @@ +/* ========================================================= + * bootstrap-colorpicker.js + * http://www.eyecon.ro/bootstrap-colorpicker + * ========================================================= + * Copyright 2012 Stefan Petre + * + * 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. + * ========================================================= */ + +!function( $ ) { + + // Color object + + var Color = function(val) { + this.value = { + h: 1, + s: 1, + b: 1, + a: 1 + }; + this.setColor(val); + }; + + Color.prototype = { + constructor: Color, + + //parse a string to HSB + setColor: function(val){ + val = val.toLowerCase(); + var that = this; + $.each( CPGlobal.stringParsers, function( i, parser ) { + var match = parser.re.exec( val ), + values = match && parser.parse( match ), + space = parser.space||'rgba'; + if ( values ) { + if (space === 'hsla') { + that.value = CPGlobal.RGBtoHSB.apply(null, CPGlobal.HSLtoRGB.apply(null, values)); + } else { + that.value = CPGlobal.RGBtoHSB.apply(null, values); + } + return false; + } + }); + }, + + setHue: function(h) { + this.value.h = 1- h; + }, + + setSaturation: function(s) { + this.value.s = s; + }, + + setLightness: function(b) { + this.value.b = 1- b; + }, + + setAlpha: function(a) { + this.value.a = parseInt((1 - a)*100, 10)/100; + }, + + // HSBtoRGB from RaphaelJS + // https://github.com/DmitryBaranovskiy/raphael/ + toRGB: function(h, s, b, a) { + if (!h) { + h = this.value.h; + s = this.value.s; + b = this.value.b; + } + h *= 360; + var R, G, B, X, C; + h = (h % 360) / 60; + C = b * s; + X = C * (1 - Math.abs(h % 2 - 1)); + R = G = B = b - C; + + h = ~~h; + R += [C, X, 0, 0, X, C][h]; + G += [X, C, C, X, 0, 0][h]; + B += [0, 0, X, C, C, X][h]; + return { + r: Math.round(R*255), + g: Math.round(G*255), + b: Math.round(B*255), + a: a||this.value.a + }; + }, + + toHex: function(h, s, b, a){ + var rgb = this.toRGB(h, s, b, a); + return '#'+((1 << 24) | (parseInt(rgb.r) << 16) | (parseInt(rgb.g) << 8) | parseInt(rgb.b)).toString(16).substr(1); + }, + + toHSL: function(h, s, b, a){ + if (!h) { + h = this.value.h; + s = this.value.s; + b = this.value.b; + } + var H = h, + L = (2 - s) * b, + S = s * b; + if (L > 0 && L <= 1) { + S /= L; + } else { + S /= 2 - L; + } + L /= 2; + if (S > 1) { + S = 1; + } + return { + h: H, + s: S, + l: L, + a: a||this.value.a + }; + } + }; + + // Picker object + + var Colorpicker = function(element, options){ + this.element = $(element); + var format = options.format||this.element.data('color-format')||'hex'; + this.format = CPGlobal.translateFormats[format]; + this.isInput = this.element.is('input'); + this.component = this.element.is('.color') ? this.element.find('.add-on') : false; + + this.picker = $(CPGlobal.template) + .appendTo('body') + .on('mousedown', $.proxy(this.mousedown, this)); + + if (this.isInput) { + this.element.on({ + 'focus': $.proxy(this.show, this), + 'keyup': $.proxy(this.update, this) + }); + } else if (this.component){ + this.component.on({ + 'click': $.proxy(this.show, this) + }); + } else { + this.element.on({ + 'click': $.proxy(this.show, this) + }); + } + if (format === 'rgba' || format === 'hsla') { + this.picker.addClass('alpha'); + this.alpha = this.picker.find('.colorpicker-alpha')[0].style; + } + + if (this.component){ + this.picker.find('.colorpicker-color').hide(); + this.preview = this.element.find('i')[0].style; + } else { + this.preview = this.picker.find('div:last')[0].style; + } + + this.base = this.picker.find('div:first')[0].style; + this.update(); + }; + + Colorpicker.prototype = { + constructor: Colorpicker, + + show: function(e) { + this.picker.show(); + this.height = this.component ? this.component.outerHeight() : this.element.outerHeight(); + this.place(); + $(window).on('resize', $.proxy(this.place, this)); + if (!this.isInput) { + if (e) { + e.stopPropagation(); + e.preventDefault(); + } + } + $(document).on({ + 'mousedown': $.proxy(this.hide, this) + }); + this.element.trigger({ + type: 'show', + color: this.color + }); + }, + + update: function(){ + this.color = new Color(this.isInput ? this.element.prop('value') : this.element.data('color')); + this.picker.find('i') + .eq(0).css({left: this.color.value.s*100, top: 100 - this.color.value.b*100}).end() + .eq(1).css('top', 100 * (1 - this.color.value.h)).end() + .eq(2).css('top', 100 * (1 - this.color.value.a)); + this.previewColor(); + }, + + setValue: function(newColor) { + this.color = new Color(newColor); + this.picker.find('i') + .eq(0).css({left: this.color.value.s*100, top: 100 - this.color.value.b*100}).end() + .eq(1).css('top', 100 * (1 - this.color.value.h)).end() + .eq(2).css('top', 100 * (1 - this.color.value.a)); + this.previewColor(); + this.element.trigger({ + type: 'changeColor', + color: this.color + }); + }, + + hide: function(){ + this.picker.hide(); + $(window).off('resize', this.place); + if (!this.isInput) { + $(document).off({ + 'mousedown': this.hide + }); + if (this.component){ + this.element.find('input').prop('value', this.format.call(this)); + } + this.element.data('color', this.format.call(this)); + } else { + this.element.prop('value', this.format.call(this)); + } + this.element.trigger({ + type: 'hide', + color: this.color + }); + }, + + place: function(){ + var offset = this.component ? this.component.offset() : this.element.offset(); + this.picker.css({ + top: offset.top + this.height, + left: offset.left + }); + }, + + //preview color change + previewColor: function(){ + try { + this.preview.backgroundColor = this.format.call(this); + } catch(e) { + this.preview.backgroundColor = this.color.toHex(); + } + //set the color for brightness/saturation slider + this.base.backgroundColor = this.color.toHex(this.color.value.h, 1, 1, 1); + //set te color for alpha slider + if (this.alpha) { + this.alpha.backgroundColor = this.color.toHex(); + } + }, + + pointer: null, + + slider: null, + + mousedown: function(e){ + e.stopPropagation(); + e.preventDefault(); + + var target = $(e.target); + + //detect the slider and set the limits and callbacks + var zone = target.closest('div'); + if (!zone.is('.colorpicker')) { + if (zone.is('.colorpicker-saturation')) { + this.slider = $.extend({}, CPGlobal.sliders.saturation); + } + else if (zone.is('.colorpicker-hue')) { + this.slider = $.extend({}, CPGlobal.sliders.hue); + } + else if (zone.is('.colorpicker-alpha')) { + this.slider = $.extend({}, CPGlobal.sliders.alpha); + } else { + return false; + } + var offset = zone.offset(); + //reference to knob's style + this.slider.knob = zone.find('i')[0].style; + this.slider.left = e.pageX - offset.left; + this.slider.top = e.pageY - offset.top; + this.pointer = { + left: e.pageX, + top: e.pageY + }; + //trigger mousemove to move the knob to the current position + $(document).on({ + mousemove: $.proxy(this.mousemove, this), + mouseup: $.proxy(this.mouseup, this) + }).trigger('mousemove'); + } + return false; + }, + + mousemove: function(e){ + e.stopPropagation(); + e.preventDefault(); + var left = Math.max( + 0, + Math.min( + this.slider.maxLeft, + this.slider.left + ((e.pageX||this.pointer.left) - this.pointer.left) + ) + ); + var top = Math.max( + 0, + Math.min( + this.slider.maxTop, + this.slider.top + ((e.pageY||this.pointer.top) - this.pointer.top) + ) + ); + this.slider.knob.left = left + 'px'; + this.slider.knob.top = top + 'px'; + if (this.slider.callLeft) { + this.color[this.slider.callLeft].call(this.color, left/100); + } + if (this.slider.callTop) { + this.color[this.slider.callTop].call(this.color, top/100); + } + this.previewColor(); + this.element.trigger({ + type: 'changeColor', + color: this.color + }); + return false; + }, + + mouseup: function(e){ + e.stopPropagation(); + e.preventDefault(); + $(document).off({ + mousemove: this.mousemove, + mouseup: this.mouseup + }); + return false; + } + } + + $.fn.colorpicker = function ( option, val ) { + return this.each(function () { + var $this = $(this), + data = $this.data('colorpicker'), + options = typeof option === 'object' && option; + if (!data) { + $this.data('colorpicker', (data = new Colorpicker(this, $.extend({}, $.fn.colorpicker.defaults,options)))); + } + if (typeof option === 'string') data[option](val); + }); + }; + + $.fn.colorpicker.defaults = { + }; + + $.fn.colorpicker.Constructor = Colorpicker; + + var CPGlobal = { + + // translate a format from Color object to a string + translateFormats: { + 'rgb': function(){ + var rgb = this.color.toRGB(); + return 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')'; + }, + + 'rgba': function(){ + var rgb = this.color.toRGB(); + return 'rgba('+rgb.r+','+rgb.g+','+rgb.b+','+rgb.a+')'; + }, + + 'hsl': function(){ + var hsl = this.color.toHSL(); + return 'hsl('+Math.round(hsl.h*360)+','+Math.round(hsl.s*100)+'%,'+Math.round(hsl.l*100)+'%)'; + }, + + 'hsla': function(){ + var hsl = this.color.toHSL(); + return 'hsla('+Math.round(hsl.h*360)+','+Math.round(hsl.s*100)+'%,'+Math.round(hsl.l*100)+'%,'+hsl.a+')'; + }, + + 'hex': function(){ + return this.color.toHex(); + } + }, + + sliders: { + saturation: { + maxLeft: 100, + maxTop: 100, + callLeft: 'setSaturation', + callTop: 'setLightness' + }, + + hue: { + maxLeft: 0, + maxTop: 100, + callLeft: false, + callTop: 'setHue' + }, + + alpha: { + maxLeft: 0, + maxTop: 100, + callLeft: false, + callTop: 'setAlpha' + } + }, + + // HSBtoRGB from RaphaelJS + // https://github.com/DmitryBaranovskiy/raphael/ + RGBtoHSB: function (r, g, b, a){ + r /= 255; + g /= 255; + b /= 255; + + var H, S, V, C; + V = Math.max(r, g, b); + C = V - Math.min(r, g, b); + H = (C === 0 ? null : + V == r ? (g - b) / C : + V == g ? (b - r) / C + 2 : + (r - g) / C + 4 + ); + H = ((H + 360) % 6) * 60 / 360; + S = C === 0 ? 0 : C / V; + return {h: H||1, s: S, b: V, a: a||1}; + }, + + HueToRGB: function (p, q, h) { + if (h < 0) + h += 1; + else if (h > 1) + h -= 1; + + if ((h * 6) < 1) + return p + (q - p) * h * 6; + else if ((h * 2) < 1) + return q; + else if ((h * 3) < 2) + return p + (q - p) * ((2 / 3) - h) * 6; + else + return p; + }, + + HSLtoRGB: function (h, s, l, a) + { + if (s < 0) { + s = 0; + } + var q; + if (l <= 0.5) { + q = l * (1 + s); + } else { + q = l + s - (l * s); + } + + var p = 2 * l - q; + + var tr = h + (1 / 3); + var tg = h; + var tb = h - (1 / 3); + + var r = Math.round(CPGlobal.HueToRGB(p, q, tr) * 255); + var g = Math.round(CPGlobal.HueToRGB(p, q, tg) * 255); + var b = Math.round(CPGlobal.HueToRGB(p, q, tb) * 255); + return [r, g, b, a||1]; + }, + + // a set of RE's that can match strings and generate color tuples. + // from John Resig color plugin + // https://github.com/jquery/jquery-color/ + stringParsers: [ + { + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; + } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + 2.55 * execResult[1], + 2.55 * execResult[2], + 2.55 * execResult[3], + execResult[ 4 ] + ]; + } + }, { + re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ) + ]; + } + }, { + re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + space: 'hsla', + parse: function( execResult ) { + return [ + execResult[1]/360, + execResult[2] / 100, + execResult[3] / 100, + execResult[4] + ]; + } + } + ], + template: '