s marked with to-be-removed is used in conjunction with repeatable.jelly and hetero-list.jelly
- and represents a master copy that gets pulled out from HTML, then inserted later upon demand multiple times
- when the user does "Add".
-*/
-div.to-be-removed { display: none; }
-
/* ========================= Other form related CSS ========================= */
.radioBlock-container {
@@ -1201,6 +1154,7 @@ div.to-be-removed { display: none; }
opacity: 0!important;
max-height: 0!important;
height: 0!important;
+ overflow: hidden;
}
.row-set-end { display: none; }
@@ -1231,31 +1185,6 @@ textarea.rich-editor {
visibility: hidden;
}
-/* ========================= D&D support in heterogenous/repeatable lists = */
-
-.hetero-list-container.with-drag-drop .repeated-chunk,
-.repeated-container.with-drag-drop .repeated-chunk {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-// SortableJS drag & drop classes
-.repeated-chunk--sortable-ghost {
- height: 100px;
- width: 100%;
- overflow: hidden;
-}
-.repeated-chunk--sortable-chosen {
- height: 100px;
- width: 100%;
- background-color: transparent;
- border: 2px solid var(--primary);
-
- & > * {
- display: none;
- }
-}
-
/* ========================= plugin update center ========================= */
#plugins .excerpt {
diff --git a/war/src/main/less/base/yui-compatibility.less b/war/src/main/less/base/yui-compatibility.less
index 655054472655..a7df1a601559 100644
--- a/war/src/main/less/base/yui-compatibility.less
+++ b/war/src/main/less/base/yui-compatibility.less
@@ -216,3 +216,8 @@ div.yahooTree td {
display: inline-block;
}
}
+
+.yui-panel,
+.yui-panel .bd {
+ background-color: var(--background) !important;
+}
\ No newline at end of file
diff --git a/war/src/main/less/modules/draggable-card.less b/war/src/main/less/modules/draggable-card.less
index 272c7f3164ad..10246b3e3273 100644
--- a/war/src/main/less/modules/draggable-card.less
+++ b/war/src/main/less/modules/draggable-card.less
@@ -1,43 +1,195 @@
+/* ========================= repeatable elements ========================= */
+
+.repeated-chunk {
+ position: relative;
+ border: 2px dashed var(--input-border);
+ padding: 1rem;
+ border-radius: 10px;
+}
+
+.repeated-chunk .show-if-last { visibility: hidden; }
+.repeated-chunk.last .show-if-last { visibility: visible; }
+
+.repeated-chunk .show-if-not-last { visibility: visible; }
+.repeated-chunk.last .show-if-not-last { visibility: hidden; }
+
+.repeated-chunk .show-if-not-only { visibility: visible; }
+.repeated-chunk.only .show-if-not-only { visibility: hidden; }
+
+/* == nested repeatable elements / 2 deep == */
+.repeated-chunk .repeated-chunk .show-if-last { visibility: hidden; }
+.repeated-chunk .repeated-chunk.last .show-if-last { visibility: visible; }
+
+.repeated-chunk .repeated-chunk .show-if-not-last { visibility: visible; }
+.repeated-chunk .repeated-chunk.last .show-if-not-last { visibility: hidden; }
+
+.repeated-chunk .repeated-chunk .show-if-not-only { visibility: visible; }
+.repeated-chunk .repeated-chunk.only .show-if-not-only { visibility: hidden; }
+
+/* == nested repeatable elements / 3 deep == */
+.repeated-chunk .repeated-chunk .repeated-chunk .show-if-last { visibility: hidden; }
+.repeated-chunk .repeated-chunk .repeated-chunk.last .show-if-last { visibility: visible; }
+
+.repeated-chunk .repeated-chunk .repeated-chunk .show-if-not-last { visibility: visible; }
+.repeated-chunk .repeated-chunk .repeated-chunk.last .show-if-not-last { visibility: hidden; }
+
+.repeated-chunk .repeated-chunk .repeated-chunk .show-if-not-only { visibility: visible; }
+.repeated-chunk .repeated-chunk .repeated-chunk.only .show-if-not-only { visibility: hidden; }
+
+/*
+
s marked with to-be-removed is used in conjunction with repeatable.jelly and hetero-list.jelly
+ and represents a master copy that gets pulled out from HTML, then inserted later upon demand multiple times
+ when the user does "Add".
+*/
+div.to-be-removed { display: none; }
+
+/* ========================= D&D support in heterogenous/repeatable lists = */
+
+.hetero-list-container.with-drag-drop .repeated-chunk,
+.repeated-container.with-drag-drop .repeated-chunk {
+ margin-bottom: 1rem;
+}
+
+// SortableJS drag & drop classes
+.repeated-chunk--sortable-ghost {
+ height: 100px;
+ width: 100%;
+ overflow: hidden;
+}
+
+.repeated-chunk--sortable-chosen {
+ width: 100%;
+ height: 100px;
+ background-color: transparent;
+ border: 2px solid var(--primary);
+
+ & > * {
+ display: none;
+ }
+}
+
.repeated-chunk {
+ & > div > *:last-of-type {
+ margin-bottom: 0;
+ }
+
&__header {
display: flex;
align-items: center;
justify-content: flex-start;
font-weight: bold;
+ margin-top: -0.4rem;
margin-bottom: 0.75rem;
.dd-handle {
position: relative;
- width: 22px;
- height: 22px;
+ width: 30px;
+ height: 30px;
overflow: hidden;
margin-right: 0.75rem;
cursor: move;
+ margin-left: -6px;
+
+ &::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ background: var(--text-color);
+ border-radius: var(--form-input-border-radius);
+ opacity: 0;
+ transition: var(--standard-transition);
+ }
&::after {
content: "";
position: absolute;
- top: 1px;
+ top: 0;
left: 4px;
+ bottom: 0;
right: 4px;
- height: 20px;
- background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='9px' height='19px' viewBox='0 0 9 19' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3EShape%3C/title%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cpath d='M2,15 C3.10456949,15 4,15.8954305 4,17 C4,18.1045695 3.10456949,19 2,19 C0.89543051,19 0,18.1045695 0,17 C0,15.8954305 0.89543051,15 2,15 Z M7,15 C8.10456949,15 9,15.8954305 9,17 C9,18.1045695 8.10456949,19 7,19 C5.89543051,19 5,18.1045695 5,17 C5,15.8954305 5.89543051,15 7,15 Z M2,16 C1.44771525,16 1,16.4477153 1,17 C1,17.5128358 1.38604019,17.9355072 1.88337887,17.9932723 L2,18 L2.11662113,17.9932723 C2.61395981,17.9355072 3,17.5128358 3,17 C3,16.4477153 2.55228475,16 2,16 Z M7,16 C6.44771525,16 6,16.4477153 6,17 C6,17.5128358 6.38604019,17.9355072 6.88337887,17.9932723 L7,18 L7.11662113,17.9932723 C7.61395981,17.9355072 8,17.5128358 8,17 C8,16.4477153 7.55228475,16 7,16 Z M2,10 C3.1045695,10 4,10.8954305 4,12 C4,13.1045695 3.1045695,14 2,14 C0.8954305,14 0,13.1045695 0,12 C0,10.8954305 0.8954305,10 2,10 Z M7,10 C8.1045695,10 9,10.8954305 9,12 C9,13.1045695 8.1045695,14 7,14 C5.8954305,14 5,13.1045695 5,12 C5,10.8954305 5.8954305,10 7,10 Z M2,11 C1.44771525,11 1,11.4477152 1,12 C1,12.5128358 1.38604019,12.9355072 1.88337887,12.9932723 L2,13 L2.11662113,12.9932723 C2.61395981,12.9355072 3,12.5128358 3,12 C3,11.4477152 2.55228475,11 2,11 Z M7,11 C6.44771525,11 6,11.4477152 6,12 C6,12.5128358 6.38604019,12.9355072 6.88337887,12.9932723 L7,13 L7.11662113,12.9932723 C7.61395981,12.9355072 8,12.5128358 8,12 C8,11.4477152 7.55228475,11 7,11 Z M2,5 C3.1045695,5 4,5.8954305 4,7 C4,8.1045695 3.1045695,9 2,9 C0.8954305,9 0,8.1045695 0,7 C0,5.8954305 0.8954305,5 2,5 Z M7,5 C8.1045695,5 9,5.8954305 9,7 C9,8.1045695 8.1045695,9 7,9 C5.8954305,9 5,8.1045695 5,7 C5,5.8954305 5.8954305,5 7,5 Z M2,6 C1.44771525,6 1,6.44771525 1,7 C1,7.51283584 1.38604019,7.93550716 1.88337887,7.99327227 L2,8 L2.11662113,7.99327227 C2.61395981,7.93550716 3,7.51283584 3,7 C3,6.44771525 2.55228475,6 2,6 Z M7,6 C6.44771525,6 6,6.44771525 6,7 C6,7.51283584 6.38604019,7.93550716 6.88337887,7.99327227 L7,8 L7.11662113,7.99327227 C7.61395981,7.93550716 8,7.51283584 8,7 C8,6.44771525 7.55228475,6 7,6 Z M2,0 C3.1045695,0 4,0.8954305 4,2 C4,3.1045695 3.1045695,4 2,4 C0.8954305,4 0,3.1045695 0,2 C0,0.8954305 0.8954305,0 2,0 Z M7,0 C8.1045695,0 9,0.8954305 9,2 C9,3.1045695 8.1045695,4 7,4 C5.8954305,4 5,3.1045695 5,2 C5,0.8954305 5.8954305,0 7,0 Z M2,1 C1.44771525,1 1,1.44771525 1,2 C1,2.51283584 1.38604019,2.93550716 1.88337887,2.99327227 L2,3 L2.11662113,2.99327227 C2.61395981,2.93550716 3,2.51283584 3,2 C3,1.44771525 2.55228475,1 2,1 Z M7,1 C6.44771525,1 6,1.44771525 6,2 C6,2.51283584 6.38604019,2.93550716 6.88337887,2.99327227 L7,3 L7.11662113,2.99327227 C7.61395981,2.93550716 8,2.51283584 8,2 C8,1.44771525 7.55228475,1 7,1 Z' id='Shape' fill='%23FFFFFF' fill-rule='nonzero'%3E%3C/path%3E%3C/g%3E%3C/svg%3E");
- background-repeat: no-repeat;
- background-position: left top;
+ background-color: var(--text-color);
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'%3E%3Ctitle%3EReorder Three%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='32' d='M96 256h320M96 176h320M96 336h320'/%3E%3C/svg%3E");
+ mask-position: center;
+ mask-repeat: no-repeat;
+ mask-size: contain;
}
&:hover {
- &::after {
- opacity: 0.75;
+ &::before {
+ opacity: 0.1;
}
}
}
+ }
+
+ // TODO: Update/remove when .jenkins-button PR is merged
+ .repeatable-delete {
+ position: absolute;
+ top: 0.6rem;
+ right: 0.6rem;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 28px;
+ height: 28px;
+ border: none;
+ outline: none;
+ margin-left: auto;
+ color: var(--red);
+ z-index: 0;
+ background: transparent;
+ cursor: pointer;
+
+ &::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ background: currentColor;
+ border-radius: 100px;
+ z-index: -1;
+ opacity: 0.075;
+ transition: var(--standard-transition);
+ }
+
+ &::after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ box-shadow: 0 0 0 10px transparent;
+ border-radius: 100px;
+ z-index: -1;
+ opacity: 0.075;
+ transition: var(--standard-transition);
+ }
+
+ svg {
+ width: 18px;
+ height: 18px;
+ }
+
+ &:hover {
+ &::before {
+ opacity: 0.1;
+ }
+ }
- .yui-button {
- margin-left: auto;
+ &:active,
+ &:focus {
+ &::before {
+ opacity: 0.15;
+ }
- * {
- margin: 0;
+ &::after {
+ box-shadow: 0 0 0 5px var(--red);
}
}
}
diff --git a/war/src/main/less/modules/form.less b/war/src/main/less/modules/form.less
index 0ff5d62b5987..1c7555496aa8 100644
--- a/war/src/main/less/modules/form.less
+++ b/war/src/main/less/modules/form.less
@@ -227,14 +227,15 @@
&::after {
content: "";
position: absolute;
- top: 13px;
- right: 15px;
- width: 8px;
- height: 8px;
- color: inherit;
- border-bottom: 2px solid currentColor;
- border-right: 2px solid currentColor;
- transform: rotate(45deg);
+ top: 0;
+ right: 13px;
+ bottom: 0;
+ width: 12px;
+ background-color: currentColor;
+ mask-image: url("data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='UTF-8'?%3e%3csvg width='336px' height='192px' viewBox='0 0 336 192' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3ePath%3c/title%3e%3cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e%3cg id='arrow' transform='translate(0.000000, 0.000000)' fill='%23FF0000' fill-rule='nonzero'%3e%3cpath d='M7.02943725,7.02943725 C16.3053957,-2.24652118 31.2852799,-2.34214962 40.6788451,6.74255194 L40.9705627,7.02943725 L168,134.059 L295.029437,7.02943725 C304.305396,-2.24652118 319.28528,-2.34214962 328.678845,6.74255194 L328.970563,7.02943725 C338.246521,16.3053957 338.34215,31.2852799 329.257448,40.6788451 L328.970563,40.9705627 L184.970563,184.970563 C175.694604,194.246521 160.71472,194.34215 151.321155,185.257448 L151.029437,184.970563 L7.02943725,40.9705627 C-2.34314575,31.5979797 -2.34314575,16.4020203 7.02943725,7.02943725 Z' id='Path'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e");
+ mask-size: contain;
+ mask-repeat: no-repeat;
+ mask-position: center;
pointer-events: none;
}
@@ -372,12 +373,18 @@
}
}
+// Align help buttons correctly with checkboxes
+
.jenkins-checkbox-help-wrapper {
display: flex;
align-items: center;
justify-content: flex-start;
}
+.jenkins-checkbox + a.jenkins-help-button {
+ vertical-align: top;
+}
+
.jenkins-checkbox {
position: relative;
display: inline-flex;
@@ -437,7 +444,7 @@
}
&::after {
- content: "✓";
+ content: "";
display: flex;
align-items: center;
justify-content: center;
@@ -447,11 +454,13 @@
right: 0;
width: 22px;
height: 22px;
- font-weight: 800;
- color: var(--background);
- transition: 0.2s ease;
+ background: var(--background);
+ mask-image: url("data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='UTF-8'?%3e%3csvg width='384px' height='320px' viewBox='0 0 384 320' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3ePath%3c/title%3e%3cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e%3cpath d='M327.917546,10.9278525 C339.555371,-2.37251966 359.771775,-3.72027991 373.072147,7.91754577 C386.239516,19.4389932 387.692129,39.368305 376.427694,52.671077 L376.082454,53.0721475 L152.082454,309.072147 C140.014868,322.863675 118.889432,323.700972 105.767743,311.015951 L105.372583,310.627417 L9.372583,214.627417 C-3.12419433,202.13064 -3.12419433,181.86936 9.372583,169.372583 C21.7443926,157.000773 41.7261905,156.877055 54.2501999,169.001429 L54.627417,169.372583 L126.441,241.186 L327.917546,10.9278525 Z' id='Path' fill='%23FF0000' fill-rule='nonzero'%3e%3c/path%3e%3c/g%3e%3c/svg%3e");
+ mask-size: 10px 10px;
+ mask-repeat: no-repeat;
+ mask-position: center;
+ transition: var(--standard-transition);
transform: scale(0);
- font-size: 12px;
}
&:hover {
@@ -462,6 +471,7 @@
&:active, &:focus {
&::before {
+ border: 5px solid var(--focus-input-border);
box-shadow: 0 0 0 5px var(--focus-input-glow);
}
}
@@ -627,3 +637,8 @@
}
}
}
+
+// TODO Remove when https://github.com/jenkinsci/jenkins/pull/5916 is merged in
+.jenkins-\!-margin-bottom-0 {
+ margin-bottom: 0 !important;
+}
diff --git a/war/src/main/less/modules/tooltips.less b/war/src/main/less/modules/tooltips.less
index 8c1b499c1985..395d9b44b532 100644
--- a/war/src/main/less/modules/tooltips.less
+++ b/war/src/main/less/modules/tooltips.less
@@ -8,4 +8,5 @@
font-size: 0.8rem;
z-index: 40;
overflow: hidden;
+ max-width: none !important;
}
diff --git a/war/src/main/resources/images/ionicons/close-outline.svg b/war/src/main/resources/images/ionicons/close-outline.svg
new file mode 100644
index 000000000000..7ff315739e50
--- /dev/null
+++ b/war/src/main/resources/images/ionicons/close-outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/war/src/main/webapp/scripts/hudson-behavior.js b/war/src/main/webapp/scripts/hudson-behavior.js
index 2174329378b0..5834b24b8b08 100644
--- a/war/src/main/webapp/scripts/hudson-behavior.js
+++ b/war/src/main/webapp/scripts/hudson-behavior.js
@@ -2349,7 +2349,7 @@ var hoverNotification = (function() {
// Decrease vertical padding for checkboxes
window.addEventListener('load', function () {
document.querySelectorAll(".jenkins-form-item").forEach(function (element) {
- if (element.querySelector("input[type='checkbox']") != null && element.querySelector(".advancedLink") == null) {
+ if (element.querySelector(":scope > .optionalBlock-container > .row-group-start input[type='checkbox'], :scope > .optional-block-start input[type='checkbox'], :scope > div > .jenkins-checkbox") != null) {
element.classList.add("jenkins-form-item--tight")
}
});