@nethserver/ns8-ui-lib 1.12.2 → 1.12.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nethserver/ns8-ui-lib",
3
- "version": "1.12.2",
3
+ "version": "1.12.4",
4
4
  "description": "Vue.js library for NethServer 8 UI",
5
5
  "keywords": [
6
6
  "nethserver",
@@ -53,7 +53,7 @@
53
53
  "mark.js": "^8.11.1",
54
54
  "minimist": "^1.2.5",
55
55
  "rollup": "^2.53.2",
56
- "rollup-plugin-terser": "^7.0.2",
56
+ "@rollup/plugin-terser": "^0.4.0",
57
57
  "rollup-plugin-vue": "^5.1.9",
58
58
  "vue": "^2.6.12",
59
59
  "vue-template-compiler": "^2.6.12"
@@ -51,20 +51,20 @@
51
51
  </p>
52
52
  </div>
53
53
  </div>
54
- <button
54
+ <NsButton
55
55
  v-if="actionLabel"
56
56
  @click="$emit('action')"
57
+ :loading="loadingAction"
58
+ kind="ghost"
59
+ size="sm"
60
+ type="button"
57
61
  :class="[
58
62
  `${carbonPrefix}--inline-notification__action-button`,
59
- `${carbonPrefix}--btn`,
60
- `${carbonPrefix}--btn--sm`,
61
- `${carbonPrefix}--btn--ghost`,
62
63
  'action-button'
63
64
  ]"
64
- type="button"
65
65
  >
66
66
  {{ actionLabel }}
67
- </button>
67
+ </NsButton>
68
68
  <button
69
69
  v-if="showCloseButton"
70
70
  type="button"
@@ -81,11 +81,12 @@
81
81
  <script>
82
82
  import { CvInlineNotification } from "@carbon/vue";
83
83
  import NsCircleTimer from "./NsCircleTimer.vue";
84
+ import NsButton from "./NsButton.vue";
84
85
 
85
86
  export default {
86
87
  name: "NsInlineNotification",
87
88
  extends: CvInlineNotification,
88
- components: { NsCircleTimer },
89
+ components: { NsCircleTimer, NsButton },
89
90
  props: {
90
91
  showCloseButton: {
91
92
  type: Boolean,
@@ -107,6 +108,10 @@ export default {
107
108
  type: Boolean,
108
109
  default: false
109
110
  },
111
+ loadingAction: {
112
+ type: Boolean,
113
+ default: false
114
+ },
110
115
  timer: {
111
116
  type: Number
112
117
  }
@@ -45,7 +45,7 @@
45
45
 
46
46
  <!-- cancel button -->
47
47
  <div
48
- v-if="isCancelShown && isProgressShown"
48
+ v-if="isCancelShown && isProgressShown && !isConfirmCancelShown"
49
49
  :class="[
50
50
  `${carbonPrefix}--toast-notification__caption`,
51
51
  `action`,
@@ -58,16 +58,50 @@
58
58
  `${carbonPrefix}--inline-notification__action-button`,
59
59
  `${carbonPrefix}--btn`,
60
60
  `${carbonPrefix}--btn--sm`,
61
- { 'bx--btn--ghost': !isConfirmCancelShown },
62
- { 'bx--btn--danger': isConfirmCancelShown }
61
+ `bx--btn--ghost`,
63
62
  ]"
64
- :disabled="isCancelButtonDisabled"
65
63
  type="button"
66
64
  >
67
- {{ isConfirmCancelShown ? confirmCancelLabel : cancelLabel }}
65
+ {{ cancelLabel }}
68
66
  </button>
69
67
  </div>
70
68
 
69
+ <!-- cancel confirmation -->
70
+ <div
71
+ v-else-if="isCancelShown && isProgressShown && isConfirmCancelShown"
72
+ class="cancel-confirmation"
73
+ >
74
+ <p class="cancel-confirmation__text">{{ confirmCancelText }}</p>
75
+ <div class="cancel-confirmation__buttons">
76
+ <button
77
+ @click="handleKeepRunning"
78
+ :class="[
79
+ `${carbonPrefix}--inline-notification__action-button`,
80
+ `${carbonPrefix}--btn`,
81
+ `${carbonPrefix}--btn--sm`,
82
+ `bx--btn--ghost`,
83
+ ]"
84
+ type="button"
85
+ :disabled="isKeepRunningButtonDisabled"
86
+ >
87
+ {{ keepRunningLabel }}
88
+ </button>
89
+ <button
90
+ @click="confirmCancelTask"
91
+ :class="[
92
+ `${carbonPrefix}--inline-notification__action-button`,
93
+ `${carbonPrefix}--btn`,
94
+ `${carbonPrefix}--btn--sm`,
95
+ `bx--btn--danger`,
96
+ ]"
97
+ :disabled="isCancelButtonDisabled"
98
+ type="button"
99
+ >
100
+ {{ confirmCancelLabel }}
101
+ </button>
102
+ </div>
103
+ </div>
104
+
71
105
  <!-- action button -->
72
106
  <div
73
107
  v-else-if="actionLabel"
@@ -153,7 +187,12 @@ export default {
153
187
  default: false
154
188
  },
155
189
  cancelLabel: { type: String, default: "Abort" },
156
- confirmCancelLabel: { type: String, default: "Confirm abort" },
190
+ confirmCancelText: {
191
+ type: String,
192
+ default: "Abort this task? This action can't be undone",
193
+ },
194
+ keepRunningLabel: { type: String, default: "Keep running" },
195
+ confirmCancelLabel: { type: String, default: "Yes, abort" },
157
196
  closeAriaLabel: { type: String, default: "Dismiss notification" },
158
197
  kind: {
159
198
  type: String,
@@ -165,25 +204,23 @@ export default {
165
204
  data() {
166
205
  return {
167
206
  isConfirmCancelShown: false,
168
- isCancelButtonDisabled: false
207
+ isCancelButtonDisabled: false,
208
+ isKeepRunningButtonDisabled: false,
169
209
  };
170
210
  },
171
211
  methods: {
172
212
  cancelTask() {
173
- if (!this.isConfirmCancelShown) {
174
- // show confirmation
175
- this.isConfirmCancelShown = true;
176
-
177
- setTimeout(() => {
178
- this.isConfirmCancelShown = false;
179
- }, 5000);
180
- } else {
181
- // cancel task
182
- this.$emit("cancelTask", this.id);
183
- this.isCancelButtonDisabled = true;
184
- }
185
- }
186
- }
213
+ this.isConfirmCancelShown = true;
214
+ },
215
+ handleKeepRunning() {
216
+ this.isConfirmCancelShown = false;
217
+ },
218
+ confirmCancelTask() {
219
+ this.$emit("cancelTask", this.id);
220
+ this.isCancelButtonDisabled = true;
221
+ this.isKeepRunningButtonDisabled = true;
222
+ },
223
+ },
187
224
  };
188
225
  </script>
189
226
 
@@ -198,6 +235,17 @@ export default {
198
235
  margin-bottom: 0;
199
236
  }
200
237
 
238
+ .cancel-confirmation {
239
+ margin-top: 1rem;
240
+ }
241
+
242
+ .cancel-confirmation__buttons {
243
+ margin-top: 0.5rem;
244
+ margin-bottom: 1.5rem;
245
+ display: flex;
246
+ gap: 2rem;
247
+ }
248
+
201
249
  .bx--toast-notification .bx--inline-notification__action-button {
202
250
  // following rule uses branding color so it's inside core _core.scss
203
251
  // color: $inverse-link;