powr-sdk-web 4.1.5 → 4.1.6

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.
Files changed (2) hide show
  1. package/dist/tasks/index.js +52 -15
  2. package/package.json +1 -1
@@ -185,6 +185,15 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
185
185
  theme = _ref$theme === void 0 ? 'light' : _ref$theme,
186
186
  _ref$className = _ref.className,
187
187
  className = _ref$className === void 0 ? '' : _ref$className;
188
+ // Add CSS for spinner animation
189
+ _react["default"].useEffect(function () {
190
+ var style = document.createElement('style');
191
+ style.textContent = "\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n ";
192
+ document.head.appendChild(style);
193
+ return function () {
194
+ return document.head.removeChild(style);
195
+ };
196
+ }, []);
188
197
  var _useState = (0, _react.useState)([]),
189
198
  _useState2 = _slicedToArray(_useState, 2),
190
199
  tasks = _useState2[0],
@@ -197,15 +206,19 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
197
206
  _useState6 = _slicedToArray(_useState5, 2),
198
207
  loading = _useState6[0],
199
208
  setLoading = _useState6[1];
200
- var _useState7 = (0, _react.useState)(false),
209
+ var _useState7 = (0, _react.useState)(new Set()),
201
210
  _useState8 = _slicedToArray(_useState7, 2),
202
- showCreateModal = _useState8[0],
203
- setShowCreateModal = _useState8[1];
204
- var _useState9 = (0, _react.useState)(null),
211
+ executingTasks = _useState8[0],
212
+ setExecutingTasks = _useState8[1];
213
+ var _useState9 = (0, _react.useState)(false),
205
214
  _useState0 = _slicedToArray(_useState9, 2),
206
- editingTask = _useState0[0],
207
- setEditingTask = _useState0[1];
208
- var _useState1 = (0, _react.useState)({
215
+ showCreateModal = _useState0[0],
216
+ setShowCreateModal = _useState0[1];
217
+ var _useState1 = (0, _react.useState)(null),
218
+ _useState10 = _slicedToArray(_useState1, 2),
219
+ editingTask = _useState10[0],
220
+ setEditingTask = _useState10[1];
221
+ var _useState11 = (0, _react.useState)({
209
222
  name: '',
210
223
  description: '',
211
224
  cronExpression: '',
@@ -214,9 +227,9 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
214
227
  params: {},
215
228
  isActive: true
216
229
  }),
217
- _useState10 = _slicedToArray(_useState1, 2),
218
- formData = _useState10[0],
219
- setFormData = _useState10[1];
230
+ _useState12 = _slicedToArray(_useState11, 2),
231
+ formData = _useState12[0],
232
+ setFormData = _useState12[1];
220
233
  (0, _react.useEffect)(function () {
221
234
  fetchTasks();
222
235
  fetchTools();
@@ -379,6 +392,10 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
379
392
  while (1) switch (_context5.n) {
380
393
  case 0:
381
394
  _context5.p = 0;
395
+ // Add task to executing set
396
+ setExecutingTasks(function (prev) {
397
+ return new Set(prev).add(taskId);
398
+ });
382
399
  _context5.n = 1;
383
400
  return (0, _auth.apiCall)(apiUrl, "/tasks/".concat(taskId, "/execute"), projectId, {
384
401
  method: 'POST'
@@ -401,9 +418,18 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
401
418
  console.error('Error executing task:', _t5);
402
419
  onError && onError('Failed to execute task');
403
420
  case 3:
421
+ _context5.p = 3;
422
+ // Remove task from executing set
423
+ setExecutingTasks(function (prev) {
424
+ var newSet = new Set(prev);
425
+ newSet["delete"](taskId);
426
+ return newSet;
427
+ });
428
+ return _context5.f(3);
429
+ case 4:
404
430
  return _context5.a(2);
405
431
  }
406
- }, _callee5, null, [[0, 2]]);
432
+ }, _callee5, null, [[0, 2, 3, 4]]);
407
433
  }));
408
434
  return function handleExecuteTask(_x4) {
409
435
  return _ref6.apply(this, arguments);
@@ -610,12 +636,23 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
610
636
  onClick: function onClick() {
611
637
  return handleExecuteTask(task._id);
612
638
  },
639
+ disabled: executingTasks.has(task._id),
613
640
  style: _objectSpread(_objectSpread({}, styles.actionButton), {}, {
614
- background: '#dbeafe',
615
- color: '#1d4ed8'
641
+ background: executingTasks.has(task._id) ? '#e5e7eb' : '#dbeafe',
642
+ color: executingTasks.has(task._id) ? '#6b7280' : '#1d4ed8',
643
+ cursor: executingTasks.has(task._id) ? 'not-allowed' : 'pointer'
616
644
  }),
617
- title: "Execute Now"
618
- }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Zap, {
645
+ title: executingTasks.has(task._id) ? "Executing..." : "Execute Now"
646
+ }, executingTasks.has(task._id) ? /*#__PURE__*/_react["default"].createElement("div", {
647
+ style: {
648
+ width: '16px',
649
+ height: '16px',
650
+ border: '2px solid #6b7280',
651
+ borderTop: '2px solid transparent',
652
+ borderRadius: '50%',
653
+ animation: 'spin 1s linear infinite'
654
+ }
655
+ }) : /*#__PURE__*/_react["default"].createElement(_lucideReact.Zap, {
619
656
  size: 16
620
657
  })))));
621
658
  }))))), showCreateModal && /*#__PURE__*/_react["default"].createElement("div", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "4.1.5",
3
+ "version": "4.1.6",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "build": "babel src -d dist --copy-files",