@knime/hub-features 1.14.11 → 1.14.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @knime/hub-features
2
2
 
3
+ ## 1.14.12
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [5e6e229]
8
+ - @knime/components@1.38.3
9
+
3
10
  ## 1.14.11
4
11
 
5
12
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knime/hub-features",
3
- "version": "1.14.11",
3
+ "version": "1.14.12",
4
4
  "description": "Vue components & composables for shared hub features",
5
5
  "homepage": "https://knime.github.io/webapps-common/",
6
6
  "license": "GPL 3 and Additional Permissions according to Sec. 7 (SEE the file LICENSE)",
@@ -31,7 +31,7 @@
31
31
  "lodash-es": "4.17.21",
32
32
  "ofetch": "^1.4.1",
33
33
  "typescript": "^5.8.3",
34
- "@knime/components": "1.38.2",
34
+ "@knime/components": "1.38.3",
35
35
  "@knime/styles": "1.13.0",
36
36
  "@knime/utils": "1.5.8"
37
37
  },
@@ -121,15 +121,15 @@ defineExpose({
121
121
 
122
122
  &::after {
123
123
  position: absolute;
124
- content: "";
125
124
  width: 0;
126
125
  height: 0;
126
+ content: "";
127
127
  }
128
128
 
129
129
  /* transparent background to maintain focus on the popover while transitioning into it with the mouse */
130
130
  &::before {
131
- content: "";
132
131
  position: absolute;
132
+ content: "";
133
133
  background-color: rgb(0 0 0 / 0%);
134
134
  }
135
135
 
@@ -137,17 +137,17 @@ defineExpose({
137
137
  &::after {
138
138
  top: calc(100% + var(--popover-top-margin) - var(--popover-arrow-size));
139
139
  right: 20px;
140
- border-left: var(--popover-arrow-size) solid transparent;
141
140
  border-right: var(--popover-arrow-size) solid transparent;
142
141
  border-bottom: var(--popover-arrow-size) solid var(--knime-white);
142
+ border-left: var(--popover-arrow-size) solid transparent;
143
143
 
144
144
  @media only screen and (width <= 900px) {
145
- border-top: var(--popover-arrow-size) solid var(--knime-white);
146
- border-bottom: 0;
145
+ top: auto;
147
146
  bottom: calc(
148
147
  100% + var(--popover-top-margin) - var(--popover-arrow-size)
149
148
  );
150
- top: auto;
149
+ border-top: var(--popover-arrow-size) solid var(--knime-white);
150
+ border-bottom: 0;
151
151
  }
152
152
  }
153
153
 
@@ -173,22 +173,21 @@ defineExpose({
173
173
  }
174
174
 
175
175
  & .content {
176
- width: var(--popover-width, 300px);
177
176
  position: absolute;
178
177
  top: calc(
179
178
  100% + var(--popover-top-margin) - 1px
180
179
  ); /* shift by one pixel to avoid zoom issues */
181
180
 
182
181
  right: 0;
182
+ width: var(--popover-width, 300px);
183
183
  padding: 20px;
184
184
  background: var(--knime-white);
185
185
 
186
186
  @media only screen and (width <= 900px) {
187
+ top: auto;
187
188
  bottom: calc(
188
189
  100% + var(--popover-top-margin) - 1px
189
190
  ); /* shift by one pixel to avoid zoom issues */
190
-
191
- top: auto;
192
191
  }
193
192
  }
194
193
 
@@ -200,8 +199,8 @@ defineExpose({
200
199
  }
201
200
 
202
201
  &.disabled {
203
- opacity: 0.5;
204
202
  pointer-events: none;
203
+ opacity: 0.5;
205
204
  }
206
205
  }
207
206
 
@@ -56,11 +56,11 @@ const displayText = computed(() => {
56
56
 
57
57
  .container {
58
58
  position: relative;
59
- background-color: var(--knime-white);
60
59
  display: flex;
61
60
  align-items: center;
62
61
  justify-content: center;
63
62
  height: 100%;
63
+ background-color: var(--knime-white);
64
64
 
65
65
  & > svg {
66
66
  @mixin svg-icon-size 24;
@@ -101,32 +101,32 @@ const onCreate = async () => {
101
101
 
102
102
  <style lang="postcss" scoped>
103
103
  .create-version-form {
104
- height: 100%;
105
- max-height: 100%;
106
- width: 100%;
107
104
  display: flex;
108
105
  flex-direction: column;
106
+ width: 100%;
107
+ height: 100%;
108
+ max-height: 100%;
109
109
 
110
110
  & .form-content {
111
+ z-index: 1;
111
112
  display: flex;
112
113
  flex-direction: column;
114
+ gap: 30px;
113
115
  height: 100%;
114
116
  padding: 30px 30px 0;
115
- gap: 30px;
116
- overscroll-behavior: none;
117
- isolation: isolate;
118
117
  overflow: auto;
119
- z-index: 1;
118
+ overscroll-behavior: none;
120
119
  background-color: var(--knime-gray-ultra-light);
120
+ isolation: isolate;
121
121
 
122
122
  & .description {
123
+ display: flex;
123
124
  width: 100%;
124
125
  max-width: unset;
125
- display: flex;
126
126
 
127
127
  & :deep(textarea) {
128
- width: 100%;
129
128
  box-sizing: content-box;
129
+ width: 100%;
130
130
  max-height: 200px;
131
131
  resize: none;
132
132
  }
@@ -134,12 +134,12 @@ const onCreate = async () => {
134
134
 
135
135
  & .error {
136
136
  position: absolute;
137
- word-break: keep-all;
138
137
  margin-top: 6px;
139
- font-weight: 300;
140
138
  font-size: 13px;
141
- color: var(--theme-color-error);
139
+ font-weight: 300;
142
140
  line-height: 18px;
141
+ color: var(--theme-color-error);
142
+ word-break: keep-all;
143
143
  }
144
144
 
145
145
  & .controls {
@@ -103,24 +103,24 @@ const onMenuItemClick = (_: Event, item: (typeof menuItems.value)[number]) => {
103
103
  margin-left: 30px;
104
104
 
105
105
  &::before {
106
- content: "";
107
106
  position: absolute;
108
- left: -22px;
109
107
  top: 0;
108
+ left: -22px;
110
109
  width: 2px;
111
110
  height: calc(100% + 30px);
111
+ content: "";
112
112
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 5 5'%3E%3Ccircle cx='1' cy='1' r='.5' fill='%236E6E6E'/%3E%3C/svg%3E");
113
- background-size: 5px;
114
113
  background-repeat: repeat-y;
114
+ background-size: 5px;
115
115
  }
116
116
 
117
117
  & .current-state {
118
- background-color: var(--knime-gray-ultra-light);
119
118
  display: flex;
120
- justify-content: space-between;
119
+ gap: 10px;
121
120
  align-items: center;
121
+ justify-content: space-between;
122
122
  padding: 10px;
123
- gap: 10px;
123
+ background-color: var(--knime-gray-ultra-light);
124
124
  transition: background-color 0.25s ease;
125
125
 
126
126
  & .left {
@@ -128,24 +128,24 @@ const onMenuItemClick = (_: Event, item: (typeof menuItems.value)[number]) => {
128
128
  display: flex;
129
129
  flex-direction: column;
130
130
  gap: 3px;
131
- overflow-wrap: anywhere;
132
131
  word-break: normal;
132
+ overflow-wrap: anywhere;
133
133
 
134
134
  & h6 {
135
135
  display: flex;
136
136
  align-items: center;
137
137
  margin: 0;
138
138
  font-size: 13px;
139
- line-height: 18px;
140
139
  font-weight: 700;
140
+ line-height: 18px;
141
141
  transition: color 0.25s ease;
142
142
 
143
143
  & .draft-icon {
144
144
  @mixin svg-icon-size 20;
145
145
 
146
+ padding: 4px;
146
147
  margin-right: 4px;
147
148
  background: var(--knime-carrot-light);
148
- padding: 4px;
149
149
  border-radius: 1000px;
150
150
  }
151
151
  }
@@ -153,15 +153,15 @@ const onMenuItemClick = (_: Event, item: (typeof menuItems.value)[number]) => {
153
153
  & .labels {
154
154
  display: flex;
155
155
  flex-flow: row wrap;
156
- align-items: center;
157
156
  gap: 5px;
157
+ align-items: center;
158
158
  }
159
159
 
160
160
  & .date {
161
161
  margin: 0;
162
162
  font-size: 11px;
163
- line-height: 16px;
164
163
  font-weight: 300;
164
+ line-height: 16px;
165
165
  transition: color 0.25s ease;
166
166
  }
167
167
  }
@@ -169,9 +169,9 @@ const onMenuItemClick = (_: Event, item: (typeof menuItems.value)[number]) => {
169
169
 
170
170
  & .right {
171
171
  display: flex;
172
- justify-content: flex-end;
173
- align-items: center;
174
172
  gap: 8px;
173
+ align-items: center;
174
+ justify-content: flex-end;
175
175
 
176
176
  & .create-button {
177
177
  white-space: nowrap;
@@ -179,34 +179,34 @@ const onMenuItemClick = (_: Event, item: (typeof menuItems.value)[number]) => {
179
179
 
180
180
  & .controls {
181
181
  display: flex;
182
- justify-content: center;
183
182
  flex-direction: column;
184
- border-left: 1px solid var(--knime-silver-sand);
183
+ justify-content: center;
185
184
  padding-left: 5px;
186
185
  margin-right: -4px;
186
+ border-left: 1px solid var(--knime-silver-sand);
187
187
  }
188
188
  }
189
189
 
190
190
  &::before {
191
- content: "";
191
+ position: absolute;
192
+ top: 12px;
193
+ left: -6px;
192
194
  width: 12px;
193
195
  height: 12px;
196
+ content: "";
194
197
  background-color: var(--knime-gray-ultra-light);
195
198
  transform: rotateZ(45deg);
196
- position: absolute;
197
- left: -6px;
198
- top: 12px;
199
199
  transition: background-color 0.25s ease;
200
200
  }
201
201
 
202
202
  &::after {
203
- content: "";
204
203
  position: absolute;
205
- left: -24px;
206
204
  top: 15px;
207
- background-color: var(--knime-masala);
205
+ left: -24px;
208
206
  width: 6px;
209
207
  height: 6px;
208
+ content: "";
209
+ background-color: var(--knime-masala);
210
210
  border-radius: 100%;
211
211
  box-shadow: 0 0 0 0 transparent;
212
212
  transition:
@@ -215,8 +215,8 @@ const onMenuItemClick = (_: Event, item: (typeof menuItems.value)[number]) => {
215
215
  }
216
216
 
217
217
  &:hover {
218
- box-shadow: 0 2px 10px 0 var(--knime-gray-dark-semi);
219
218
  cursor: pointer;
219
+ box-shadow: 0 2px 10px 0 var(--knime-gray-dark-semi);
220
220
  }
221
221
 
222
222
  &.selected {
@@ -186,8 +186,8 @@ onMounted(() => {
186
186
  position: relative;
187
187
  display: flex;
188
188
  flex-flow: row wrap;
189
- align-items: center;
190
189
  gap: var(--space-4);
190
+ align-items: center;
191
191
  padding: var(--space-6) 0;
192
192
 
193
193
  & .function-button {
@@ -222,11 +222,11 @@ onMounted(() => {
222
222
  }
223
223
 
224
224
  & .headline {
225
- font-size: 16px;
226
- font-weight: 700;
225
+ padding-right: 18px;
227
226
  margin: 0;
228
227
  margin: 0 0 var(--space-8);
229
- padding-right: 18px;
228
+ font-size: 16px;
229
+ font-weight: 700;
230
230
  }
231
231
 
232
232
  & .panel {
@@ -236,8 +236,8 @@ onMounted(() => {
236
236
 
237
237
  & .message,
238
238
  & .description {
239
- font-weight: 300;
240
239
  font-size: 13px;
240
+ font-weight: 300;
241
241
 
242
242
  &:empty {
243
243
  display: none;
@@ -121,13 +121,13 @@ const closeLabelPopovers = throttle(() => {
121
121
 
122
122
  .manage-versions-container {
123
123
  position: relative;
124
- background-color: var(--knime-gray-light-semi);
125
- height: 100%;
126
124
  display: flex;
127
125
  flex-direction: column;
128
- justify-content: flex-start;
129
126
  align-items: flex-start;
127
+ justify-content: flex-start;
128
+ height: 100%;
130
129
  overscroll-behavior: none;
130
+ background-color: var(--knime-gray-light-semi);
131
131
  isolation: isolate;
132
132
 
133
133
  & .close {
@@ -144,9 +144,9 @@ const closeLabelPopovers = throttle(() => {
144
144
  height: 100%;
145
145
 
146
146
  & .header {
147
- background-color: var(--knime-white);
148
147
  z-index: 2;
149
148
  padding: 32px 30px 30px;
149
+ background-color: var(--knime-white);
150
150
 
151
151
  & h4 {
152
152
  display: inline;
@@ -158,11 +158,11 @@ const closeLabelPopovers = throttle(() => {
158
158
  & .history-icon {
159
159
  @mixin svg-icon-size 24;
160
160
 
161
+ position: relative;
162
+ top: 1px;
161
163
  margin-right: 9px;
162
164
  vertical-align: sub;
163
165
  stroke: var(--knime-masala);
164
- position: relative;
165
- top: 1px;
166
166
  }
167
167
  }
168
168
 
@@ -180,9 +180,9 @@ const closeLabelPopovers = throttle(() => {
180
180
  }
181
181
 
182
182
  & .changes {
183
- background-color: var(--knime-white);
184
183
  width: 100%;
185
184
  padding-top: 30px;
185
+ background-color: var(--knime-white);
186
186
  }
187
187
  }
188
188
  }
@@ -4,19 +4,19 @@
4
4
 
5
5
  <style lang="postcss" scoped>
6
6
  .no-versions-item {
7
- font-weight: 300;
7
+ padding-top: 4px;
8
8
  font-size: 12px;
9
+ font-weight: 300;
9
10
  line-height: 15px;
10
- padding-top: 4px;
11
11
 
12
12
  &::after {
13
- content: "";
14
13
  position: absolute;
15
- left: -4px;
16
14
  top: 11px;
17
- background-color: var(--knime-masala);
15
+ left: -4px;
18
16
  width: 6px;
19
17
  height: 6px;
18
+ content: "";
19
+ background-color: var(--knime-masala);
20
20
  border-radius: 100%;
21
21
  }
22
22
  }
@@ -59,18 +59,18 @@ defineEmits<{
59
59
  height: 100%;
60
60
 
61
61
  & .header {
62
- height: 24px;
63
- width: 440px;
64
- margin-bottom: 10px;
65
62
  display: flex;
66
63
  align-items: center;
64
+ width: 440px;
65
+ height: 24px;
66
+ margin-bottom: 10px;
67
67
 
68
68
  & .title {
69
69
  display: inline;
70
70
  margin: 0;
71
71
  font-size: 16px;
72
- line-height: 19px;
73
72
  font-weight: 700;
73
+ line-height: 19px;
74
74
  }
75
75
 
76
76
  @media only screen and (width <= 900px) {
@@ -80,6 +80,9 @@ defineEmits<{
80
80
 
81
81
  & .versions {
82
82
  position: relative;
83
+ display: flex;
84
+ flex-direction: column;
85
+ gap: 10px;
83
86
 
84
87
  /*
85
88
  Explicit min-height to ensure submenu is never cut off.
@@ -88,22 +91,19 @@ defineEmits<{
88
91
  min-height: 50px;
89
92
  padding: 0 0 10px 20px;
90
93
  margin-left: 10px;
91
- -ms-overflow-style: none; /* Hide scrollbar for IE and Edge */
92
94
  scrollbar-width: none; /* Hide scrollbar for Firefox */
93
- display: flex;
94
- flex-direction: column;
95
- gap: 10px;
95
+ -ms-overflow-style: none; /* Hide scrollbar for IE and Edge */
96
96
 
97
97
  &::before {
98
- content: "";
99
98
  position: absolute;
100
- left: -2px;
101
99
  top: -30px;
100
+ left: -2px;
102
101
  width: 2px;
103
102
  height: calc(100% + 35px);
103
+ content: "";
104
104
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 5 5'%3E%3Ccircle cx='1' cy='1' r='.5' fill='%236E6E6E'/%3E%3C/svg%3E");
105
- background-size: 5px;
106
105
  background-repeat: repeat-y;
106
+ background-size: 5px;
107
107
  }
108
108
 
109
109
  &.no-changes::before {
@@ -113,8 +113,8 @@ defineEmits<{
113
113
  }
114
114
 
115
115
  & .empty-versions {
116
- font-size: 11px;
117
116
  padding: 7px;
117
+ font-size: 11px;
118
118
  }
119
119
 
120
120
  /* Hide scrollbar for now */
@@ -140,12 +140,12 @@ const onLabelLeave = () => {
140
140
  <style lang="postcss" scoped>
141
141
  .version-item-container {
142
142
  position: relative;
143
- background-color: var(--knime-white);
144
143
  display: flex;
144
+ gap: 15px;
145
145
  align-items: center;
146
146
  align-items: stretch;
147
147
  padding: 10px;
148
- gap: 15px;
148
+ background-color: var(--knime-white);
149
149
  transition: background-color 0.25s ease;
150
150
 
151
151
  & .tooltip {
@@ -155,9 +155,9 @@ const onLabelLeave = () => {
155
155
  }
156
156
 
157
157
  & p {
158
+ margin: 10px 0;
158
159
  font-size: 11px;
159
160
  line-height: 1.5;
160
- margin: 10px 0;
161
161
  }
162
162
 
163
163
  & button {
@@ -171,64 +171,64 @@ const onLabelLeave = () => {
171
171
  display: flex;
172
172
  flex-direction: column;
173
173
  gap: 3px;
174
- overflow-wrap: break-word;
175
174
  word-break: normal;
175
+ overflow-wrap: break-word;
176
176
 
177
177
  & h6 {
178
178
  display: block;
179
179
  margin: 0;
180
180
  font-size: 13px;
181
- line-height: 18px;
182
181
  font-weight: 700;
182
+ line-height: 18px;
183
183
  transition: color 0.25s ease;
184
184
  }
185
185
 
186
186
  & .footer-info {
187
187
  margin: 0;
188
188
  font-size: 11px;
189
- line-height: 1.5;
190
189
  font-weight: 300;
190
+ line-height: 1.5;
191
191
  transition: color 0.25s ease;
192
192
  }
193
193
  }
194
194
 
195
195
  & .right {
196
196
  display: flex;
197
- justify-content: flex-end;
197
+ gap: 8px;
198
198
  align-items: stretch;
199
+ justify-content: flex-end;
199
200
  width: 100px;
200
- gap: 8px;
201
201
 
202
202
  & .controls {
203
203
  display: flex;
204
- justify-content: center;
205
204
  flex-direction: column;
206
- border-left: 1px solid var(--knime-silver-sand);
205
+ justify-content: center;
207
206
  padding-left: 5px;
208
207
  margin-right: -4px;
208
+ border-left: 1px solid var(--knime-silver-sand);
209
209
  }
210
210
  }
211
211
 
212
212
  &::before {
213
- content: "";
213
+ position: absolute;
214
+ top: 12px;
215
+ left: -6px;
214
216
  width: 12px;
215
217
  height: 12px;
218
+ content: "";
216
219
  background-color: var(--knime-white);
217
220
  transform: rotateZ(45deg);
218
- position: absolute;
219
- left: -6px;
220
- top: 12px;
221
221
  transition: background-color 0.25s ease;
222
222
  }
223
223
 
224
224
  &::after {
225
- content: "";
226
225
  position: absolute;
227
- left: -24px;
228
226
  top: 15px;
229
- background-color: var(--knime-masala);
227
+ left: -24px;
230
228
  width: 6px;
231
229
  height: 6px;
230
+ content: "";
231
+ background-color: var(--knime-masala);
232
232
  border-radius: 100%;
233
233
  box-shadow: 0 0 0 0 transparent;
234
234
  transition:
@@ -237,8 +237,8 @@ const onLabelLeave = () => {
237
237
  }
238
238
 
239
239
  &:hover {
240
- box-shadow: 0 2px 10px 0 var(--knime-gray-dark-semi);
241
240
  cursor: pointer;
241
+ box-shadow: 0 2px 10px 0 var(--knime-gray-dark-semi);
242
242
  }
243
243
 
244
244
  &.selected {
@@ -160,9 +160,9 @@ const onShowDetailsClicked = () => {
160
160
 
161
161
  .show-more {
162
162
  all: unset;
163
- cursor: pointer;
164
163
  font-weight: 500;
165
164
  white-space: nowrap;
165
+ cursor: pointer;
166
166
 
167
167
  &:active,
168
168
  &:hover {
@@ -172,9 +172,9 @@ const onShowDetailsClicked = () => {
172
172
 
173
173
  .copy-button-wrapper {
174
174
  & .button {
175
- font-size: 13px;
176
175
  padding: 0;
177
176
  margin-top: 10px;
177
+ font-size: 13px;
178
178
  }
179
179
  }
180
180