diff --git a/ccm-bundle-devel/pom.xml b/ccm-bundle-devel/pom.xml index cf08bcbd5..4e4899d2d 100644 --- a/ccm-bundle-devel/pom.xml +++ b/ccm-bundle-devel/pom.xml @@ -61,28 +61,6 @@ - - com.vaadin - vaadin-compatibility-server - - - com.vaadin - vaadin-compatibility-shared - - - - com.vaadin - vaadin-compatibility-themes - - - com.vaadin - vaadin-compatibility-client-compiled - 8.0.4 - com.vaadin vaadin-cdi diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java index 6a179b11d..99176f3c9 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java @@ -138,12 +138,12 @@ class AssignedImagesTable extends Table { .findBean(ImageStepController.class); final ItemAttachment selectedAttachment - = moveAttachmentModel + = moveAttachmentModel .getSelectedAttachment(state); - + final Long destId = Long - .parseLong((String) event.getRowKey()); - + .parseLong((String) event.getRowKey()); + controller.moveAfter(selectedAttachment, destId); } @@ -165,6 +165,10 @@ class AssignedImagesTable extends Table { }); + super.setEmptyView(new Label(new GlobalizedMessage( + "cms.ui.authoring.assets.imagestep.assigned_images.none", + CmsConstants.CMS_BUNDLE))); + } private class ThumbnailCellRenderer implements TableCellRenderer { diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTableModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTableModelBuilder.java index 66f9c1464..b95ed6352 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTableModelBuilder.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTableModelBuilder.java @@ -84,7 +84,7 @@ class AssignedImagesTableModelBuilder extends LockableImpl implements .findBean(ImageStepController.class); final List rows = controller - .retrieveAssignedImages(selectedItem, selectedLocale); + .retrieveAssignedImagesRows(selectedItem, selectedLocale); return new AssignedImagesTableModel(rows, state, diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImageTableRow.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImageTableRow.java index d5d4e44d5..ca1411e7f 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImageTableRow.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImageTableRow.java @@ -20,13 +20,14 @@ package com.arsdigita.cms.ui.authoring.assets.images; /** * A container for the data shown in the table of assigned images. - * + * * @author Jens Pelzetter */ class AvailableImageTableRow { - + private long imageId; private String imageUuid; + private String title; private String filename; private long width; private long height; @@ -36,11 +37,11 @@ class AvailableImageTableRow { public long getImageId() { return imageId; } - + public void setImageId(final long imageId) { this.imageId = imageId; } - + public String getImageUuid() { return imageUuid; } @@ -49,6 +50,14 @@ class AvailableImageTableRow { this.imageUuid = imageUuid; } + public String getTitle() { + return title; + } + + public void setTitle(final String title) { + this.title = title; + } + public String getFilename() { return filename; } @@ -88,7 +97,5 @@ class AvailableImageTableRow { public void setCaption(final String caption) { this.caption = caption; } - - - + } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImages.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImages.java index ac557099d..37c7cd440 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImages.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImages.java @@ -33,17 +33,15 @@ import com.arsdigita.bebop.event.TableActionEvent; import com.arsdigita.bebop.event.TableActionListener; import com.arsdigita.bebop.form.Submit; import com.arsdigita.bebop.form.TextField; +import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.table.TableCellRenderer; import com.arsdigita.bebop.table.TableColumn; import com.arsdigita.bebop.table.TableColumnModel; +import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.globalization.GlobalizedMessage; import org.libreccm.cdi.utils.CdiUtil; import org.librecms.CmsConstants; -import org.librecms.assets.Image; -import org.librecms.contentsection.AttachmentList; - -import java.util.List; /** * @@ -52,12 +50,14 @@ import java.util.List; class AvailableImages extends BoxPanel { protected static final int COL_PREVIEW = 0; - protected static final int COL_PROPERTIES = 1; - protected static final int COL_CAPTION = 2; - protected static final int COL_ADD = 3; + protected static final int COL_TITLE = 1; + protected static final int COL_PROPERTIES = 2; + protected static final int COL_CAPTION = 3; + protected static final int COL_ADD = 4; - public AvailableImages(final AttachmentList imagesList, - final List assignedImages) { + public AvailableImages(final ImageStep imageStep, + final ItemSelectionModel itemSelectionModel, + final StringParameter selectedLanguageParam) { super(BoxPanel.VERTICAL); @@ -65,9 +65,11 @@ class AvailableImages extends BoxPanel { new BoxPanel(BoxPanel.HORIZONTAL)); final TextField filterField = new TextField("filter_available_images"); filterField.setLabel(new GlobalizedMessage( - "cms.ui.authoring.assets.imagestep.available_images.filter_label")); + "cms.ui.authoring.assets.imagestep.available_images.filter_label", + CmsConstants.CMS_BUNDLE)); final Submit submitFilter = new Submit(new GlobalizedMessage( - "cms.ui.authoring.assets.imagestep.available_images.submit_filter")); + "cms.ui.authoring.assets.imagestep.available_images.submit_filter", + CmsConstants.CMS_BUNDLE)); filterForm.add(filterField); filterForm.add(submitFilter); @@ -84,7 +86,7 @@ class AvailableImages extends BoxPanel { return (int) controller .getNumberOfAvailableImages( - assignedImages, + itemSelectionModel.getSelectedItem(state), (String) filterField.getValue(state)); } @@ -105,6 +107,11 @@ class AvailableImages extends BoxPanel { new Label(new GlobalizedMessage( "cms.ui.authoring.assets.imagestep.available_images.preview_header", CmsConstants.CMS_BUNDLE)))); + columnModel.add(new TableColumn( + COL_TITLE, + new Label(new GlobalizedMessage( + "cms.ui.authoring.assets.imagestep.available_images.title_header", + CmsConstants.CMS_BUNDLE)))); columnModel.add(new TableColumn( COL_PROPERTIES, new Label(new GlobalizedMessage( @@ -121,9 +128,8 @@ class AvailableImages extends BoxPanel { "cms.ui.authoring.assets.imagestep.available_images.select_header", CmsConstants.CMS_BUNDLE)))); - table.setModelBuilder(new AvailableImagesTableModelBuilder(imagesList, - filterField, - paginator)); + table.setModelBuilder(new AvailableImagesTableModelBuilder( + itemSelectionModel, selectedLanguageParam, filterField, paginator)); table .getColumn(COL_PREVIEW) @@ -135,6 +141,10 @@ class AvailableImages extends BoxPanel { .getColumn(COL_ADD) .setCellRenderer(new AddCellRenderer()); + table.setEmptyView(new Label(new GlobalizedMessage( + "cms.ui.authoring.assets.imagestep.available_images.none", + CmsConstants.CMS_BUNDLE))); + table.addTableActionListener(new TableActionListener() { @Override @@ -146,7 +156,12 @@ class AvailableImages extends BoxPanel { final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final ImageStepController controller = cdiUtil .findBean(ImageStepController.class); - controller.attachImage(imagesList, imageId); + controller + .attachImage(itemSelectionModel + .getSelectedItem(event.getPageState()), + imageId); + + imageStep.showAssignedImages(event.getPageState()); } @Override @@ -155,6 +170,8 @@ class AvailableImages extends BoxPanel { } }); + + super.add(table); } private class ThumbnailCellRenderer implements TableCellRenderer { diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModel.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModel.java index 8036a455b..acc3eb2ff 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModel.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModel.java @@ -63,11 +63,13 @@ class AvailableImagesTableModel implements TableModel { switch (columnIndex) { case AvailableImages.COL_PREVIEW: return String - .format("%s/content-.sections/%s/images/" + .format("%s/content-sections/%s/images/" + "uuid-%s?width=150&height=100", CCMDispatcherServlet.getContextPath(), CMS.getContext().getContentSection().getLabel(), currentRow.getImageUuid()); + case AvailableImages.COL_TITLE: + return currentRow.getTitle(); case AvailableImages.COL_PROPERTIES: final ImageProperties imageProperties = new ImageProperties(); imageProperties.setFilename(currentRow.getFilename()); diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModelBuilder.java index 313d1b555..a2e98a427 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModelBuilder.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModelBuilder.java @@ -22,15 +22,19 @@ import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.Paginator; import com.arsdigita.bebop.Table; import com.arsdigita.bebop.form.TextField; +import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.table.TableModel; import com.arsdigita.bebop.table.TableModelBuilder; +import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.util.LockableImpl; import org.libreccm.cdi.utils.CdiUtil; import org.librecms.assets.Image; -import org.librecms.contentsection.AttachmentList; +import org.librecms.contentsection.ContentItem; +import org.librecms.contentsection.ItemAttachment; import java.util.List; +import java.util.Locale; import java.util.stream.Collectors; /** @@ -41,14 +45,19 @@ public class AvailableImagesTableModelBuilder extends LockableImpl implements TableModelBuilder { - private final AttachmentList imageList; + private final ItemSelectionModel itemSelectionModel; + private final StringParameter selectedLanguageParam; private final TextField filterField; private final Paginator paginator; - public AvailableImagesTableModelBuilder(final AttachmentList imageList, - final TextField filterField, - final Paginator paginator) { - this.imageList = imageList; + public AvailableImagesTableModelBuilder( + final ItemSelectionModel itemSelectionModel, + final StringParameter selectedLanguageParam, + final TextField filterField, + final Paginator paginator) { + + this.itemSelectionModel = itemSelectionModel; + this.selectedLanguageParam = selectedLanguageParam; this.filterField = filterField; this.paginator = paginator; } @@ -57,28 +66,34 @@ public class AvailableImagesTableModelBuilder public TableModel makeModel(final Table table, final PageState state) { - final List excludedImages = imageList - .getAttachments() + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final ImageStepController controller = cdiUtil + .findBean(ImageStepController.class); + + final ContentItem selectedItem = itemSelectionModel + .getSelectedItem(state); + + final List> imageAttachments = controller + .retrieveAssignedImages(selectedItem); + + final List excludedImages = imageAttachments .stream() .map(attachment -> attachment.getAsset()) - .filter(asset -> asset instanceof Image) - .map(asset -> (Image) asset) .collect(Collectors.toList()); //Paginator count from 1, JPA from 0 final int firstResult = paginator.getFirst(state) - 1; final int maxResults = paginator.getPageSize(state); - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final ImageStepController controller = cdiUtil - .findBean(ImageStepController.class); + final Locale selectedLocale = new Locale((String) state.getValue(selectedLanguageParam)); final List rows = controller - .getAvailableImageRows(excludedImages, - (String) filterField.getValue(state), - firstResult, - maxResults); - + .getAvailableImageRows(excludedImages, + selectedLocale, + (String) filterField.getValue(state), + firstResult, + maxResults); + return new AvailableImagesTableModel(rows); } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java index 862c7b478..d4de04514 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java @@ -19,16 +19,15 @@ package com.arsdigita.cms.ui.authoring.assets.images; import com.arsdigita.bebop.ActionLink; +import com.arsdigita.bebop.BoxPanel; import com.arsdigita.bebop.ControlLink; import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Page; import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.Text; import com.arsdigita.bebop.parameters.LongParameter; import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.ui.GlobalNavigation; import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; import com.arsdigita.cms.ui.authoring.ResettableContainer; import com.arsdigita.cms.ui.authoring.assets.ItemAttachmentSelectionModel; @@ -54,6 +53,8 @@ import java.util.Locale; descriptionKey = "image_step.description") public class ImageStep extends ResettableContainer { + public static final String IMAGES_ATTACHMENT_LIST = ".images"; + private final LongParameter moveAttachmentParam; private final ItemAttachmentSelectionModel moveAttachmentModel; @@ -61,6 +62,9 @@ public class ImageStep extends ResettableContainer { private final ControlLink addImageLink; private final ActionLink beginLink; private final Table assignedImagesTable; + private final Label addImageHeader; + private final AvailableImages availableImages; + private final ControlLink cancelAddImage; public ImageStep(final ItemSelectionModel itemSelectionModel, final AuthoringKitWizard authoringKitWizard, @@ -95,20 +99,42 @@ public class ImageStep extends ResettableContainer { CmsConstants.CMS_BUNDLE, new String[]{title})); }); - super.add(assignedImagesHeader); + assignedImagesHeader.setClassAttr(""); - addImageLink = new ControlLink(new Label(new GlobalizedMessage( + addImageHeader = new Label(event -> { + final PageState state = event.getPageState(); + final Label target = (Label) event.getTarget(); + + final ContentItem selectedItem = itemSelectionModel + .getSelectedItem(state); + final String selectedLanguage = (String) state + .getValue(selectedLanguageParam); + final Locale selectedLocale = new Locale(selectedLanguage); + final String title; + if (selectedItem.getTitle().hasValue(selectedLocale)) { + title = selectedItem.getTitle().getValue(selectedLocale); + } else { + title = selectedItem.getTitle().getValue(KernelConfig + .getConfig() + .getDefaultLocale()); + } + + target.setLabel(new GlobalizedMessage( + "cms.ui.authoring.assets.imagestep.add_heading", + CmsConstants.CMS_BUNDLE, + new String[]{title})); + }); + + addImageLink = new ActionLink(new Label(new GlobalizedMessage( "cms.ui.authoring.assets.imagestep.assigned_images.add_image", CmsConstants.CMS_BUNDLE))); addImageLink.addActionListener(event -> { - //ToDo + showAvailableImages(event.getPageState()); }); - super.add(addImageLink); beginLink = new ActionLink(new GlobalizedMessage( "cms.ui.authoring.assets.imagestep.assigned_images.move_to_beginning", CmsConstants.CMS_BUNDLE)); - add(beginLink); beginLink.addActionListener(event -> { final PageState state = event.getPageState(); @@ -125,14 +151,31 @@ public class ImageStep extends ResettableContainer { assignedImagesTable = new AssignedImagesTable(itemSelectionModel, moveAttachmentModel, selectedLanguageParam); - super.add(assignedImagesTable); - super.add(new Text("Image Step placeholder")); - + cancelAddImage = new ControlLink(new Label(new GlobalizedMessage( + "cms.ui.authoring.assets.imagestep.assigned_images.cancel_add_image", + CmsConstants.CMS_BUNDLE))); + cancelAddImage.addActionListener(event -> { + showAssignedImages(event.getPageState()); + }); + + availableImages = new AvailableImages(this, + itemSelectionModel, + selectedLanguageParam); + + final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL); + panel.add(assignedImagesHeader); + panel.add(addImageLink); + panel.add(beginLink); + panel.add(assignedImagesTable); + panel.add(addImageHeader); + panel.add(availableImages); + super.add(panel); + moveAttachmentModel.addChangeListener(event -> { - + final PageState state = event.getPageState(); - + if (moveAttachmentModel.getSelectedKey(state) == null) { addImageLink.setVisible(state, true); beginLink.setVisible(state, false); @@ -151,6 +194,27 @@ public class ImageStep extends ResettableContainer { page.setVisibleDefault(addImageLink, true); page.setVisibleDefault(beginLink, false); page.setVisibleDefault(assignedImagesTable, true); + page.setVisibleDefault(addImageHeader, false); + page.setVisibleDefault(cancelAddImage, false); + page.setVisibleDefault(availableImages, false); + } + + protected void showAssignedImages(final PageState state) { + assignedImagesHeader.setVisible(state, true); + addImageLink.setVisible(state, true); + assignedImagesTable.setVisible(state, true); + addImageHeader.setVisible(state, false); + + availableImages.setVisible(state, false); + } + + protected void showAvailableImages(final PageState state) { + assignedImagesHeader.setVisible(state, false); + addImageLink.setVisible(state, false); + assignedImagesTable.setVisible(state, false); + addImageHeader.setVisible(state, true); + cancelAddImage.setVisible(state, true); + availableImages.setVisible(state, true); } } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStepController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStepController.java index 259cffa68..f6c682369 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStepController.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStepController.java @@ -62,7 +62,7 @@ class ImageStepController { @Inject private AssetRepository assetRepo; - + @Inject private AttachmentListManager attachmentListManager; @@ -70,11 +70,10 @@ class ImageStepController { private ItemAttachmentManager attachmentManager; @Transactional(Transactional.TxType.REQUIRED) - protected List retrieveAssignedImages( - final ContentItem fromContentItem, final Locale selectedLocale) { + protected List> retrieveAssignedImages( + final ContentItem fromContentItem) { Objects.requireNonNull(fromContentItem); - Objects.requireNonNull(selectedLocale); final ContentItem item = itemRepo .findById(fromContentItem.getObjectId()) @@ -83,7 +82,7 @@ class ImageStepController { fromContentItem.getObjectId()))); final List imageLists = attachmentListManager - .getAttachmentList(item, ".images"); + .getAttachmentList(item, ImageStep.IMAGES_ATTACHMENT_LIST); if (imageLists.isEmpty()) { return Collections.emptyList(); @@ -97,18 +96,66 @@ class ImageStepController { } @SuppressWarnings("unchecked") - final List rows = attachments + final List> imageAttachments = attachments .stream() .sorted((attachment1, attachment2) -> { return attachment1.compareTo(attachment2); }) .filter(attachment -> attachment.getAsset() instanceof Image) .map(attachment -> (ItemAttachment) attachment) - .map(imageAttachment -> buildAssignedImageTableRow(imageAttachment, - selectedLocale)) .collect(Collectors.toList()); - return rows; + return imageAttachments; + } + + @Transactional(Transactional.TxType.REQUIRED) + protected List retrieveAssignedImagesRows( + final ContentItem fromContentItem, final Locale selectedLocale) { + +// Objects.requireNonNull(fromContentItem); +// Objects.requireNonNull(selectedLocale); +// +// final ContentItem item = itemRepo +// .findById(fromContentItem.getObjectId()) +// .orElseThrow(() -> new IllegalArgumentException(String +// .format("No ContentItem with id %d in the database.", +// fromContentItem.getObjectId()))); +// +// final List imageLists = attachmentListManager +// .getAttachmentList(item, ImageStep.IMAGES_ATTACHMENT_LIST); +// +// if (imageLists.isEmpty()) { +// return Collections.emptyList(); +// } +// +// final List> attachments = new ArrayList<>(); +// for (final AttachmentList imageList : imageLists) { +// for (final ItemAttachment attachment : imageList.getAttachments()) { +// attachments.add(attachment); +// } +// } + final List> imageAttachments + = retrieveAssignedImages( + fromContentItem); + +// @SuppressWarnings("unchecked") +// final List rows = attachments +// .stream() +// .sorted((attachment1, attachment2) -> { +// return attachment1.compareTo(attachment2); +// }) +// .filter(attachment -> attachment.getAsset() instanceof Image) +// .map(attachment -> (ItemAttachment) attachment) +// .map(imageAttachment -> buildAssignedImageTableRow(imageAttachment, +// selectedLocale)) +// .collect(Collectors.toList()); +// +// return rows; + return imageAttachments + .stream() + .map(imageAttachment -> buildAssignedImageTableRow(imageAttachment, + selectedLocale)) + .collect(Collectors.toList()); } @Transactional(Transactional.TxType.REQUIRED) @@ -208,28 +255,54 @@ class ImageStepController { } @Transactional(Transactional.TxType.REQUIRED) - protected long getNumberOfAvailableImages(final List excluededImages, + protected long getNumberOfAvailableImages(final ContentItem selectedItem, final String filter) { + Objects.requireNonNull(selectedItem); + + final ContentItem item = itemRepo + .findById(selectedItem.getObjectId()) + .orElseThrow(() -> new IllegalArgumentException(String + .format("No ContentItem with ID %d in the database.", + selectedItem.getObjectId()))); + + final List> imageAttachments + = retrieveAssignedImages(item); + final List excluededImages = imageAttachments + .stream() + .map(imageAttachment -> imageAttachment.getAsset()) + .collect(Collectors.toList()); + final CriteriaBuilder criteriaBuilder = entityManager .getCriteriaBuilder(); final CriteriaQuery query = criteriaBuilder .createQuery(Long.class); final Root from = query.from(Image.class); - final Join titleJoin = from.join("title.values"); + final Join titleJoin = from.join("title"); + final Join titleValuesJoin = titleJoin.join("values"); query .select(criteriaBuilder.count(from)); if (filter == null || filter.trim().isEmpty()) { - query.where(criteriaBuilder.and( - criteriaBuilder.not(from.in(excluededImages)), - criteriaBuilder.like(titleJoin, String.format("&s%%", filter)))); + if (excluededImages != null && !excluededImages.isEmpty()) { + query.where(criteriaBuilder.not(from.in(excluededImages))); + } } else { - query.where(criteriaBuilder.not(from.in(excluededImages))); + if (excluededImages == null || excluededImages.isEmpty()) { + criteriaBuilder.like(titleValuesJoin, + String.format("%s%%", filter)); + } else { + query.where(criteriaBuilder.and( + criteriaBuilder.not(from.in(excluededImages)), + criteriaBuilder.like(titleValuesJoin, + String.format("%s%%", filter)))); + } } - return entityManager.createQuery(query).getSingleResult(); + final long result = entityManager.createQuery(query) + .getSingleResult(); + return result; } @Transactional(Transactional.TxType.REQUIRED) @@ -237,20 +310,31 @@ class ImageStepController { final String filter, final long firstImage, final long maxImages) { + final CriteriaBuilder criteriaBuilder = entityManager .getCriteriaBuilder(); final CriteriaQuery criteriaQuery = criteriaBuilder .createQuery(Image.class); final Root from = criteriaQuery.from(Image.class); - final Join titleJoin = from.join("title.values"); + final Join titleJoin = from.join("title"); + final Join titleValuesJoin = titleJoin.join("values"); if (filter == null || filter.trim().isEmpty()) { - criteriaQuery.where(criteriaBuilder.and( - criteriaBuilder.not(from.in(excludedImages)), - criteriaBuilder.like(titleJoin, String.format("&s%%", filter)))); + if (excludedImages != null && !excludedImages.isEmpty()) { + criteriaQuery.where(criteriaBuilder.not(from.in( + excludedImages))); + } } else { - criteriaQuery.where(criteriaBuilder.not(from.in(excludedImages))); + if (excludedImages == null || excludedImages.isEmpty()) { + criteriaBuilder.like(titleValuesJoin, + String.format("%s%%", filter)); + } else { + criteriaQuery.where(criteriaBuilder.and( + criteriaBuilder.not(from.in(excludedImages)), + criteriaBuilder.like(titleValuesJoin, + String.format("%s%%", filter)))); + } } final TypedQuery query = entityManager @@ -258,53 +342,70 @@ class ImageStepController { query.setFirstResult((int) firstImage); query.setMaxResults((int) maxImages); - return query.getResultList(); + final List result = query.getResultList(); + return result; } @Transactional(Transactional.TxType.REQUIRED) protected List getAvailableImageRows( final List excludedImages, + final Locale selectedLocale, final String filter, final long firstImage, - final long lastImage) { + final long lastImage + ) { - return getAvailableImages(excludedImages, filter, firstImage, lastImage) + return getAvailableImages(excludedImages, filter, firstImage, + lastImage) .stream() - .map(this::buildAvailableImageRow) + .map(image -> buildAvailableImageRow(image, selectedLocale)) .collect(Collectors.toList()); - + } - - private AvailableImageTableRow buildAvailableImageRow(final Image image) { + + private AvailableImageTableRow buildAvailableImageRow( + final Image image, final Locale selectedLocale) { final AvailableImageTableRow row = new AvailableImageTableRow(); row.setImageId(image.getObjectId()); row.setImageUuid(image.getUuid()); + row.setTitle(image.getTitle().getValue(selectedLocale)); row.setFilename(image.getFileName()); row.setWidth(image.getWidth()); - row.setHeight(row.getHeight()); + row.setHeight(image.getHeight()); row.setType(image.getMimeType().toString()); - + return row; } @Transactional(Transactional.TxType.REQUIRED) - protected void attachImage(final AttachmentList attachmentList, + protected void attachImage(final ContentItem contentItem, final long imageId) { - - final AttachmentList addTo = attachmentListManager - .getAttachmentList(attachmentList.getListId()) - .orElseThrow(() -> new IllegalArgumentException(String - .format("No AttachmentList with ID %d in the database.", - attachmentList.getListId()))); - + + final ContentItem item = itemRepo + .findById(contentItem.getObjectId()) + .orElseThrow(() -> new IllegalArgumentException(String + .format("No ContentItem with ID %d in the database.", + contentItem.getObjectId()))); + + final List list = attachmentListManager + .getAttachmentList(item, ImageStep.IMAGES_ATTACHMENT_LIST); + + final AttachmentList addTo; + if (list == null || list.isEmpty()) { + addTo = attachmentListManager + .createAttachmentList(item, ImageStep.IMAGES_ATTACHMENT_LIST); + } else { + addTo = list.get(0); + } + final Image image = assetRepo .findById(imageId, Image.class) - .orElseThrow(() -> new IllegalArgumentException(String + .orElseThrow(() -> new IllegalArgumentException(String .format("No Image with ID %d in the database.", imageId))); - - attachmentManager.attachAsset(image, attachmentList); + + attachmentManager.attachAsset(image, addTo); } private AssignedImageTableRow buildAssignedImageTableRow( diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionConfig.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionConfig.java index 6666a6c76..bb24c4183 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionConfig.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionConfig.java @@ -18,6 +18,9 @@ */ package org.librecms.contentsection; +import com.arsdigita.cms.ui.authoring.assets.RelatedInfoStep; +import com.arsdigita.cms.ui.authoring.assets.images.ImageStep; + import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.configuration.Configuration; import org.libreccm.configuration.ConfigurationManager; @@ -120,8 +123,8 @@ public class ContentSectionConfig { @Setting private List defaultAuthoringSteps = Arrays .asList(new String[]{ - "com.arsdigita.cms.ui.authoring.assets.ImageStep", - "com.arsdigita.cms.ui.authoring.assets.RelatedInfoStep"}); + ImageStep.class.getName(), + RelatedInfoStep.class.getName()}); public static ContentSectionConfig getConfig() { final ConfigurationManager confManager = CdiUtil.createCdiUtil() diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties index e62f9c3a4..501fc374e 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties @@ -405,3 +405,10 @@ cms.ui.authoring.assets.imagestep.available_images.preview_header=Preview cms.ui.authoring.assets.imagestep.available_images.properties_header=Properties cms.ui.authoring.assets.imagestep.available_images.select_header=Add image cms.ui.authoring.assets.imagestep.available_images.caption_header=Caption +cms.ui.authoring.assets.imagestep.assigned_images.add_image=Add image +cms.ui.authoring.assets.imagestep.assigned_images.none=No images are assigned to this document. +cms.ui.authoring.assets.imagestep.add_heading=Add image to document {0} +cms.ui.authoring.assets.imagestep.assigned_images.cancel_add_image=Cancel +cms.ui.authoring.assets.imagestep.available_images.none=No images available +cms.ui.authoring.assets.imagestep.available_images.title_header=Title +cms.ui.authoring.assets.imagestep.available_images.add=Add diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties index 981e641d1..407b3aac6 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties @@ -402,3 +402,10 @@ cms.ui.authoring.assets.imagestep.available_images.preview_header=Vorschau cms.ui.authoring.assets.imagestep.available_images.properties_header=Eigenschaften cms.ui.authoring.assets.imagestep.available_images.select_header=Hinzuf\u00fcgen cms.ui.authoring.assets.imagestep.available_images.caption_header=Bildunterschrift +cms.ui.authoring.assets.imagestep.assigned_images.add_image=Bild hinzuf\u00fcgen +cms.ui.authoring.assets.imagestep.assigned_images.none=Diesem Bild wurden keine Bilder zugewiesen +cms.ui.authoring.assets.imagestep.add_heading=Bild zu Dokument {0} hinzuf\u00fcgen +cms.ui.authoring.assets.imagestep.assigned_images.cancel_add_image=Abbrechen +cms.ui.authoring.assets.imagestep.available_images.none=Keine Bilder verf\u00fcgbar +cms.ui.authoring.assets.imagestep.available_images.title_header=Titel +cms.ui.authoring.assets.imagestep.available_images.add=Hinzuf\u00fcgen diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties index eae852522..f91bd9813 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties @@ -361,3 +361,10 @@ cms.ui.authoring.assets.imagestep.available_images.preview_header=Preview cms.ui.authoring.assets.imagestep.available_images.properties_header=Properties cms.ui.authoring.assets.imagestep.available_images.select_header=Add image cms.ui.authoring.assets.imagestep.available_images.caption_header=Caption +cms.ui.authoring.assets.imagestep.assigned_images.add_image=Add image +cms.ui.authoring.assets.imagestep.assigned_images.none=No images are assigned to this document. +cms.ui.authoring.assets.imagestep.add_heading=Add image to document {0} +cms.ui.authoring.assets.imagestep.assigned_images.cancel_add_image=Cancel +cms.ui.authoring.assets.imagestep.available_images.none=No images available +cms.ui.authoring.assets.imagestep.available_images.title_header=Title +cms.ui.authoring.assets.imagestep.available_images.add=Add diff --git a/ccm-core/pom.xml b/ccm-core/pom.xml index 0d7c069e3..c02e857d9 100644 --- a/ccm-core/pom.xml +++ b/ccm-core/pom.xml @@ -202,14 +202,6 @@ - - com.vaadin - vaadin-compatibility-server - - - com.vaadin - vaadin-compatibility-shared - com.vaadin vaadin-themes @@ -220,11 +212,6 @@ vaadin-client-compiled - - com.vaadin - vaadin-compatibility-client-compiled - - com.vaadin vaadin-cdi diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RoleMembersTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RoleMembersTable.java index 9da5ae7c1..0cac42e45 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RoleMembersTable.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RoleMembersTable.java @@ -34,7 +34,7 @@ import com.arsdigita.bebop.table.TableModelBuilder; import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.util.LockableImpl; -import org.libreccm.admin.ui.usersgroupsroles.UsersGroupsRoles; +import org.libreccm.admin.ui.UsersGroupsRoles; import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.security.Group; import org.libreccm.security.Party; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/AdminView.java b/ccm-core/src/main/java/org/libreccm/admin/ui/AdminView.java index 2bb9a8c0f..4362acd89 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/AdminView.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/AdminView.java @@ -34,10 +34,6 @@ import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; import com.vaadin.ui.VerticalLayout; import org.apache.shiro.subject.Subject; -import org.libreccm.admin.ui.usersgroupsroles.GroupsTableDataProvider; -import org.libreccm.admin.ui.usersgroupsroles.RolesTableDataProvider; -import org.libreccm.admin.ui.usersgroupsroles.UsersGroupsRoles; -import org.libreccm.admin.ui.usersgroupsroles.UsersTableDataProvider; import org.libreccm.l10n.GlobalizationHelper; import org.libreccm.security.GroupManager; import org.libreccm.security.GroupRepository; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupDetails.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupDetails.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupDetails.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupDetails.java index 290db3f14..eefa97979 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupDetails.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupDetails.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupEditor.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupEditor.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupEditor.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupEditor.java index 81e3e77c3..d28419049 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupEditor.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupEditor.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersController.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersController.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersController.java index 35c1770d4..4edd45627 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersController.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersController.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import org.libreccm.security.Group; import org.libreccm.security.GroupManager; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersTableDataProvider.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersTableDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersTableDataProvider.java index e52d51243..7b30f3dc5 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersTableDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersTableDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesController.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesController.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesController.java index 5a409e63b..c5d5f2d29 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesController.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesController.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import org.libreccm.security.Group; import org.libreccm.security.GroupRepository; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesTableDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesTableDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesTableDataProvider.java index f755ac61b..eb1e5c8f8 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesTableDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesTableDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectionAction.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectionAction.java similarity index 95% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectionAction.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectionAction.java index b6676481c..fdb654f05 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectionAction.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectionAction.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import org.libreccm.security.Group; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelector.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelector.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelector.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelector.java index 6ef405a80..73efd8a00 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelector.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelector.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.icons.VaadinIcons; import com.vaadin.ui.Button; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectorDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectorDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectorDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectorDataProvider.java index 5a664562a..ae40d4c64 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectorDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectorDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTable.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTable.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTable.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTable.java index 283bfb700..d1148d992 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTable.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTable.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTableDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTableDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTableDataProvider.java index 24f8c908b..43d90e6af 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTableDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTableDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/JpqlConsole.java b/ccm-core/src/main/java/org/libreccm/admin/ui/JpqlConsole.java index 68de5b6fb..e0cd5a447 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/JpqlConsole.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/JpqlConsole.java @@ -120,7 +120,7 @@ public class JpqlConsole extends CustomComponent { // splitPanel.setSplitPosition(33.3f, Unit.PERCENTAGE); // splitPanel.setFirstComponent(queryForm); // splitPanel.setSecondComponent(resultsLayout); - setCompositionRoot(new VerticalLayout(queryLayout, resultsPanel)); + super.setCompositionRoot(new VerticalLayout(queryLayout, resultsPanel)); } @SuppressWarnings("unchecked") diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectionAction.java b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectionAction.java similarity index 95% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectionAction.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectionAction.java index af283b37a..524588496 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectionAction.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectionAction.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import org.libreccm.security.Party; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelector.java b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelector.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelector.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/PartySelector.java index bb1a7059b..fc4702f62 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelector.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelector.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectorDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectorDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectorDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectorDataProvider.java index 0b60e512c..0ca7379b1 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectorDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectorDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleDetails.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleDetails.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleDetails.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleDetails.java index b7262ef63..40cd0446c 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleDetails.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleDetails.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleEditor.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleEditor.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleEditor.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleEditor.java index 3333f826d..0cb49c380 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleEditor.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleEditor.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesController.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesController.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesController.java index efbac3ae7..75f7a00ce 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesController.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesController.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import org.libreccm.security.Party; import org.libreccm.security.PartyRepository; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesDataProvider.java index 822a31cd1..177e3ac30 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectionAction.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectionAction.java similarity index 95% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectionAction.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectionAction.java index 706a7d0d3..7ffa6e9f8 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectionAction.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectionAction.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import org.libreccm.security.Role; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelector.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelector.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelector.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelector.java index 7c4a60f6c..f6a2780c4 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelector.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelector.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.icons.VaadinIcons; import com.vaadin.ui.Button; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectorDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectorDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectorDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectorDataProvider.java index 8559c66a3..97f6bffae 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectorDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectorDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTable.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RolesTable.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTable.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/RolesTable.java index f8eddd8a2..f5fe75f70 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTable.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RolesTable.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RolesTableDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTableDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/RolesTableDataProvider.java index 7a01c53d3..e97790709 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTableDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RolesTableDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserDetails.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserDetails.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserDetails.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserDetails.java index 5e0bb6280..8b240ed06 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserDetails.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserDetails.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserEditor.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserEditor.java index 67660c1be..b378cc580 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserEditor.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsController.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsController.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsController.java index efc8311eb..d07c92bb8 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsController.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsController.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import org.libreccm.security.Group; import org.libreccm.security.GroupManager; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsTableDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsTableDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsTableDataProvider.java index b040db87e..761b10d27 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsTableDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsTableDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesController.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesController.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesController.java index fbedde178..247523ade 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesController.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesController.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import org.libreccm.security.Role; import org.libreccm.security.RoleManager; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesTableDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesTableDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesTableDataProvider.java index 0449aea41..af8e3e21b 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesTableDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesTableDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectionAction.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectionAction.java similarity index 95% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectionAction.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectionAction.java index 126975e9e..3b292614d 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectionAction.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectionAction.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import org.libreccm.security.User; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelector.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelector.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelector.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserSelector.java index 0d0572349..f6c2deee7 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelector.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelector.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectorDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectorDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectorDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectorDataProvider.java index bb0de47c6..c84341951 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectorDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectorDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersGroupsRoles.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UsersGroupsRoles.java index e150d5623..3494231c1 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersGroupsRoles.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTable.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersTable.java similarity index 99% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTable.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UsersTable.java index 80d366391..a1e43c445 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTable.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersTable.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.arsdigita.ui.admin.AdminUiConstants; diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersTableDataProvider.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java rename to ccm-core/src/main/java/org/libreccm/admin/ui/UsersTableDataProvider.java index 2a0113ed4..759be9817 100644 --- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java +++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersTableDataProvider.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.admin.ui.usersgroupsroles; +package org.libreccm.admin.ui; import com.vaadin.cdi.ViewScoped; import com.vaadin.data.provider.AbstractDataProvider; diff --git a/ccm-core/src/main/resources/VAADIN/themes/ccm-core/styles.css b/ccm-core/src/main/resources/VAADIN/themes/ccm-core/styles.css index d752b8819..bb18120a2 100644 --- a/ccm-core/src/main/resources/VAADIN/themes/ccm-core/styles.css +++ b/ccm-core/src/main/resources/VAADIN/themes/ccm-core/styles.css @@ -892,6 +892,106 @@ * @group tree */ +/** + * + * @group table + */ + +@-webkit-keyframes valo-grid-editor-footer-animate-in { + 0% { + margin-top: -37px; + } + } + +@-moz-keyframes valo-grid-editor-footer-animate-in { + 0% { + margin-top: -37px; + } + } + +@keyframes valo-grid-editor-footer-animate-in { + 0% { + margin-top: -37px; + } + } + +@-webkit-keyframes valo-grid-editor-footer-animate-in-alt { + 0% { + margin-bottom: -38px; + } + 100% { + margin-bottom: -1px; + } + } + +@-moz-keyframes valo-grid-editor-footer-animate-in-alt { + 0% { + margin-bottom: -38px; + } + 100% { + margin-bottom: -1px; + } + } + +@keyframes valo-grid-editor-footer-animate-in-alt { + 0% { + margin-bottom: -38px; + } + 100% { + margin-bottom: -1px; + } + } + +/** + * + * @group table + */ + +@-webkit-keyframes valo-grid-editor-footer-animate-in { + 0% { + margin-top: -37px; + } + } + +@-moz-keyframes valo-grid-editor-footer-animate-in { + 0% { + margin-top: -37px; + } + } + +@keyframes valo-grid-editor-footer-animate-in { + 0% { + margin-top: -37px; + } + } + +@-webkit-keyframes valo-grid-editor-footer-animate-in-alt { + 0% { + margin-bottom: -38px; + } + 100% { + margin-bottom: -1px; + } + } + +@-moz-keyframes valo-grid-editor-footer-animate-in-alt { + 0% { + margin-bottom: -38px; + } + 100% { + margin-bottom: -1px; + } + } + +@keyframes valo-grid-editor-footer-animate-in-alt { + 0% { + margin-bottom: -38px; + } + 100% { + margin-bottom: -1px; + } + } + /** * * @@ -981,7 +1081,7 @@ */ .v-vaadin-version:after { - content: "8.0.6"; + content: "8.1.0"; } .v-widget { @@ -1676,31 +1776,6 @@ select:focus { box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); } -button { - font: inherit; - font-weight: 400; - line-height: 1.55; -} - -a { - cursor: pointer; - color: #197de1; - text-decoration: underline; - font-weight: inherit; - -webkit-transition: color 140ms; - -moz-transition: color 140ms; - transition: color 140ms; -} - -a:hover { - color: #4396ea; -} - -a.v-disabled { - opacity: 0.5; - filter: alpha(opacity=50) ; -} - .v-disabled { cursor: default !important; } @@ -1716,6 +1791,13 @@ a.v-disabled { filter: alpha(opacity=50) ; } +.v-draggable { + -moz-user-select: none !important; + -ms-user-select: none !important; + -webkit-user-select: none !important; + user-select: none !important; +} + .v-tooltip { background-color: rgba(50, 50, 50, 0.9); -webkit-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2); @@ -1766,6 +1848,11 @@ a.v-disabled { color: inherit; } +.v-tooltip pre.v-tooltip-pre { + font: inherit; + white-space: pre-wrap; +} + .v-contextmenu { padding: 4px 4px; border-radius: 4px; @@ -2895,6 +2982,7 @@ a.v-disabled { width: 37px; line-height: 1; padding-top: 0.12em; + margin-left: 9px; } .v-filterselect[class*="prompt"] > [class*="input"] { @@ -3318,6 +3406,7 @@ a.v-disabled { width: 28px; line-height: 1; padding-top: 0.12em; + margin-left: 5px; } .v-filterselect-tiny [class$="button"] { @@ -3437,6 +3526,7 @@ a.v-disabled { width: 31px; line-height: 1; padding-top: 0.12em; + margin-left: 6px; } .v-filterselect-compact [class$="button"], .v-filterselect-small [class$="button"] { @@ -3561,6 +3651,7 @@ a.v-disabled { width: 44px; line-height: 1; padding-top: 0.12em; + margin-left: 8px; } .v-filterselect-large [class$="button"] { @@ -3681,6 +3772,7 @@ a.v-disabled { width: 59px; line-height: 1; padding-top: 0.12em; + margin-left: 10px; } .v-filterselect-huge [class$="button"] { @@ -4335,6 +4427,10 @@ a.v-disabled { border-left: none; } +.v-grid-cell div.component-wrap { + width: 100%; +} + .v-grid-row > td, .v-grid-editor-cells > div { border-left: 1px solid #d4d4d4; border-bottom: 1px solid #d4d4d4; @@ -4879,6 +4975,76 @@ a.v-disabled { min-width: 30px; } +.v-grid-row-drag-badge { + background-color: red; + color: white; + display: block; + width: 30px; + height: 30px; + border-radius: 10px; + line-height: 30px; + text-align: center; + float: left; +} + +.v-grid-row-drag-top, .v-grid-row-drag-bottom { + z-index: 100; +} + +.v-grid-row-drag-top:before, .v-grid-row-drag-bottom:after { + content: ""; + display: block; + position: absolute; + height: 2px; + width: 100%; + background: #197de1; + pointer-events: none; + border: none; +} + +.v-grid-row-drag-bottom:after { + bottom: -1px; +} + +.v-grid-row-drag-top:before { + top: -1px; +} + +.v-grid-row-drag-top:first-child:before { + top: 0; +} + +.v-grid-row-drag-center:after { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 2px; + border: 2px solid #197de1; + pointer-events: none; +} + +.v-grid-row-selected.v-grid-row-drag-center:after { + border-color: #1463b3; +} + +.v-grid-row-selected.v-grid-row-drag-top:before, .v-grid-row-selected.v-grid-row-drag-bottom:after { + background: #1463b3; +} + +.v-grid-body-drag-top:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + pointer-events: none; + border: 2px solid #197de1; + z-index: 100; +} + .v-textfield { -webkit-appearance: none; -moz-appearance: none; @@ -8004,6 +8170,13 @@ td.v-inline-datefield-calendarpanel-time .v-label { } .v-link a { + cursor: pointer; + color: #197de1; + text-decoration: underline; + font-weight: inherit; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; cursor: inherit; color: inherit; text-decoration: inherit; @@ -8012,6 +8185,15 @@ td.v-inline-datefield-calendarpanel-time .v-label { transition: inherit; } +.v-link a:hover { + color: #4396ea; +} + +.v-link a.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + .v-link .v-icon { cursor: inherit; } @@ -8515,6 +8697,2079 @@ td.v-inline-datefield-calendarpanel-time .v-label { line-height: 1px; } +.v-tree8 { + position: relative; +} + +.v-tree8-scroller { + position: absolute; + z-index: 1; + outline: none; + box-sizing: border-box; +} + +.v-tree8-scroller-horizontal { + left: 0; + right: 0; + bottom: 0; + overflow-y: hidden; + -ms-overflow-y: hidden; +} + +.v-tree8-scroller-vertical { + right: 0; + top: 0; + bottom: 0; + overflow-x: hidden; + -ms-overflow-x: hidden; +} + +.v-tree8-tablewrapper { + position: absolute; + overflow: hidden; + box-sizing: border-box; + z-index: 5; +} + +.v-tree8-tablewrapper > table { + border-spacing: 0; + table-layout: fixed; + width: inherit; +} + +.v-tree8-header-deco, .v-tree8-footer-deco { + position: absolute; + right: 0; + box-sizing: border-box; +} + +.v-tree8-horizontal-scrollbar-deco { + position: absolute; + bottom: 0; + left: 0; + right: 0; + box-sizing: border-box; +} + +.v-tree8-header, .v-tree8-body, .v-tree8-footer { + position: absolute; + left: 0; + width: inherit; + z-index: 10; +} + +.v-tree8-header, .v-tree8-header-deco { + top: 0; +} + +.v-tree8-footer, .v-tree8-footer-deco { + bottom: 0; +} + +.v-tree8-body { + -ms-touch-action: none; + touch-action: none; + z-index: 0; + top: 0; +} + +.v-tree8-body .v-tree8-row { + position: absolute; + top: 0; + left: 0; +} + +.v-tree8-row { + display: block; +} + +.v-tree8-row > td, .v-tree8-row > th { + background-color: white; +} + +.v-tree8-row { + width: inherit; +} + +.v-tree8-cell { + display: block; + float: left; + padding: 2px; + white-space: nowrap; + box-sizing: border-box; + overflow: hidden; + font-size: 16px; +} + +.v-tree8-cell.frozen { + position: relative; + z-index: 1; +} + +.v-tree8-spacer { + position: absolute; + display: block; + background-color: white; +} + +.v-tree8-spacer > td { + width: 100%; + height: 100%; + box-sizing: border-box; +} + +.v-tree8 { + outline: none; +} + +.v-tree8-scroller-vertical, .v-tree8-scroller-horizontal { + border: 1px solid #d4d4d4; +} + +.v-tree8-scroller-vertical { + border-left: none; +} + +.v-tree8-scroller-horizontal { + border-top: none; +} + +.v-tree8-tablewrapper { + border: 1px solid #d4d4d4; +} + +.v-tree8 .header-drag-table { + border-spacing: 0; + position: relative; + table-layout: fixed; + width: inherit; +} + +.v-tree8 .header-drag-table .v-tree8-header { + position: absolute; +} + +.v-tree8 .header-drag-table .v-tree8-header > .v-tree8-cell { + border: 1px solid #d4d4d4; + margin-top: -10px; + opacity: 0.9; + filter: alpha(opacity=90); + z-index: 30000; +} + +.v-tree8 .header-drag-table .v-tree8-header > .v-tree8-drop-marker { + background-color: #197de1; + position: absolute; + width: 3px; +} + +.v-tree8-sidebar.v-contextmenu { + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; + position: absolute; + top: 0; + right: 0; + background-color: #fafafa; + border: 1px solid #d4d4d4; + padding: 0; + z-index: 5; +} + +.v-tree8-sidebar.v-contextmenu.v-tree8-sidebar-popup { + right: auto; +} + +.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-button { + background: transparent; + border: none; + color: inherit; + cursor: pointer; + outline: none; + padding: 0 4px; + text-align: right; + line-height: 1; +} + +.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-button[disabled] { + cursor: default; +} + +.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-button::-moz-focus-inner { + border: 0; +} + +.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-button:after { + content: "\f0c9"; + display: block; + font-family: ThemeIcons, sans-serif; + font-size: 14px; +} + +.v-tree8-sidebar.v-contextmenu.closed { + border-radius: 0; +} + +.v-tree8-sidebar.v-contextmenu.open .v-tree8-sidebar-button { + width: 100%; +} + +.v-tree8-sidebar.v-contextmenu.open .v-tree8-sidebar-button:after { + content: "\f0c9"; + font-size: 14px; + line-height: 1; +} + +.v-ie .v-tree8-sidebar.v-contextmenu.open .v-tree8-sidebar-button { + vertical-align: middle; +} + +.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-content { + padding: 4px 0; + overflow-y: auto; + overflow-x: hidden; +} + +.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-content .gwt-MenuBar .gwt-MenuItem .column-hiding-toggle { + text-shadow: none; +} + +.v-tree8-cell { + background-color: white; + padding: 0 18px; + line-height: 37px; + text-overflow: ellipsis; +} + +.v-tree8-cell > * { + line-height: 1.55; + vertical-align: middle; +} + +.v-tree8-cell > div { + display: inline-block; +} + +.v-tree8-cell.frozen { + -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + border-right: 1px solid #d4d4d4; +} + +.v-tree8-cell.frozen + th, .v-tree8-cell.frozen + td { + border-left: none; +} + +.v-tree8-cell div.component-wrap { + width: 100%; +} + +.v-tree8-row > td, .v-tree8-editor-cells > div { + border-left: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; +} + +.v-tree8-row > td:first-child, .v-tree8-editor-cells > div:first-child { + border-left: none; +} + +.v-tree8-editor-cells.frozen > div { + -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + border-right: 1px solid #d4d4d4; + border-left: none; +} + +.v-tree8-row-stripe > td { + background-color: #f5f5f5; +} + +.v-tree8-row-selected > td { + background: #197de1; +} + +.v-tree8-row-focused > td { + +} + +.v-tree8-header th { + position: relative; + background-color: #fafafa; + font-size: 14px; + font-weight: inherit; + border-left: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; + + text-align: left; +} + +.v-tree8-header th:first-child { + border-left: none; +} + +.v-tree8-header .sort-asc, .v-tree8-header .sort-desc { + padding-right: 35px; +} + +.v-tree8-header .sort-asc:after, .v-tree8-header .sort-desc:after { + font-family: ThemeIcons, sans-serif; + content: "\f0de" " " attr(sort-order); + position: absolute; + right: 18px; + font-size: 12px; +} + +.v-tree8-header .sort-desc:after { + content: "\f0dd" " " attr(sort-order); +} + +.v-tree8-column-resize-handle { + position: absolute; + width: 36px; + right: -18px; + top: 0px; + bottom: 0px; + cursor: col-resize; + z-index: 10; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.v-tree8-column-resize-simple-indicator { + position: absolute; + width: 3px; + top: 0px; + left: 18px; + z-index: 9001; + background: #fff; + box-shadow: 0px 0px 5px #000; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.v-tree8-footer td { + background-color: #fafafa; + font-size: 14px; + font-weight: inherit; + border-left: 1px solid #d4d4d4; + border-top: 1px solid #d4d4d4; + border-bottom: none; + +} + +.v-tree8-footer td:first-child { + border-left: none; +} + +.v-tree8-header .v-tree8-cell, .v-tree8-footer .v-tree8-cell { + overflow: visible; +} + +.v-tree8-column-header-content, .v-tree8-column-footer-content { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + line-height: 37px; + vertical-align: baseline; +} + +.v-tree8-header-deco { + border-top: 1px solid #d4d4d4; + border-right: 1px solid #d4d4d4; + background-color: #fafafa; +} + +.v-tree8-footer-deco { + border-bottom: 1px solid #d4d4d4; + border-right: 1px solid #d4d4d4; + background-color: #fafafa; +} + +.v-tree8-horizontal-scrollbar-deco { + background-color: #fafafa; + border: 1px solid #d4d4d4; + border-top: none; +} + +.v-tree8-cell-focused { + position: relative; +} + +.v-tree8-cell-focused:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border: 2px solid #197de1; + display: none; + pointer-events: none; +} + +.v-tree8:focus .v-tree8-cell-focused:before { + display: block; +} + +.v-tree8.v-disabled:focus .v-tree8-cell-focused:before { + display: none; +} + +.v-tree8-editor { + position: absolute; + z-index: 20; + overflow: hidden; + left: 0; + right: 0; + border: 1px solid #d4d4d4; + box-sizing: border-box; + -moz-box-sizing: border-box; + margin-top: -1px; + -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 9px rgba(0, 0, 0, 0.2); +} + +.v-tree8-editor.unbuffered .v-tree8-editor-footer { + width: 100%; +} + +.v-tree8-editor-cells { + position: relative; + white-space: nowrap; +} + +.v-tree8-editor-cells.frozen { + z-index: 2; +} + +.v-tree8-editor-cells > div { + display: inline-block; + box-sizing: border-box; + vertical-align: middle; + background: white; +} + +.v-tree8-editor-cells > div:first-child { + border-left: none; +} + +.v-tree8-editor-cells > div > * { + vertical-align: middle; + display: inline-block; +} + +.v-tree8-editor-cells > div .v-filterselect { + padding-left: 0; +} + +.v-tree8-editor-cells > div input[type="text"], .v-tree8-editor-cells > div input[type="text"].v-filterselect-input, .v-tree8-editor-cells > div input[type="password"] { + padding-left: 18px; +} + +.v-tree8-editor-cells > div input[type="text"]:not(.v-filterselect-input), .v-tree8-editor-cells > div input[type="password"] { + padding-right: 9px; +} + +.v-tree8-editor-cells > div input[type="checkbox"] { + margin-left: 18px; +} + +.v-tree8-editor-cells > div .v-textfield, .v-tree8-editor-cells > div .v-datefield, .v-tree8-editor-cells > div .v-filterselect { + min-width: 100%; + max-width: 100%; + min-height: 100%; + max-height: 100%; +} + +.v-tree8-editor-cells > div .v-select, .v-tree8-editor-cells > div .v-select-select { + min-width: 100%; + max-width: 100%; +} + +.v-tree8-editor-cells > div.not-editable.v-tree8-cell { + float: none; +} + +.v-tree8-editor-cells .error::before { + position: absolute; + display: block; + height: 0; + width: 0; + content: ""; + border-top: 5px solid red; + border-right: 5px solid transparent; +} + +.v-tree8-editor-cells .error, .v-tree8-editor-cells .error > input { + background-color: #fee; +} + +.v-tree8-editor-footer { + display: table; + height: 37px; + border-top: 1px solid #d4d4d4; + margin-top: -1px; + background: white; + padding: 0 5px; +} + +.v-tree8-editor-footer + .v-tree8-editor-cells > div { + border-bottom: none; + border-top: 1px solid #d4d4d4; +} + +.v-tree8-editor-footer:first-child { + border-top: none; + margin-top: 0; + border-bottom: 1px solid #d4d4d4; + margin-bottom: -1px; +} + +.v-tree8-editor-message, .v-tree8-editor-buttons { + display: table-cell; + white-space: nowrap; + vertical-align: middle; +} + +.v-tree8-editor-message { + width: 100%; + position: relative; +} + +.v-tree8-editor-message > div { + position: absolute; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + line-height: 37px; + top: 0; +} + +.v-tree8-editor-save { + margin-right: 4px; +} + +.v-tree8-spacer { + padding-left: 1px; +} + +.v-tree8-spacer > td { + display: block; + padding: 0; + background-color: white; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #d4d4d4; +} + +.v-tree8-spacer.stripe > td { + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + border-bottom: 1px solid #d4d4d4; +} + +.v-tree8-spacer-deco-container { + border-top: 1px solid transparent; + position: relative; + top: 0; + z-index: 5; +} + +.v-tree8-spacer-deco { + top: 0; + left: 0; + width: 2px; + background-color: #197de1; + position: absolute; + height: 100%; + pointer-events: none; +} + +.v-tree8-cell > .v-progressbar { + width: 100%; +} + +.v-tree8 { + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + background-color: #fafafa; +} + +.v-tree8.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.v-tree8-header .v-tree8-cell { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.v-tree8-header .v-tree8-cell.dragged { + opacity: 0.5; + filter: alpha(opacity=50) ; + -webkit-transition: opacity 0.3s ease-in-out; + -moz-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; +} + +.v-tree8-header .v-tree8-cell.dragged-column-header { + margin-top: -19px; +} + +.v-tree8-footer .v-tree8-cell { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.v-tree8-header-deco { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); +} + +.v-tree8-footer-deco, .v-tree8-horizontal-scrollbar-deco { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); +} + +.v-tree8-row-selected > .v-tree8-cell { + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + color: #c8dbed; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); + border-color: #1d69b4; +} + +.v-tree8-row-selected > .v-tree8-cell-focused:before { + border-color: #71b0ef; +} + +.v-tree8-editor { + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + border-color: #197de1; +} + +.v-tree8-editor-footer { + font-size: 14px; + padding: 0 6px; + background: #fafafa; + -webkit-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards; + -moz-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards; + animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards; +} + +.v-tree8-editor-footer:first-child { + -webkit-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards; + -moz-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards; + animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards; +} + +.v-tree8-editor-cells { + z-index: 1; +} + +.v-tree8-editor-cells > div:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.v-tree8-editor-cells > div.not-editable.v-tree8-cell { + float: none; +} + +.v-tree8-editor-cells > div .error::before { + border-top: 9px solid #ed473b; + border-right: 9px solid transparent; +} + +.v-tree8-editor-cells > div .error, .v-tree8-editor-cells > div .error > input { + background-color: #fffbfb; +} + +.v-tree8-editor-cells > div .v-textfield, .v-tree8-editor-cells > div .v-textfield-focus, .v-tree8-editor-cells > div .v-datefield, .v-tree8-editor-cells > div .v-datefield .v-textfield-focus, .v-tree8-editor-cells > div .v-filterselect-input, .v-tree8-editor-cells > div .v-filterselect-input:focus { + border: none; + border-radius: 0; + background: transparent; + -webkit-box-shadow: inset 0 1px 0 #f2f2f2; + box-shadow: inset 0 1px 0 #f2f2f2; +} + +.v-tree8-editor-cells > div input[type="text"].v-datefield-textfield { + padding-left: 44.4px; +} + +.v-tree8-editor-cells > div .v-textfield-focus, .v-tree8-editor-cells > div .v-datefield .v-textfield-focus, .v-tree8-editor-cells > div .v-filterselect-input:focus { + position: relative; +} + +.v-tree8-editor-cells > div .v-select { + padding-left: 9px; + padding-right: 9px; +} + +.v-tree8-editor-cells > div .v-checkbox { + margin: 0 9px 0 18px; +} + +.v-tree8-editor-cells > div .v-checkbox > input[type="checkbox"] { + margin-left: 0; +} + +.v-tree8-editor-cells > div .v-checkbox > label { + white-space: nowrap; +} + +.v-tree8-editor-message > div:before { + display: inline-block; + color: #ed473b; + font-weight: 600; + width: 19px; + text-align: center; + content: "!"; +} + +.v-tree8-editor-save, .v-tree8-editor-cancel { + cursor: pointer; + color: #197de1; + text-decoration: underline; + font-weight: inherit; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; + font-weight: 400; + text-decoration: none; + border: none; + background: transparent; + padding: 6px 6px; + margin: 0; + outline: none; +} + +.v-tree8-editor-save:hover, .v-tree8-editor-cancel:hover { + color: #4396ea; +} + +.v-tree8-editor-save.v-disabled, .v-tree8-editor-cancel.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.v-tree8-spacer { + margin-top: -1px; +} + +.v-tree8-sidebar.v-contextmenu.open .v-tree8-sidebar-content { + margin: 0 0 2px; + padding: 4px 4px 2px; + overflow-y: auto; + overflow-x: hidden; +} + +.v-tree8-sidebar.v-contextmenu.closed { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); +} + +.v-tree8-scroller::-webkit-scrollbar { + border: none; +} + +.v-tree8-scroller::-webkit-scrollbar-thumb { + border-radius: 10px; + border: 4px solid transparent; + background: rgba(0, 0, 0, 0.3); + -webkit-background-clip: content-box; + background-clip: content-box; +} + +.v-tree8-scroller-vertical::-webkit-scrollbar-thumb { + min-height: 30px; +} + +.v-tree8-scroller-horizontal::-webkit-scrollbar-thumb { + min-width: 30px; +} + +.v-tree8-row-drag-badge { + background-color: red; + color: white; + display: block; + width: 30px; + height: 30px; + border-radius: 10px; + line-height: 30px; + text-align: center; + float: left; +} + +.v-tree8-row-drag-top, .v-tree8-row-drag-bottom { + z-index: 100; +} + +.v-tree8-row-drag-top:before, .v-tree8-row-drag-bottom:after { + content: ""; + display: block; + position: absolute; + height: 2px; + width: 100%; + background: #197de1; + pointer-events: none; + border: none; +} + +.v-tree8-row-drag-bottom:after { + bottom: -1px; +} + +.v-tree8-row-drag-top:before { + top: -1px; +} + +.v-tree8-row-drag-top:first-child:before { + top: 0; +} + +.v-tree8-row-drag-center:after { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 2px; + border: 2px solid #197de1; + pointer-events: none; +} + +.v-tree8-row-selected.v-tree8-row-drag-center:after { + border-color: #1463b3; +} + +.v-tree8-row-selected.v-tree8-row-drag-top:before, .v-tree8-row-selected.v-tree8-row-drag-bottom:after { + background: #1463b3; +} + +.v-tree8-body-drag-top:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + pointer-events: none; + border: 2px solid #197de1; + z-index: 100; +} + +.v-tree8-expander { + display: inline-block; + vertical-align: top; +} + +.v-tree8-expander::before { + display: inline-block; + width: 1.5em; + text-align: center; + content: ""; +} + +.v-tree8-expander.expanded::before { + content: "\f0d7"; + font-family: ThemeIcons; +} + +.v-tree8-expander.collapsed::before { + content: "\f0da"; + font-family: ThemeIcons; +} + +.v-tree8-expander.collapse-disabled::before { + opacity: 0.5; + filter: alpha(opacity=50) ; + cursor: default; +} + +.v-tree8-node.depth-0 { + padding-left: 0em; +} + +.v-tree8-node.depth-1 { + padding-left: 1em; +} + +.v-tree8-node.depth-2 { + padding-left: 2em; +} + +.v-tree8-node.depth-3 { + padding-left: 3em; +} + +.v-tree8-node.depth-4 { + padding-left: 4em; +} + +.v-tree8-node.depth-5 { + padding-left: 5em; +} + +.v-tree8-node.depth-6 { + padding-left: 6em; +} + +.v-tree8-node.depth-7 { + padding-left: 7em; +} + +.v-tree8-node.depth-8 { + padding-left: 8em; +} + +.v-tree8-node.depth-9 { + padding-left: 9em; +} + +.v-tree8-node.depth-10 { + padding-left: 10em; +} + +.v-tree8-node.depth-11 { + padding-left: 11em; +} + +.v-tree8-node.depth-12 { + padding-left: 12em; +} + +.v-tree8-node.depth-13 { + padding-left: 13em; +} + +.v-tree8-node.depth-14 { + padding-left: 14em; +} + +.v-tree8-node.depth-15 { + padding-left: 15em; +} + +.v-tree8-cell-content { + display: inline-block; + vertical-align: middle; +} + +.v-tree8-row-focused::before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border: 2px solid #197de1; + display: none; + pointer-events: none; +} + +.v-tree8-cell-focused { + position: static; +} + +.v-tree8-cell-focused::before { + display: none; +} + +.v-tree8:focus .v-tree8-row-focused::before { + display: block; +} + +.v-tree8.v-disabled:focus .v-tree8-row-focused::before { + display: none; +} + +.v-tree8:focus .v-tree8-cell-focused::before { + display: none; +} + +.v-tree8 { + background-color: transparent; +} + +.v-tree8-row > td { + background-color: transparent; + border: 0; + line-height: 28px; +} + +.v-tree8-row > td > * { + vertical-align: baseline; +} + +.v-tree8-tablewrapper { + background-color: transparent; + border: none; +} + +.v-tree8-row::before { + content: ""; + display: none; + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 100%; + height: 100%; + border-radius: 4px; + pointer-events: none; + border-width: 1px; +} + +.v-tree8-cell { + position: relative; +} + +.v-tree8-row-selected > .v-tree8-cell { + background: transparent; +} + +.v-tree8-row-selected::before { + display: block; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); +} + +.v-tree8:focus .v-tree8-row-selected.v-tree8-row-focused::before { + border-color: transparent; + box-shadow: inset 0 0 0 1px #c8dbed; +} + +.v-treegrid { + position: relative; +} + +.v-treegrid-scroller { + position: absolute; + z-index: 1; + outline: none; + box-sizing: border-box; +} + +.v-treegrid-scroller-horizontal { + left: 0; + right: 0; + bottom: 0; + overflow-y: hidden; + -ms-overflow-y: hidden; +} + +.v-treegrid-scroller-vertical { + right: 0; + top: 0; + bottom: 0; + overflow-x: hidden; + -ms-overflow-x: hidden; +} + +.v-treegrid-tablewrapper { + position: absolute; + overflow: hidden; + box-sizing: border-box; + z-index: 5; +} + +.v-treegrid-tablewrapper > table { + border-spacing: 0; + table-layout: fixed; + width: inherit; +} + +.v-treegrid-header-deco, .v-treegrid-footer-deco { + position: absolute; + right: 0; + box-sizing: border-box; +} + +.v-treegrid-horizontal-scrollbar-deco { + position: absolute; + bottom: 0; + left: 0; + right: 0; + box-sizing: border-box; +} + +.v-treegrid-header, .v-treegrid-body, .v-treegrid-footer { + position: absolute; + left: 0; + width: inherit; + z-index: 10; +} + +.v-treegrid-header, .v-treegrid-header-deco { + top: 0; +} + +.v-treegrid-footer, .v-treegrid-footer-deco { + bottom: 0; +} + +.v-treegrid-body { + -ms-touch-action: none; + touch-action: none; + z-index: 0; + top: 0; +} + +.v-treegrid-body .v-treegrid-row { + position: absolute; + top: 0; + left: 0; +} + +.v-treegrid-row { + display: block; +} + +.v-treegrid-row > td, .v-treegrid-row > th { + background-color: white; +} + +.v-treegrid-row { + width: inherit; +} + +.v-treegrid-cell { + display: block; + float: left; + padding: 2px; + white-space: nowrap; + box-sizing: border-box; + overflow: hidden; + font-size: 16px; +} + +.v-treegrid-cell.frozen { + position: relative; + z-index: 1; +} + +.v-treegrid-spacer { + position: absolute; + display: block; + background-color: white; +} + +.v-treegrid-spacer > td { + width: 100%; + height: 100%; + box-sizing: border-box; +} + +.v-treegrid { + outline: none; +} + +.v-treegrid-scroller-vertical, .v-treegrid-scroller-horizontal { + border: 1px solid #d4d4d4; +} + +.v-treegrid-scroller-vertical { + border-left: none; +} + +.v-treegrid-scroller-horizontal { + border-top: none; +} + +.v-treegrid-tablewrapper { + border: 1px solid #d4d4d4; +} + +.v-treegrid .header-drag-table { + border-spacing: 0; + position: relative; + table-layout: fixed; + width: inherit; +} + +.v-treegrid .header-drag-table .v-treegrid-header { + position: absolute; +} + +.v-treegrid .header-drag-table .v-treegrid-header > .v-treegrid-cell { + border: 1px solid #d4d4d4; + margin-top: -10px; + opacity: 0.9; + filter: alpha(opacity=90); + z-index: 30000; +} + +.v-treegrid .header-drag-table .v-treegrid-header > .v-treegrid-drop-marker { + background-color: #197de1; + position: absolute; + width: 3px; +} + +.v-treegrid-sidebar.v-contextmenu { + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; + position: absolute; + top: 0; + right: 0; + background-color: #fafafa; + border: 1px solid #d4d4d4; + padding: 0; + z-index: 5; +} + +.v-treegrid-sidebar.v-contextmenu.v-treegrid-sidebar-popup { + right: auto; +} + +.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-button { + background: transparent; + border: none; + color: inherit; + cursor: pointer; + outline: none; + padding: 0 4px; + text-align: right; + line-height: 1; +} + +.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-button[disabled] { + cursor: default; +} + +.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-button::-moz-focus-inner { + border: 0; +} + +.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-button:after { + content: "\f0c9"; + display: block; + font-family: ThemeIcons, sans-serif; + font-size: 14px; +} + +.v-treegrid-sidebar.v-contextmenu.closed { + border-radius: 0; +} + +.v-treegrid-sidebar.v-contextmenu.open .v-treegrid-sidebar-button { + width: 100%; +} + +.v-treegrid-sidebar.v-contextmenu.open .v-treegrid-sidebar-button:after { + content: "\f0c9"; + font-size: 14px; + line-height: 1; +} + +.v-ie .v-treegrid-sidebar.v-contextmenu.open .v-treegrid-sidebar-button { + vertical-align: middle; +} + +.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-content { + padding: 4px 0; + overflow-y: auto; + overflow-x: hidden; +} + +.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-content .gwt-MenuBar .gwt-MenuItem .column-hiding-toggle { + text-shadow: none; +} + +.v-treegrid-cell { + background-color: white; + padding: 0 18px; + line-height: 37px; + text-overflow: ellipsis; +} + +.v-treegrid-cell > * { + line-height: 1.55; + vertical-align: middle; +} + +.v-treegrid-cell > div { + display: inline-block; +} + +.v-treegrid-cell.frozen { + -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + border-right: 1px solid #d4d4d4; +} + +.v-treegrid-cell.frozen + th, .v-treegrid-cell.frozen + td { + border-left: none; +} + +.v-treegrid-cell div.component-wrap { + width: 100%; +} + +.v-treegrid-row > td, .v-treegrid-editor-cells > div { + border-left: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; +} + +.v-treegrid-row > td:first-child, .v-treegrid-editor-cells > div:first-child { + border-left: none; +} + +.v-treegrid-editor-cells.frozen > div { + -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + border-right: 1px solid #d4d4d4; + border-left: none; +} + +.v-treegrid-row-stripe > td { + background-color: #f5f5f5; +} + +.v-treegrid-row-selected > td { + background: #197de1; +} + +.v-treegrid-row-focused > td { + +} + +.v-treegrid-header th { + position: relative; + background-color: #fafafa; + font-size: 14px; + font-weight: inherit; + border-left: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; + + text-align: left; +} + +.v-treegrid-header th:first-child { + border-left: none; +} + +.v-treegrid-header .sort-asc, .v-treegrid-header .sort-desc { + padding-right: 35px; +} + +.v-treegrid-header .sort-asc:after, .v-treegrid-header .sort-desc:after { + font-family: ThemeIcons, sans-serif; + content: "\f0de" " " attr(sort-order); + position: absolute; + right: 18px; + font-size: 12px; +} + +.v-treegrid-header .sort-desc:after { + content: "\f0dd" " " attr(sort-order); +} + +.v-treegrid-column-resize-handle { + position: absolute; + width: 36px; + right: -18px; + top: 0px; + bottom: 0px; + cursor: col-resize; + z-index: 10; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.v-treegrid-column-resize-simple-indicator { + position: absolute; + width: 3px; + top: 0px; + left: 18px; + z-index: 9001; + background: #fff; + box-shadow: 0px 0px 5px #000; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.v-treegrid-footer td { + background-color: #fafafa; + font-size: 14px; + font-weight: inherit; + border-left: 1px solid #d4d4d4; + border-top: 1px solid #d4d4d4; + border-bottom: none; + +} + +.v-treegrid-footer td:first-child { + border-left: none; +} + +.v-treegrid-header .v-treegrid-cell, .v-treegrid-footer .v-treegrid-cell { + overflow: visible; +} + +.v-treegrid-column-header-content, .v-treegrid-column-footer-content { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + line-height: 37px; + vertical-align: baseline; +} + +.v-treegrid-header-deco { + border-top: 1px solid #d4d4d4; + border-right: 1px solid #d4d4d4; + background-color: #fafafa; +} + +.v-treegrid-footer-deco { + border-bottom: 1px solid #d4d4d4; + border-right: 1px solid #d4d4d4; + background-color: #fafafa; +} + +.v-treegrid-horizontal-scrollbar-deco { + background-color: #fafafa; + border: 1px solid #d4d4d4; + border-top: none; +} + +.v-treegrid-cell-focused { + position: relative; +} + +.v-treegrid-cell-focused:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border: 2px solid #197de1; + display: none; + pointer-events: none; +} + +.v-treegrid:focus .v-treegrid-cell-focused:before { + display: block; +} + +.v-treegrid.v-disabled:focus .v-treegrid-cell-focused:before { + display: none; +} + +.v-treegrid-editor { + position: absolute; + z-index: 20; + overflow: hidden; + left: 0; + right: 0; + border: 1px solid #d4d4d4; + box-sizing: border-box; + -moz-box-sizing: border-box; + margin-top: -1px; + -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 9px rgba(0, 0, 0, 0.2); +} + +.v-treegrid-editor.unbuffered .v-treegrid-editor-footer { + width: 100%; +} + +.v-treegrid-editor-cells { + position: relative; + white-space: nowrap; +} + +.v-treegrid-editor-cells.frozen { + z-index: 2; +} + +.v-treegrid-editor-cells > div { + display: inline-block; + box-sizing: border-box; + vertical-align: middle; + background: white; +} + +.v-treegrid-editor-cells > div:first-child { + border-left: none; +} + +.v-treegrid-editor-cells > div > * { + vertical-align: middle; + display: inline-block; +} + +.v-treegrid-editor-cells > div .v-filterselect { + padding-left: 0; +} + +.v-treegrid-editor-cells > div input[type="text"], .v-treegrid-editor-cells > div input[type="text"].v-filterselect-input, .v-treegrid-editor-cells > div input[type="password"] { + padding-left: 18px; +} + +.v-treegrid-editor-cells > div input[type="text"]:not(.v-filterselect-input), .v-treegrid-editor-cells > div input[type="password"] { + padding-right: 9px; +} + +.v-treegrid-editor-cells > div input[type="checkbox"] { + margin-left: 18px; +} + +.v-treegrid-editor-cells > div .v-textfield, .v-treegrid-editor-cells > div .v-datefield, .v-treegrid-editor-cells > div .v-filterselect { + min-width: 100%; + max-width: 100%; + min-height: 100%; + max-height: 100%; +} + +.v-treegrid-editor-cells > div .v-select, .v-treegrid-editor-cells > div .v-select-select { + min-width: 100%; + max-width: 100%; +} + +.v-treegrid-editor-cells > div.not-editable.v-treegrid-cell { + float: none; +} + +.v-treegrid-editor-cells .error::before { + position: absolute; + display: block; + height: 0; + width: 0; + content: ""; + border-top: 5px solid red; + border-right: 5px solid transparent; +} + +.v-treegrid-editor-cells .error, .v-treegrid-editor-cells .error > input { + background-color: #fee; +} + +.v-treegrid-editor-footer { + display: table; + height: 37px; + border-top: 1px solid #d4d4d4; + margin-top: -1px; + background: white; + padding: 0 5px; +} + +.v-treegrid-editor-footer + .v-treegrid-editor-cells > div { + border-bottom: none; + border-top: 1px solid #d4d4d4; +} + +.v-treegrid-editor-footer:first-child { + border-top: none; + margin-top: 0; + border-bottom: 1px solid #d4d4d4; + margin-bottom: -1px; +} + +.v-treegrid-editor-message, .v-treegrid-editor-buttons { + display: table-cell; + white-space: nowrap; + vertical-align: middle; +} + +.v-treegrid-editor-message { + width: 100%; + position: relative; +} + +.v-treegrid-editor-message > div { + position: absolute; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + line-height: 37px; + top: 0; +} + +.v-treegrid-editor-save { + margin-right: 4px; +} + +.v-treegrid-spacer { + padding-left: 1px; +} + +.v-treegrid-spacer > td { + display: block; + padding: 0; + background-color: white; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #d4d4d4; +} + +.v-treegrid-spacer.stripe > td { + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + border-bottom: 1px solid #d4d4d4; +} + +.v-treegrid-spacer-deco-container { + border-top: 1px solid transparent; + position: relative; + top: 0; + z-index: 5; +} + +.v-treegrid-spacer-deco { + top: 0; + left: 0; + width: 2px; + background-color: #197de1; + position: absolute; + height: 100%; + pointer-events: none; +} + +.v-treegrid-cell > .v-progressbar { + width: 100%; +} + +.v-treegrid { + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + background-color: #fafafa; +} + +.v-treegrid.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.v-treegrid-header .v-treegrid-cell { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.v-treegrid-header .v-treegrid-cell.dragged { + opacity: 0.5; + filter: alpha(opacity=50) ; + -webkit-transition: opacity 0.3s ease-in-out; + -moz-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; +} + +.v-treegrid-header .v-treegrid-cell.dragged-column-header { + margin-top: -19px; +} + +.v-treegrid-footer .v-treegrid-cell { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.v-treegrid-header-deco { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); +} + +.v-treegrid-footer-deco, .v-treegrid-horizontal-scrollbar-deco { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); +} + +.v-treegrid-row-selected > .v-treegrid-cell { + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + color: #c8dbed; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); + border-color: #1d69b4; +} + +.v-treegrid-row-selected > .v-treegrid-cell-focused:before { + border-color: #71b0ef; +} + +.v-treegrid-editor { + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + border-color: #197de1; +} + +.v-treegrid-editor-footer { + font-size: 14px; + padding: 0 6px; + background: #fafafa; + -webkit-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards; + -moz-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards; + animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards; +} + +.v-treegrid-editor-footer:first-child { + -webkit-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards; + -moz-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards; + animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards; +} + +.v-treegrid-editor-cells { + z-index: 1; +} + +.v-treegrid-editor-cells > div:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.v-treegrid-editor-cells > div.not-editable.v-treegrid-cell { + float: none; +} + +.v-treegrid-editor-cells > div .error::before { + border-top: 9px solid #ed473b; + border-right: 9px solid transparent; +} + +.v-treegrid-editor-cells > div .error, .v-treegrid-editor-cells > div .error > input { + background-color: #fffbfb; +} + +.v-treegrid-editor-cells > div .v-textfield, .v-treegrid-editor-cells > div .v-textfield-focus, .v-treegrid-editor-cells > div .v-datefield, .v-treegrid-editor-cells > div .v-datefield .v-textfield-focus, .v-treegrid-editor-cells > div .v-filterselect-input, .v-treegrid-editor-cells > div .v-filterselect-input:focus { + border: none; + border-radius: 0; + background: transparent; + -webkit-box-shadow: inset 0 1px 0 #f2f2f2; + box-shadow: inset 0 1px 0 #f2f2f2; +} + +.v-treegrid-editor-cells > div input[type="text"].v-datefield-textfield { + padding-left: 44.4px; +} + +.v-treegrid-editor-cells > div .v-textfield-focus, .v-treegrid-editor-cells > div .v-datefield .v-textfield-focus, .v-treegrid-editor-cells > div .v-filterselect-input:focus { + position: relative; +} + +.v-treegrid-editor-cells > div .v-select { + padding-left: 9px; + padding-right: 9px; +} + +.v-treegrid-editor-cells > div .v-checkbox { + margin: 0 9px 0 18px; +} + +.v-treegrid-editor-cells > div .v-checkbox > input[type="checkbox"] { + margin-left: 0; +} + +.v-treegrid-editor-cells > div .v-checkbox > label { + white-space: nowrap; +} + +.v-treegrid-editor-message > div:before { + display: inline-block; + color: #ed473b; + font-weight: 600; + width: 19px; + text-align: center; + content: "!"; +} + +.v-treegrid-editor-save, .v-treegrid-editor-cancel { + cursor: pointer; + color: #197de1; + text-decoration: underline; + font-weight: inherit; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; + font-weight: 400; + text-decoration: none; + border: none; + background: transparent; + padding: 6px 6px; + margin: 0; + outline: none; +} + +.v-treegrid-editor-save:hover, .v-treegrid-editor-cancel:hover { + color: #4396ea; +} + +.v-treegrid-editor-save.v-disabled, .v-treegrid-editor-cancel.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.v-treegrid-spacer { + margin-top: -1px; +} + +.v-treegrid-sidebar.v-contextmenu.open .v-treegrid-sidebar-content { + margin: 0 0 2px; + padding: 4px 4px 2px; + overflow-y: auto; + overflow-x: hidden; +} + +.v-treegrid-sidebar.v-contextmenu.closed { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); +} + +.v-treegrid-scroller::-webkit-scrollbar { + border: none; +} + +.v-treegrid-scroller::-webkit-scrollbar-thumb { + border-radius: 10px; + border: 4px solid transparent; + background: rgba(0, 0, 0, 0.3); + -webkit-background-clip: content-box; + background-clip: content-box; +} + +.v-treegrid-scroller-vertical::-webkit-scrollbar-thumb { + min-height: 30px; +} + +.v-treegrid-scroller-horizontal::-webkit-scrollbar-thumb { + min-width: 30px; +} + +.v-treegrid-row-drag-badge { + background-color: red; + color: white; + display: block; + width: 30px; + height: 30px; + border-radius: 10px; + line-height: 30px; + text-align: center; + float: left; +} + +.v-treegrid-row-drag-top, .v-treegrid-row-drag-bottom { + z-index: 100; +} + +.v-treegrid-row-drag-top:before, .v-treegrid-row-drag-bottom:after { + content: ""; + display: block; + position: absolute; + height: 2px; + width: 100%; + background: #197de1; + pointer-events: none; + border: none; +} + +.v-treegrid-row-drag-bottom:after { + bottom: -1px; +} + +.v-treegrid-row-drag-top:before { + top: -1px; +} + +.v-treegrid-row-drag-top:first-child:before { + top: 0; +} + +.v-treegrid-row-drag-center:after { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 2px; + border: 2px solid #197de1; + pointer-events: none; +} + +.v-treegrid-row-selected.v-treegrid-row-drag-center:after { + border-color: #1463b3; +} + +.v-treegrid-row-selected.v-treegrid-row-drag-top:before, .v-treegrid-row-selected.v-treegrid-row-drag-bottom:after { + background: #1463b3; +} + +.v-treegrid-body-drag-top:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + pointer-events: none; + border: 2px solid #197de1; + z-index: 100; +} + +.v-treegrid-expander { + display: inline-block; + vertical-align: top; +} + +.v-treegrid-expander::before { + display: inline-block; + width: 1.5em; + text-align: center; + content: ""; +} + +.v-treegrid-expander.expanded::before { + content: "\f0d7"; + font-family: ThemeIcons; +} + +.v-treegrid-expander.collapsed::before { + content: "\f0da"; + font-family: ThemeIcons; +} + +.v-treegrid-expander.collapse-disabled::before { + opacity: 0.5; + filter: alpha(opacity=50) ; + cursor: default; +} + +.v-treegrid-node.depth-0 { + padding-left: 0em; +} + +.v-treegrid-node.depth-1 { + padding-left: 1em; +} + +.v-treegrid-node.depth-2 { + padding-left: 2em; +} + +.v-treegrid-node.depth-3 { + padding-left: 3em; +} + +.v-treegrid-node.depth-4 { + padding-left: 4em; +} + +.v-treegrid-node.depth-5 { + padding-left: 5em; +} + +.v-treegrid-node.depth-6 { + padding-left: 6em; +} + +.v-treegrid-node.depth-7 { + padding-left: 7em; +} + +.v-treegrid-node.depth-8 { + padding-left: 8em; +} + +.v-treegrid-node.depth-9 { + padding-left: 9em; +} + +.v-treegrid-node.depth-10 { + padding-left: 10em; +} + +.v-treegrid-node.depth-11 { + padding-left: 11em; +} + +.v-treegrid-node.depth-12 { + padding-left: 12em; +} + +.v-treegrid-node.depth-13 { + padding-left: 13em; +} + +.v-treegrid-node.depth-14 { + padding-left: 14em; +} + +.v-treegrid-node.depth-15 { + padding-left: 15em; +} + +.v-treegrid-cell-content { + display: inline-block; + vertical-align: middle; +} + +.v-treegrid-row-focused::before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border: 2px solid #197de1; + display: none; + pointer-events: none; +} + +.v-treegrid-cell-focused { + position: static; +} + +.v-treegrid-cell-focused::before { + display: none; +} + +.v-treegrid:focus .v-treegrid-row-focused::before { + display: block; +} + +.v-treegrid.v-disabled:focus .v-treegrid-row-focused::before { + display: none; +} + +.v-treegrid:focus .v-treegrid-cell-focused::before { + display: none; +} + .v-table { position: relative; background: #fafafa; @@ -11173,6 +13428,12 @@ h1.no-margin, .v-label-h1.no-margin, h2.no-margin, .v-label-h2.no-margin, h3.no- content: none; } +button { + font: inherit; + font-weight: 400; + line-height: 1.55; +} + .v-nativebutton { -webkit-touch-callout: none; } diff --git a/pom.xml b/pom.xml index 059843651..1aeffeaf5 100644 --- a/pom.xml +++ b/pom.xml @@ -255,7 +255,7 @@ com.vaadin vaadin-maven-plugin - 8.0.6 + 8.1.0 @@ -401,26 +401,6 @@ - - com.vaadin - vaadin-compatibility-client-compiled - 8.0.6 - - - com.vaadin - vaadin-compatibility-server - 8.0.6 - - - com.vaadin - vaadin-compatibility-shared - 8.0.6 - - - com.vaadin - vaadin-compatibility-themes - 8.0.6 - com.vaadin vaadin-cdi @@ -429,12 +409,12 @@ com.vaadin vaadin-client-compiled - 8.0.6 + 8.1.0 com.vaadin vaadin-themes - 8.0.6 + 8.1.0