diff --git a/PanoramicData.Blazor.Demo/Pages/PDFileExplorerDocumentation.razor b/PanoramicData.Blazor.Demo/Pages/PDFileExplorerDocumentation.razor
index 7d0f9bbe6..a0ba2c231 100644
--- a/PanoramicData.Blazor.Demo/Pages/PDFileExplorerDocumentation.razor
+++ b/PanoramicData.Blazor.Demo/Pages/PDFileExplorerDocumentation.razor
@@ -55,6 +55,14 @@
+
+ Styling
+
+ A line separates the toolbar from the folders and files below it. It is drawn with --pd-file-explorer-toolbar-border,
+ which defaults to 1px solid var(--bs-border-color). Set it to none to leave the line out.
+
+
+
Methods
diff --git a/PanoramicData.Blazor.Demo/Pages/PDFileModalsDocumentation.razor b/PanoramicData.Blazor.Demo/Pages/PDFileModalsDocumentation.razor
index 0461bf0d7..370e75046 100644
--- a/PanoramicData.Blazor.Demo/Pages/PDFileModalsDocumentation.razor
+++ b/PanoramicData.Blazor.Demo/Pages/PDFileModalsDocumentation.razor
@@ -9,6 +9,8 @@
| Parameter | Type | Description |
DataProvider | IFileExplorerDataProvider | File system provider |
+ ButtonSize | ButtonSizes | Size of every button in the dialog: the explorer's toolbar, the foot of the dialog and its overwrite confirmation. Defaults to Medium |
+ CancelButtonIconCssClass | string | Icon on the Cancel button, and on No when asked whether to overwrite. Defaults to fas fa-fw fa-times |
diff --git a/PanoramicData.Blazor.Demo/Pages/PDFileModalsPage.razor b/PanoramicData.Blazor.Demo/Pages/PDFileModalsPage.razor
index e1a143d9d..2e7cce6e0 100644
--- a/PanoramicData.Blazor.Demo/Pages/PDFileModalsPage.razor
+++ b/PanoramicData.Blazor.Demo/Pages/PDFileModalsPage.razor
@@ -60,7 +60,8 @@
Customised Button Text and Icons
Use OpenButtonText, OpenButtonIconCssClass, SaveButtonText, and SaveButtonIconCssClass
- to replace the default button labels and icons.
+ to replace the default button labels and icons, CancelButtonIconCssClass for the Cancel and No buttons' icon,
+ and ButtonSize for the size of every button, the toolbar's included. Below, every button is small and Cancel shows a circled cross.
Verifies that, unless chosen otherwise, the buttons stay medium sized and Cancel keeps its cross.
+ [Fact]
+ public async Task Buttons_are_medium_with_a_cross_on_cancel_by_default()
+ {
+ var component = RenderModal();
+
+ await ShowOpenAsync(component);
+
+ FooterButton(component, "Cancel").ClassList.Should().NotContain("btn-sm");
+ FooterButton(component, "Cancel").QuerySelector(".fa-times").Should().NotBeNull();
+ }
+
+ /// Verifies that the button size reaches every button, toolbar included, and the dismissing icon reaches Cancel and the overwrite confirmation's No.
+ [Fact]
+ public async Task Button_size_and_the_dismissing_icon_can_be_replaced()
+ {
+ var component = RenderModal(p => p
+ .Add(x => x.ButtonSize, ButtonSizes.Small)
+ .Add(x => x.CancelButtonIconCssClass, "fa-regular fa-fw fa-circle-xmark")
+ .Add(x => x.ShowToolbar, true));
+
+ await ShowOpenAsync(component);
+
+ component.Find(".pdfe-toolbar #pd-tbr-btn-refresh").ClassList.Should().Contain("btn-sm");
+ OkButton(component).ClassList.Should().Contain("btn-sm");
+ FooterButton(component, "Cancel").ClassList.Should().Contain("btn-sm");
+ FooterButton(component, "Cancel").QuerySelector(".fa-circle-xmark").Should().NotBeNull();
+ ConfirmButton(component, "No").ClassList.Should().Contain("btn-sm");
+ ConfirmButton(component, "No").QuerySelector(".fa-circle-xmark").Should().NotBeNull();
+ }
+
/// Verifies that refreshing asks the data provider for the folder contents again.
[Fact]
public async Task Refreshing_requests_the_contents_again()
diff --git a/PanoramicData.Blazor/PDFileExplorer.razor.css b/PanoramicData.Blazor/PDFileExplorer.razor.css
index 1132497c2..39f91baf5 100644
--- a/PanoramicData.Blazor/PDFileExplorer.razor.css
+++ b/PanoramicData.Blazor/PDFileExplorer.razor.css
@@ -21,8 +21,10 @@
font-style: italic;
}
+/* As tall as its buttons and their padding, with a line below; set --pd-file-explorer-toolbar-border to none to leave it out */
.pdfileexplorer .pdfe-toolbar {
- height: 50px;
+ flex: none;
+ border-bottom: var(--pd-file-explorer-toolbar-border, 1px solid var(--bs-border-color, #dee2e6));
}
.pdfileexplorer .preview-header {
diff --git a/PanoramicData.Blazor/PDFileModal.razor b/PanoramicData.Blazor/PDFileModal.razor
index d890bb67d..65a6ede96 100644
--- a/PanoramicData.Blazor/PDFileModal.razor
+++ b/PanoramicData.Blazor/PDFileModal.razor
@@ -1,13 +1,16 @@
Are you sure you wish to overwrite '@_filenameTextbox.Value'?
diff --git a/PanoramicData.Blazor/PDFileModal.razor.cs b/PanoramicData.Blazor/PDFileModal.razor.cs
index f1467defb..60ab969b1 100644
--- a/PanoramicData.Blazor/PDFileModal.razor.cs
+++ b/PanoramicData.Blazor/PDFileModal.razor.cs
@@ -106,6 +106,16 @@ public partial class PDFileModal
///
[Parameter] public ModalSizes Size { get; set; } = ModalSizes.Large;
+ ///
+ /// Gets or sets the size of every button in the dialog: the explorer's toolbar, the foot of the modal and its overwrite confirmation.
+ ///
+ [Parameter] public ButtonSizes ButtonSize { get; set; } = ButtonSizes.Medium;
+
+ ///
+ /// Gets or sets the icon on the buttons that dismiss the dialog: Cancel, and No when asked whether to overwrite.
+ ///
+ [Parameter] public string CancelButtonIconCssClass { get; set; } = "fas fa-fw fa-times";
+
///
/// Gets or sets whether the modal should hide when the background is clicked.
///
@@ -169,6 +179,13 @@ protected override void OnInitialized()
_filenameTextbox.Keypress = OnFilenameKeypress;
}
+ ///
+ protected override void OnParametersSet()
+ {
+ _cancelButton.IconCssClass = CancelButtonIconCssClass;
+ _noButton.IconCssClass = CancelButtonIconCssClass;
+ }
+
private string? GetItemIconCssClassInternal(FileExplorerItem item) => GetItemIconCssClass is null ? null : GetItemIconCssClass(item);
///
diff --git a/PanoramicData.Blazor/wwwroot/css/main.css b/PanoramicData.Blazor/wwwroot/css/main.css
index d24a83b6b..a8b5191e7 100644
--- a/PanoramicData.Blazor/wwwroot/css/main.css
+++ b/PanoramicData.Blazor/wwwroot/css/main.css
@@ -157,7 +157,7 @@
/* PDSplitter - the gutters are created by split.js */
.pdsplitter .gutter {
- background-color: var(--pd-splitter-gutter-bg, #eee);
+ background-color: var(--pd-splitter-gutter-bg, var(--bs-border-color, #eee));
transition: background-color 0.1s ease-out;
}
@@ -527,12 +527,22 @@
}
/* PDFileExplorer */
+/* The top folder sits a little below whatever is above the tree, rather than against it */
.pdfileexplorer.pdfileexplorer .pdtree {
height: 0;
+ box-sizing: border-box;
+ padding-top: 0.5rem;
}
+/* The top folder lines up with the toolbar's first button: the toolbar's padding, less the drop zone's 1px border */
+.pdfileexplorer.pdfileexplorer .pdtree > .pdtreenode {
+ padding-left: calc(0.5rem - 1px);
+}
+
+/* The splitter takes the height the toolbar leaves */
.pdfileexplorer.pdfileexplorer .pdsplitter.horizontal {
- height: calc(100% - 50px);
+ flex: 1 1 0;
+ min-height: 0;
}
.pdfileexplorer.pdfileexplorer.pdfe-no-toolbar .pdsplitter.horizontal {
@@ -555,14 +565,26 @@
}
/* PDFileModal */
+/* The dialog's body has no padding (p-0), so the toolbar's own spacing is the only spacing and the panes run edge to edge */
.pdfilemodalexplorer.pdfilemodalexplorer .pdfileexplorer {
height: 100%;
+ padding-bottom: 0;
}
.pdfilemodalexplorer.pdfilemodalexplorer .pdsplitter {
flex-grow: 1;
}
+/* In the dialog the toolbar's buttons and the top folder line up with the title and the footer's buttons, 1rem in */
+.pdfilemodalexplorer.pdfilemodalexplorer .pdfe-toolbar .pdtoolbar {
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+
+.pdfilemodalexplorer.pdfilemodalexplorer .pdtree > .pdtreenode {
+ padding-left: calc(1rem - 1px);
+}
+
/* PDFilter */
.pd-filter.pd-filter .filter-icon {
color: var(--bs-primary) !important;
@@ -842,6 +864,12 @@
padding-left: 0;
}
+/* A hidden first item, such as an Up button turned off, must not leave the next one indented */
+.pdtoolbar .pdtoolbaritem.pd-hidden:first-child + .pdtoolbaritem,
+.pdtoolbar .pdtoolbaritem.d-none:first-child + .pdtoolbaritem {
+ padding-left: 0;
+}
+
.pdtoolbar .pdtoolbaritem:last-child {
padding-right: 0;
}
diff --git a/PanoramicData.Blazor/wwwroot/css/main.min.css b/PanoramicData.Blazor/wwwroot/css/main.min.css
index 28ec6f781..0da85bdaa 100644
--- a/PanoramicData.Blazor/wwwroot/css/main.min.css
+++ b/PanoramicData.Blazor/wwwroot/css/main.min.css
@@ -1 +1 @@
-.cursor-pointer{cursor:pointer;}.fa-hidden{color:transparent;}.pd-pointer{cursor:pointer;}.pd-hidden{display:none!important;}.pd-empty-icon{height:16px;width:16px;}.resize-h{overflow:auto;resize:vertical;}.resize-w{overflow:auto;resize:horizontal;}.h-100{height:100px!important;}.h-200{height:200px!important;}.h-300{height:300px!important;}.h-400{height:400px!important;}.h-500{height:500px!important;}.h-100-pct{height:100%;}.w-100-pct{width:100%;}.w-100-px{width:100px;}.w-125-px{width:125px;}.w-150-px{width:150px;}.w-200-px{width:200px;}.mh-50-px{min-height:50px;}.mh-100-px{min-height:100px;}.mh-150-px{min-height:150px;}.mh-200-px{min-height:200px;}.mh-250-px{min-height:250px;}.mh-300-px{min-height:300px;}.mw-100-px{min-width:100px;}.mw-125-px{min-width:125px;}.mw-150-px{min-width:150px;}.mw-200-px{min-width:200px;}.text-small{font-size:.75rem;}.text-tiny{font-size:.5rem;}.z-1000{z-index:1000;}.z-1100{z-index:1100;}.z-1200{z-index:1200;}.pd-form-body .title-box{width:var(--title-width,200px)!important;min-width:var(--title-width,200px)!important;max-width:var(--title-width,200px)!important;flex:0 0 var(--title-width,200px)!important;}.pdsplitter .gutter{background-color:var(--pd-splitter-gutter-bg,#eee);transition:background-color .1s ease-out;}.pdsplitter .gutter-vertical{cursor:row-resize;}.pdsplitter .gutter-horizontal{cursor:col-resize;}.pd-studio .pdsplitter>.gutter{background-color:var(--pd-studio-gutter-bg,var(--pd-splitter-gutter-bg,var(--bs-tertiary-bg,#eee)));}.pdsplitter .gutter:active,.pdsplitter .gutter:hover{background-color:var(--pd-splitter-gutter-hover-bg,var(--bs-primary,#0d6efd));transition:background-color .15s ease-in var(--pd-splitter-gutter-hover-delay,.2s);}.pdsplitter .gutter:active{transition-delay:0s;}.pd-studio .pdtoolbar.pd-studio-toolbar{padding:var(--pd-studio-toolbar-padding,.375rem var(--_pds-toolbar-padding-x,0));border-bottom:var(--pd-studio-toolbar-border-bottom,1px solid var(--_pds-border-color));}.pd-studio .pdtoolbar.pd-studio-toolbar{column-gap:.75rem;}.pd-studio .pdtoolbar.pd-studio-toolbar>.pdtoolbaritem{padding-left:0;padding-right:0;}.pd-studio .pdtoolbar.pd-studio-toolbar .pdts-bar{border-left-color:var(--pd-studio-separator-color,var(--bs-secondary,#6c757d));}.pd-studio .pdtoolbarbutton.pd-studio-execute{min-width:var(--pd-studio-execute-min-width,5.5rem)}.pd-studio .pd-studio-editor-container .pd-monacoeditor{border:none;}.pdfilepreview .stacked{align-items:center;display:flex;flex-direction:column;text-align:center;}.pdfilepreview .stacked span{margin-top:4px;}.pdfilepreview .h1,.pdfilepreview .h4,.pdfilepreview h2,.pdfilepreview h3{margin:0!important;padding:0!important;}.pdchat-message .pdchat-partial blockquote,.pdchat-message .pdchat-partial h1,.pdchat-message .pdchat-partial h2,.pdchat-message .pdchat-partial h3,.pdchat-message .pdchat-partial h4,.pdchat-message .pdchat-partial h5,.pdchat-message .pdchat-partial h6,.pdchat-message .pdchat-partial li,.pdchat-message .pdchat-partial ol,.pdchat-message .pdchat-partial p,.pdchat-message .pdchat-partial table,.pdchat-message .pdchat-partial ul,.pdchat-message .pdchat-text blockquote,.pdchat-message .pdchat-text h1,.pdchat-message .pdchat-text h2,.pdchat-message .pdchat-text h3,.pdchat-message .pdchat-text h4,.pdchat-message .pdchat-text h5,.pdchat-message .pdchat-text h6,.pdchat-message .pdchat-text li,.pdchat-message .pdchat-text ol,.pdchat-message .pdchat-text p,.pdchat-message .pdchat-text table,.pdchat-message .pdchat-text ul{white-space:normal;}.pdchat-message .pdchat-partial p,.pdchat-message .pdchat-text p{margin:0 0 .5em;}.pdchat-message .pdchat-partial ol,.pdchat-message .pdchat-partial ul,.pdchat-message .pdchat-text ol,.pdchat-message .pdchat-text ul{margin:.25em 0 .5em;padding-left:1.5em;}.pdchat-message .pdchat-partial li+li,.pdchat-message .pdchat-text li+li{margin-top:.15em;}.pdchat-message .pdchat-partial li>p,.pdchat-message .pdchat-text li>p{margin:0;}.pdchat-message .pdchat-partial ol:last-child,.pdchat-message .pdchat-partial p:last-child,.pdchat-message .pdchat-partial ul:last-child,.pdchat-message .pdchat-text ol:last-child,.pdchat-message .pdchat-text p:last-child,.pdchat-message .pdchat-text ul:last-child{margin-bottom:0;}.pdchat-message .pdchat-partial table{border-collapse:collapse;font-size:.95em;}.pdchat-message .pdchat-partial td,.pdchat-message .pdchat-partial th{border:1px solid var(--pd-chat-border,#dee2e6);padding:.15rem .4rem;text-align:left;}.pdchat-container .pdchat-conversation-main .pdchat-conversation-tabset{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;}.pdchat-container .pdchat-conversation-main .pdchat-conversation-tabset .pdtabset-content{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;}.pdchat-container .pdchat-conversation-main .pdtabset-tab.pdchat-conversation-tab-unread::before{content:"\25CF";margin-right:4px;font-size:.625rem;line-height:1;color:var(--pd-chat-info-border,#0078d4);}.pdchat-container .pdchat-conversation-main .pdtabset-tab.pdchat-conversation-tab-unread .pdtabset-tab-title{font-weight:600;}.pdchat-container-wrapper.pdchat-container-wrapper.pdchat-split-inactive .pdchat-chat-panel{flex:0 0 0%!important;width:0!important;min-width:0!important;padding:0!important;border:none!important;overflow:hidden!important;}.pdchat-container-wrapper.pdchat-container-wrapper.pdchat-split-inactive .pdchat-content-panel{flex:1 1 100%!important;width:100%!important;}.pdchat-container-wrapper.pdchat-container-wrapper.pdchat-split-inactive .pdchat-container-splitter>.gutter{display:none!important;width:0!important;min-width:0!important;}.pdchat-container-wrapper.pdchat-container-wrapper .pdchat-container.dock-left,.pdchat-container-wrapper.pdchat-container-wrapper .pdchat-container.dock-right{position:static!important;transform:none!important;top:auto!important;left:auto!important;right:auto!important;bottom:auto!important;width:100%!important;height:100%!important;z-index:auto!important;}.pdchat-container-wrapper.pdchat-container-wrapper .pdchat-window{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;border-radius:0!important;box-shadow:none!important;}@media(max-width:767px){.pdchat-container-wrapper.pdchat-container-wrapper:not(.pdchat-split-inactive) .pdchat-chat-panel{position:fixed!important;inset:0!important;width:100%!important;height:100%!important;z-index:10000!important;}.pdchat-container-wrapper.pdchat-container-wrapper:not(.pdchat-split-inactive) .pdchat-content-panel{flex:1 1 100%!important;width:100%!important;}.pdchat-container-wrapper.pdchat-container-wrapper:not(.pdchat-split-inactive) .pdchat-container-splitter>.gutter{display:none!important;}}.pd-list .filter input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;}.pd-list .filter .input-group-text{border-top-left-radius:0!important;border-bottom-left-radius:0!important;}.pdtoolbartextbox.pdtoolbartextbox input{min-width:0;width:100%;}.pdtoolbarbuttonitem .pdtoolbarbutton{white-space:nowrap;}.pdtoolbardropdown .pdtoolbarbutton{white-space:nowrap;border-radius:var(--bs-border-radius,.375rem);display:inline-flex;align-items:center;line-height:1.5;}.pdtoolbardropdown .pdtoolbarbutton.dropdown-toggle{padding:.375rem .75rem;border:1px solid var(--bs-border-color,#dee2e6);border-radius:var(--bs-border-radius,.375rem);background-color:var(--bs-body-bg,#fff);color:var(--bs-body-color,#212529);transition:all .15s ease-in-out;display:inline-flex;align-items:center;gap:.5rem;line-height:1.5;}.pdtoolbardropdown .pdtoolbarbutton.dropdown-toggle:hover{background-color:var(--bs-secondary-bg,#e9ecef);border-color:var(--bs-border-color-translucent,#adb5bd);}.pdtoolbardropdown .pdtoolbarbutton.dropdown-toggle::after{margin-left:auto;}.pdtoolbardropdown .pdtoolbarbutton.dropdown-toggle>span{display:inline-flex;align-items:center;gap:.5rem;}.pd-dropdown.pd-dropdown .dropdown-menu ul{list-style:none;padding:0;margin:0;}.pd-dropdown.pd-dropdown .dropdown-menu li{list-style:none;padding:0;margin:0;cursor:pointer;transition:background-color .15s ease-in-out;}.pd-dropdown.pd-dropdown .dropdown-menu li:hover{background-color:var(--bs-secondary-bg);}.pd-dropdown.pd-dropdown .dropdown-menu li .pd-label{display:block;padding:.5rem 1rem;color:var(--bs-body-color);text-decoration:none;white-space:nowrap;width:100%;}.pdfileexplorer.pdfileexplorer .pdtree{height:0;}.pdfileexplorer.pdfileexplorer .pdsplitter.horizontal{height:calc(100% - 50px);}.pdfileexplorer.pdfileexplorer.pdfe-no-toolbar .pdsplitter.horizontal{height:100%;}.pdfileexplorer.pdfileexplorer .pddropzone.dz-drag-hover{background-color:unset;border-color:transparent;}.pdfileexplorer.pdfileexplorer .pdtablerow:hover td{background-color:var(--bs-tertiary-bg,rgba(128,128,128,.15));}.pdfileexplorer.pdfileexplorer .pdtablerow.selected:hover td{background-color:var(--pd-selected-bg,var(--bs-primary));}.pdfilemodalexplorer.pdfilemodalexplorer .pdfileexplorer{height:100%;}.pdfilemodalexplorer.pdfilemodalexplorer .pdsplitter{flex-grow:1;}.pd-filter.pd-filter .filter-icon{color:var(--bs-primary)!important;}.pd-filter.pd-filter:not(.filtered) .filter-icon{opacity:.3;}.pd-filter.pd-filter .pd-dropdown>button{border:none!important;background:unset!important;}.pd-filter .filter-toolbar .pd-button{flex:1;}.pd-form-body .pdtoggleswitch.disabled{background-color:#e9ecef;}.pd-form-body .fg-1{flex-grow:1;}.pd-form-body .fg-2{flex-grow:2;}.pd-form-body .fg-3{flex-grow:3;}.pd-form-body .fg-4{flex-grow:4;}.pd-form-body .fg-5{flex-grow:5;}.pd-form-body .fg-6{flex-grow:6;}.pd-form-body .fg-7{flex-grow:7;}.pd-form-body .fg-8{flex-grow:8;}.pd-form-body .fg-9{flex-grow:9;}.pd-form-field-editor .monaco-editor-container{display:grid;height:100%;grid-template-columns:minmax(0,auto);}.pd-form-field-editor.editor .form-control{border:none;}.pd-form-field-editor .ms-nullable{margin:0 4px 2px 12px;line-height:.5rem;vertical-align:middle;padding:0;width:16px;}.pd-form-field-editor.editor .pddatetime input{flex-grow:1;}.pd-form-field-editor.editor .pddatetimeoffset input{flex-grow:1;}.pd-form-field-editor.editor .no-resize{resize:none;}.pd-form-field-editor.editor.readonly .view-lines{background-color:#e9ecef;}.pd-form-field-editor.editor.readonly .margin{background-color:#e9ecef;}.pd-form-field-editor.editor.readonly .minimap canvas{background-color:#e9ecef;}.pd-form-field-editor .form-select:disabled{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:none!important;}.pd-form-field-editor.editor.readonly .form-control:disabled{border-radius:0!important;}.pd-form-footer.pd-form-footer .pdtoolbar{flex-wrap:nowrap;padding:0;flex-shrink:0;}.pd-monacoeditor .monaco-editor-container{height:100px;}.pdpager .direction-buttons button:first-child{border-radius:.25rem 0 0 .25rem;}.pdpager .direction-buttons button:nth-child(2){border-radius:0;}.pdpager .direction-buttons button:nth-child(4){border-radius:0;}.pdpager .direction-buttons button:nth-child(5){border-radius:0 .25rem .25rem 0;}.pd-studio.pd-studio .pd-studio-editor-container .monaco-editor-container{height:100%!important;}.pd-studio.pd-studio .pd-studio-editor-container .resizable{height:100%!important;}.pdtable .pd-sort{color:var(--bs-primary);}.pdtable .pd-sort .fa-stack{width:20px;font-size:1rem;vertical-align:middle;}.pdtable .pd-sort.fa-sort{opacity:.3;}.pdtable .pd-sort i{vertical-align:middle;}.pd-column-selector.pd-column-selector .pd-dragpanel{border:none;margin:0;padding:0;background:transparent;}.pd-column-selector.pd-column-selector .pd-dragitem{background-color:transparent;border:none;margin:0;padding:.5rem 1rem;min-height:auto;transition:background-color .15s ease-in-out;cursor:pointer;display:flex;align-items:center;gap:.5rem;}.pd-column-selector.pd-column-selector .pd-dragitem:hover{background-color:var(--bs-secondary-bg,#e9ecef);}.pd-column-selector.pd-column-selector .pd-dragitem.dragging{background-color:var(--bs-primary-bg-subtle,#cfe2ff);border-color:var(--bs-primary,#0d6efd);opacity:.6;}.pd-column-selector.pd-column-selector .pd-dragitem input[type=checkbox]{width:1rem;height:1rem;cursor:pointer;flex-shrink:0;}.pd-column-selector.pd-column-selector .pd-dragitem label{margin:0;cursor:pointer;flex:1;user-select:none;color:var(--bs-body-color,#212529);}[data-bs-theme=dark] .pd-column-selector.pd-column-selector .pd-dragitem:hover{background-color:var(--bs-secondary-bg,#343a40);}[data-bs-theme=dark] .pd-column-selector.pd-column-selector .pd-dragitem label{color:var(--bs-body-color,#f8f9fa);}.pd-column-selector.pd-column-selector .pd-dragitem input[type=checkbox]:disabled,.pd-column-selector.pd-column-selector .pd-dragitem input[type=checkbox]:disabled+label{opacity:.5;cursor:not-allowed;}.pd-timeline.pd-timeline svg.disabled{background-color:#d3d3d3;filter:grayscale(1);}.pdtoolbar .pdtoolbaritem{padding:0 .25rem;align-items:center;flex-shrink:0;vertical-align:middle;white-space:nowrap;position:relative;}.pdtoolbar .pdtoolbaritem:not(.pd-hidden,.d-none){display:inline-flex!important;}.pdtoolbar .pdtoolbaritem:has(.pdtoolbartextbox){flex:1 1 200px;min-width:150px;max-width:400px;}.pdtoolbar .pdtoolbaritem:first-child{padding-left:0;}.pdtoolbar .pdtoolbaritem:last-child{padding-right:0;}.pdtoolbar .pdtoolbaritem.align-right{margin-left:auto;flex-shrink:0;}.pdtoolbar .pdtoolbaritem .btn,.pdtoolbar .pdtoolbaritem .dropdown{margin-bottom:0!important;display:inline-flex;vertical-align:middle;align-items:center;flex-shrink:0;}.pdtoolbar .pdtoolbaritem .dropdown-toggle{display:inline-flex;align-items:center;gap:var(--pd-toolbar-dropdown-gap,0);border-radius:var(--bs-border-radius,.375rem);}.pdtoolbar .pdtoolbaritem .dropdown-toggle>.icon+span{padding-left:var(--pd-toolbar-dropdown-label-gap,.25rem);}.pdtoolbar .pdtoolbaritem .dropdown-menu{position:absolute;z-index:1050;}.pdtoolbar .pdtoolbaritem .pdtoolbarbutton{border-radius:var(--bs-border-radius,.375rem);height:100%;white-space:nowrap;}.pdtoolbar .pdtoolbargroup>.pdtoolbaritem{padding:0;}.pdtoolbar .pdtoolbargroup>.pdtoolbaritem:not(:first-child) .btn{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:calc(var(--bs-border-width,1px)*-1);border-left-color:var(--pd-toolbar-group-divider-color,rgba(0,0,0,.3));}.pdtoolbar .pdtoolbargroup>.pdtoolbaritem:not(:last-child) .btn{border-top-right-radius:0;border-bottom-right-radius:0;}@media (max-width:768px){.pdtoolbar .pdtoolbaritem{margin-bottom:.25rem;}.pdtoolbar .pdtoolbaritem:has(.pdtoolbartextbox){flex:1 1 100%;max-width:none;min-width:0;}}.pd-diffpanel-editor .monaco-editor-container{height:100%;}@property --pdchat-progress-seconds{syntax:"";inherits:false;initial-value:0;}@property --pdchat-progress-minutes{syntax:"";inherits:false;initial-value:0;}
\ No newline at end of file
+.cursor-pointer{cursor:pointer;}.fa-hidden{color:transparent;}.pd-pointer{cursor:pointer;}.pd-hidden{display:none!important;}.pd-empty-icon{height:16px;width:16px;}.resize-h{overflow:auto;resize:vertical;}.resize-w{overflow:auto;resize:horizontal;}.h-100{height:100px!important;}.h-200{height:200px!important;}.h-300{height:300px!important;}.h-400{height:400px!important;}.h-500{height:500px!important;}.h-100-pct{height:100%;}.w-100-pct{width:100%;}.w-100-px{width:100px;}.w-125-px{width:125px;}.w-150-px{width:150px;}.w-200-px{width:200px;}.mh-50-px{min-height:50px;}.mh-100-px{min-height:100px;}.mh-150-px{min-height:150px;}.mh-200-px{min-height:200px;}.mh-250-px{min-height:250px;}.mh-300-px{min-height:300px;}.mw-100-px{min-width:100px;}.mw-125-px{min-width:125px;}.mw-150-px{min-width:150px;}.mw-200-px{min-width:200px;}.text-small{font-size:.75rem;}.text-tiny{font-size:.5rem;}.z-1000{z-index:1000;}.z-1100{z-index:1100;}.z-1200{z-index:1200;}.pd-form-body .title-box{width:var(--title-width,200px)!important;min-width:var(--title-width,200px)!important;max-width:var(--title-width,200px)!important;flex:0 0 var(--title-width,200px)!important;}.pdsplitter .gutter{background-color:var(--pd-splitter-gutter-bg,var(--bs-border-color,#eee));transition:background-color .1s ease-out;}.pdsplitter .gutter-vertical{cursor:row-resize;}.pdsplitter .gutter-horizontal{cursor:col-resize;}.pd-studio .pdsplitter>.gutter{background-color:var(--pd-studio-gutter-bg,var(--pd-splitter-gutter-bg,var(--bs-tertiary-bg,#eee)));}.pdsplitter .gutter:active,.pdsplitter .gutter:hover{background-color:var(--pd-splitter-gutter-hover-bg,var(--bs-primary,#0d6efd));transition:background-color .15s ease-in var(--pd-splitter-gutter-hover-delay,.2s);}.pdsplitter .gutter:active{transition-delay:0s;}.pd-studio .pdtoolbar.pd-studio-toolbar{padding:var(--pd-studio-toolbar-padding,.375rem var(--_pds-toolbar-padding-x,0));border-bottom:var(--pd-studio-toolbar-border-bottom,1px solid var(--_pds-border-color));}.pd-studio .pdtoolbar.pd-studio-toolbar{column-gap:.75rem;}.pd-studio .pdtoolbar.pd-studio-toolbar>.pdtoolbaritem{padding-left:0;padding-right:0;}.pd-studio .pdtoolbar.pd-studio-toolbar .pdts-bar{border-left-color:var(--pd-studio-separator-color,var(--bs-secondary,#6c757d));}.pd-studio .pdtoolbarbutton.pd-studio-execute{min-width:var(--pd-studio-execute-min-width,5.5rem)}.pd-studio .pd-studio-editor-container .pd-monacoeditor{border:none;}.pdfilepreview .stacked{align-items:center;display:flex;flex-direction:column;text-align:center;}.pdfilepreview .stacked span{margin-top:4px;}.pdfilepreview .h1,.pdfilepreview .h4,.pdfilepreview h2,.pdfilepreview h3{margin:0!important;padding:0!important;}.pdchat-message .pdchat-partial blockquote,.pdchat-message .pdchat-partial h1,.pdchat-message .pdchat-partial h2,.pdchat-message .pdchat-partial h3,.pdchat-message .pdchat-partial h4,.pdchat-message .pdchat-partial h5,.pdchat-message .pdchat-partial h6,.pdchat-message .pdchat-partial li,.pdchat-message .pdchat-partial ol,.pdchat-message .pdchat-partial p,.pdchat-message .pdchat-partial table,.pdchat-message .pdchat-partial ul,.pdchat-message .pdchat-text blockquote,.pdchat-message .pdchat-text h1,.pdchat-message .pdchat-text h2,.pdchat-message .pdchat-text h3,.pdchat-message .pdchat-text h4,.pdchat-message .pdchat-text h5,.pdchat-message .pdchat-text h6,.pdchat-message .pdchat-text li,.pdchat-message .pdchat-text ol,.pdchat-message .pdchat-text p,.pdchat-message .pdchat-text table,.pdchat-message .pdchat-text ul{white-space:normal;}.pdchat-message .pdchat-partial p,.pdchat-message .pdchat-text p{margin:0 0 .5em;}.pdchat-message .pdchat-partial ol,.pdchat-message .pdchat-partial ul,.pdchat-message .pdchat-text ol,.pdchat-message .pdchat-text ul{margin:.25em 0 .5em;padding-left:1.5em;}.pdchat-message .pdchat-partial li+li,.pdchat-message .pdchat-text li+li{margin-top:.15em;}.pdchat-message .pdchat-partial li>p,.pdchat-message .pdchat-text li>p{margin:0;}.pdchat-message .pdchat-partial ol:last-child,.pdchat-message .pdchat-partial p:last-child,.pdchat-message .pdchat-partial ul:last-child,.pdchat-message .pdchat-text ol:last-child,.pdchat-message .pdchat-text p:last-child,.pdchat-message .pdchat-text ul:last-child{margin-bottom:0;}.pdchat-message .pdchat-partial table{border-collapse:collapse;font-size:.95em;}.pdchat-message .pdchat-partial td,.pdchat-message .pdchat-partial th{border:1px solid var(--pd-chat-border,#dee2e6);padding:.15rem .4rem;text-align:left;}.pdchat-container .pdchat-conversation-main .pdchat-conversation-tabset{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;}.pdchat-container .pdchat-conversation-main .pdchat-conversation-tabset .pdtabset-content{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;}.pdchat-container .pdchat-conversation-main .pdtabset-tab.pdchat-conversation-tab-unread::before{content:"\25CF";margin-right:4px;font-size:.625rem;line-height:1;color:var(--pd-chat-info-border,#0078d4);}.pdchat-container .pdchat-conversation-main .pdtabset-tab.pdchat-conversation-tab-unread .pdtabset-tab-title{font-weight:600;}.pdchat-container-wrapper.pdchat-container-wrapper.pdchat-split-inactive .pdchat-chat-panel{flex:0 0 0%!important;width:0!important;min-width:0!important;padding:0!important;border:none!important;overflow:hidden!important;}.pdchat-container-wrapper.pdchat-container-wrapper.pdchat-split-inactive .pdchat-content-panel{flex:1 1 100%!important;width:100%!important;}.pdchat-container-wrapper.pdchat-container-wrapper.pdchat-split-inactive .pdchat-container-splitter>.gutter{display:none!important;width:0!important;min-width:0!important;}.pdchat-container-wrapper.pdchat-container-wrapper .pdchat-container.dock-left,.pdchat-container-wrapper.pdchat-container-wrapper .pdchat-container.dock-right{position:static!important;transform:none!important;top:auto!important;left:auto!important;right:auto!important;bottom:auto!important;width:100%!important;height:100%!important;z-index:auto!important;}.pdchat-container-wrapper.pdchat-container-wrapper .pdchat-window{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;border-radius:0!important;box-shadow:none!important;}@media(max-width:767px){.pdchat-container-wrapper.pdchat-container-wrapper:not(.pdchat-split-inactive) .pdchat-chat-panel{position:fixed!important;inset:0!important;width:100%!important;height:100%!important;z-index:10000!important;}.pdchat-container-wrapper.pdchat-container-wrapper:not(.pdchat-split-inactive) .pdchat-content-panel{flex:1 1 100%!important;width:100%!important;}.pdchat-container-wrapper.pdchat-container-wrapper:not(.pdchat-split-inactive) .pdchat-container-splitter>.gutter{display:none!important;}}.pd-list .filter input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;}.pd-list .filter .input-group-text{border-top-left-radius:0!important;border-bottom-left-radius:0!important;}.pdtoolbartextbox.pdtoolbartextbox input{min-width:0;width:100%;}.pdtoolbarbuttonitem .pdtoolbarbutton{white-space:nowrap;}.pdtoolbardropdown .pdtoolbarbutton{white-space:nowrap;border-radius:var(--bs-border-radius,.375rem);display:inline-flex;align-items:center;line-height:1.5;}.pdtoolbardropdown .pdtoolbarbutton.dropdown-toggle{padding:.375rem .75rem;border:1px solid var(--bs-border-color,#dee2e6);border-radius:var(--bs-border-radius,.375rem);background-color:var(--bs-body-bg,#fff);color:var(--bs-body-color,#212529);transition:all .15s ease-in-out;display:inline-flex;align-items:center;gap:.5rem;line-height:1.5;}.pdtoolbardropdown .pdtoolbarbutton.dropdown-toggle:hover{background-color:var(--bs-secondary-bg,#e9ecef);border-color:var(--bs-border-color-translucent,#adb5bd);}.pdtoolbardropdown .pdtoolbarbutton.dropdown-toggle::after{margin-left:auto;}.pdtoolbardropdown .pdtoolbarbutton.dropdown-toggle>span{display:inline-flex;align-items:center;gap:.5rem;}.pd-dropdown.pd-dropdown .dropdown-menu ul{list-style:none;padding:0;margin:0;}.pd-dropdown.pd-dropdown .dropdown-menu li{list-style:none;padding:0;margin:0;cursor:pointer;transition:background-color .15s ease-in-out;}.pd-dropdown.pd-dropdown .dropdown-menu li:hover{background-color:var(--bs-secondary-bg);}.pd-dropdown.pd-dropdown .dropdown-menu li .pd-label{display:block;padding:.5rem 1rem;color:var(--bs-body-color);text-decoration:none;white-space:nowrap;width:100%;}.pdfileexplorer.pdfileexplorer .pdtree{height:0;box-sizing:border-box;padding-top:.5rem;}.pdfileexplorer.pdfileexplorer .pdtree>.pdtreenode{padding-left:calc(.5rem - 1px);}.pdfileexplorer.pdfileexplorer .pdsplitter.horizontal{flex:1 1 0;min-height:0;}.pdfileexplorer.pdfileexplorer.pdfe-no-toolbar .pdsplitter.horizontal{height:100%;}.pdfileexplorer.pdfileexplorer .pddropzone.dz-drag-hover{background-color:unset;border-color:transparent;}.pdfileexplorer.pdfileexplorer .pdtablerow:hover td{background-color:var(--bs-tertiary-bg,rgba(128,128,128,.15));}.pdfileexplorer.pdfileexplorer .pdtablerow.selected:hover td{background-color:var(--pd-selected-bg,var(--bs-primary));}.pdfilemodalexplorer.pdfilemodalexplorer .pdfileexplorer{height:100%;padding-bottom:0;}.pdfilemodalexplorer.pdfilemodalexplorer .pdsplitter{flex-grow:1;}.pdfilemodalexplorer.pdfilemodalexplorer .pdfe-toolbar .pdtoolbar{padding-left:1rem;padding-right:1rem;}.pdfilemodalexplorer.pdfilemodalexplorer .pdtree>.pdtreenode{padding-left:calc(1rem - 1px);}.pd-filter.pd-filter .filter-icon{color:var(--bs-primary)!important;}.pd-filter.pd-filter:not(.filtered) .filter-icon{opacity:.3;}.pd-filter.pd-filter .pd-dropdown>button{border:none!important;background:unset!important;}.pd-filter .filter-toolbar .pd-button{flex:1;}.pd-form-body .pdtoggleswitch.disabled{background-color:#e9ecef;}.pd-form-body .fg-1{flex-grow:1;}.pd-form-body .fg-2{flex-grow:2;}.pd-form-body .fg-3{flex-grow:3;}.pd-form-body .fg-4{flex-grow:4;}.pd-form-body .fg-5{flex-grow:5;}.pd-form-body .fg-6{flex-grow:6;}.pd-form-body .fg-7{flex-grow:7;}.pd-form-body .fg-8{flex-grow:8;}.pd-form-body .fg-9{flex-grow:9;}.pd-form-field-editor .monaco-editor-container{display:grid;height:100%;grid-template-columns:minmax(0,auto);}.pd-form-field-editor.editor .form-control{border:none;}.pd-form-field-editor .ms-nullable{margin:0 4px 2px 12px;line-height:.5rem;vertical-align:middle;padding:0;width:16px;}.pd-form-field-editor.editor .pddatetime input{flex-grow:1;}.pd-form-field-editor.editor .pddatetimeoffset input{flex-grow:1;}.pd-form-field-editor.editor .no-resize{resize:none;}.pd-form-field-editor.editor.readonly .view-lines{background-color:#e9ecef;}.pd-form-field-editor.editor.readonly .margin{background-color:#e9ecef;}.pd-form-field-editor.editor.readonly .minimap canvas{background-color:#e9ecef;}.pd-form-field-editor .form-select:disabled{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:none!important;}.pd-form-field-editor.editor.readonly .form-control:disabled{border-radius:0!important;}.pd-form-footer.pd-form-footer .pdtoolbar{flex-wrap:nowrap;padding:0;flex-shrink:0;}.pd-monacoeditor .monaco-editor-container{height:100px;}.pdpager .direction-buttons button:first-child{border-radius:.25rem 0 0 .25rem;}.pdpager .direction-buttons button:nth-child(2){border-radius:0;}.pdpager .direction-buttons button:nth-child(4){border-radius:0;}.pdpager .direction-buttons button:nth-child(5){border-radius:0 .25rem .25rem 0;}.pd-studio.pd-studio .pd-studio-editor-container .monaco-editor-container{height:100%!important;}.pd-studio.pd-studio .pd-studio-editor-container .resizable{height:100%!important;}.pdtable .pd-sort{color:var(--bs-primary);}.pdtable .pd-sort .fa-stack{width:20px;font-size:1rem;vertical-align:middle;}.pdtable .pd-sort.fa-sort{opacity:.3;}.pdtable .pd-sort i{vertical-align:middle;}.pd-column-selector.pd-column-selector .pd-dragpanel{border:none;margin:0;padding:0;background:transparent;}.pd-column-selector.pd-column-selector .pd-dragitem{background-color:transparent;border:none;margin:0;padding:.5rem 1rem;min-height:auto;transition:background-color .15s ease-in-out;cursor:pointer;display:flex;align-items:center;gap:.5rem;}.pd-column-selector.pd-column-selector .pd-dragitem:hover{background-color:var(--bs-secondary-bg,#e9ecef);}.pd-column-selector.pd-column-selector .pd-dragitem.dragging{background-color:var(--bs-primary-bg-subtle,#cfe2ff);border-color:var(--bs-primary,#0d6efd);opacity:.6;}.pd-column-selector.pd-column-selector .pd-dragitem input[type=checkbox]{width:1rem;height:1rem;cursor:pointer;flex-shrink:0;}.pd-column-selector.pd-column-selector .pd-dragitem label{margin:0;cursor:pointer;flex:1;user-select:none;color:var(--bs-body-color,#212529);}[data-bs-theme=dark] .pd-column-selector.pd-column-selector .pd-dragitem:hover{background-color:var(--bs-secondary-bg,#343a40);}[data-bs-theme=dark] .pd-column-selector.pd-column-selector .pd-dragitem label{color:var(--bs-body-color,#f8f9fa);}.pd-column-selector.pd-column-selector .pd-dragitem input[type=checkbox]:disabled,.pd-column-selector.pd-column-selector .pd-dragitem input[type=checkbox]:disabled+label{opacity:.5;cursor:not-allowed;}.pd-timeline.pd-timeline svg.disabled{background-color:#d3d3d3;filter:grayscale(1);}.pdtoolbar .pdtoolbaritem{padding:0 .25rem;align-items:center;flex-shrink:0;vertical-align:middle;white-space:nowrap;position:relative;}.pdtoolbar .pdtoolbaritem:not(.pd-hidden,.d-none){display:inline-flex!important;}.pdtoolbar .pdtoolbaritem:has(.pdtoolbartextbox){flex:1 1 200px;min-width:150px;max-width:400px;}.pdtoolbar .pdtoolbaritem:first-child{padding-left:0;}.pdtoolbar .pdtoolbaritem.pd-hidden:first-child+.pdtoolbaritem,.pdtoolbar .pdtoolbaritem.d-none:first-child+.pdtoolbaritem{padding-left:0;}.pdtoolbar .pdtoolbaritem:last-child{padding-right:0;}.pdtoolbar .pdtoolbaritem.align-right{margin-left:auto;flex-shrink:0;}.pdtoolbar .pdtoolbaritem .btn,.pdtoolbar .pdtoolbaritem .dropdown{margin-bottom:0!important;display:inline-flex;vertical-align:middle;align-items:center;flex-shrink:0;}.pdtoolbar .pdtoolbaritem .dropdown-toggle{display:inline-flex;align-items:center;gap:var(--pd-toolbar-dropdown-gap,0);border-radius:var(--bs-border-radius,.375rem);}.pdtoolbar .pdtoolbaritem .dropdown-toggle>.icon+span{padding-left:var(--pd-toolbar-dropdown-label-gap,.25rem);}.pdtoolbar .pdtoolbaritem .dropdown-menu{position:absolute;z-index:1050;}.pdtoolbar .pdtoolbaritem .pdtoolbarbutton{border-radius:var(--bs-border-radius,.375rem);height:100%;white-space:nowrap;}.pdtoolbar .pdtoolbargroup>.pdtoolbaritem{padding:0;}.pdtoolbar .pdtoolbargroup>.pdtoolbaritem:not(:first-child) .btn{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:calc(var(--bs-border-width,1px)*-1);border-left-color:var(--pd-toolbar-group-divider-color,rgba(0,0,0,.3));}.pdtoolbar .pdtoolbargroup>.pdtoolbaritem:not(:last-child) .btn{border-top-right-radius:0;border-bottom-right-radius:0;}@media (max-width:768px){.pdtoolbar .pdtoolbaritem{margin-bottom:.25rem;}.pdtoolbar .pdtoolbaritem:has(.pdtoolbartextbox){flex:1 1 100%;max-width:none;min-width:0;}}.pd-diffpanel-editor .monaco-editor-container{height:100%;}@property --pdchat-progress-seconds{syntax:"";inherits:false;initial-value:0;}@property --pdchat-progress-minutes{syntax:"";inherits:false;initial-value:0;}
\ No newline at end of file
diff --git a/PanoramicData.Blazor/wwwroot/css/main.scss b/PanoramicData.Blazor/wwwroot/css/main.scss
index 48487f9bc..979f73f3f 100644
--- a/PanoramicData.Blazor/wwwroot/css/main.scss
+++ b/PanoramicData.Blazor/wwwroot/css/main.scss
@@ -157,7 +157,7 @@
/* PDSplitter - the gutters are created by split.js */
.pdsplitter .gutter {
- background-color: var(--pd-splitter-gutter-bg, #eee);
+ background-color: var(--pd-splitter-gutter-bg, var(--bs-border-color, #eee));
transition: background-color 0.1s ease-out;
}
@@ -529,12 +529,22 @@
}
/* PDFileExplorer */
+/* The top folder sits a little below whatever is above the tree, rather than against it */
.pdfileexplorer.pdfileexplorer .pdtree {
height: 0;
+ box-sizing: border-box;
+ padding-top: 0.5rem;
}
+/* The top folder lines up with the toolbar's first button: the toolbar's padding, less the drop zone's 1px border */
+.pdfileexplorer.pdfileexplorer .pdtree > .pdtreenode {
+ padding-left: calc(0.5rem - 1px);
+}
+
+/* The splitter takes the height the toolbar leaves */
.pdfileexplorer.pdfileexplorer .pdsplitter.horizontal {
- height: calc(100% - 50px);
+ flex: 1 1 0;
+ min-height: 0;
}
.pdfileexplorer.pdfileexplorer.pdfe-no-toolbar .pdsplitter.horizontal {
@@ -557,14 +567,26 @@
}
/* PDFileModal */
+/* The dialog's body has no padding (p-0), so the toolbar's own spacing is the only spacing and the panes run edge to edge */
.pdfilemodalexplorer.pdfilemodalexplorer .pdfileexplorer {
height: 100%;
+ padding-bottom: 0;
}
.pdfilemodalexplorer.pdfilemodalexplorer .pdsplitter {
flex-grow: 1;
}
+/* In the dialog the toolbar's buttons and the top folder line up with the title and the footer's buttons, 1rem in */
+.pdfilemodalexplorer.pdfilemodalexplorer .pdfe-toolbar .pdtoolbar {
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+
+.pdfilemodalexplorer.pdfilemodalexplorer .pdtree > .pdtreenode {
+ padding-left: calc(1rem - 1px);
+}
+
/* PDFilter */
.pd-filter.pd-filter .filter-icon {
color: var(--bs-primary) !important;
@@ -844,6 +866,12 @@
padding-left: 0;
}
+/* A hidden first item, such as an Up button turned off, must not leave the next one indented */
+.pdtoolbar .pdtoolbaritem.pd-hidden:first-child + .pdtoolbaritem,
+.pdtoolbar .pdtoolbaritem.d-none:first-child + .pdtoolbaritem {
+ padding-left: 0;
+}
+
.pdtoolbar .pdtoolbaritem:last-child {
padding-right: 0;
}