ui-soxo-bootstrap-core 2.6.1-dev.31 → 2.6.1-dev.32
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/core/modules/steps/steps.js +14 -2
- package/core/modules/steps/steps.scss +114 -18
- package/package.json +1 -1
|
@@ -1084,7 +1084,19 @@ export default function ProcessStepsPage({ match, CustomComponents = {}, ...prop
|
|
|
1084
1084
|
* - Passes configuration, parameters, and handlers to the component.
|
|
1085
1085
|
* - Handles missing steps or components gracefully.
|
|
1086
1086
|
*/
|
|
1087
|
-
|
|
1087
|
+
/**
|
|
1088
|
+
* Render the active step's dynamic component.
|
|
1089
|
+
*
|
|
1090
|
+
* Intentionally a plain function (not a component) called inline as
|
|
1091
|
+
* `{renderDynamicStep()}`. Defining it as a component inside the parent's
|
|
1092
|
+
* render body creates a fresh component *type* on every re-render — React
|
|
1093
|
+
* then unmounts and remounts the step component on every parent state
|
|
1094
|
+
* change (touchNavVisible, stepSlideDirection, activeStep timer, etc.),
|
|
1095
|
+
* which caused visible re-render/jitter during swipe navigation. Evaluating
|
|
1096
|
+
* it as a function just yields JSX for the real step Component, whose type
|
|
1097
|
+
* is stable, so React reconciles in place.
|
|
1098
|
+
*/
|
|
1099
|
+
const renderDynamicStep = () => {
|
|
1088
1100
|
const step = steps[activeStep];
|
|
1089
1101
|
if (!step) return <Empty description="No step selected" />;
|
|
1090
1102
|
|
|
@@ -1487,7 +1499,7 @@ export default function ProcessStepsPage({ match, CustomComponents = {}, ...prop
|
|
|
1487
1499
|
<Spin />
|
|
1488
1500
|
</div>
|
|
1489
1501
|
) : null}
|
|
1490
|
-
{!loading ?
|
|
1502
|
+
{!loading ? renderDynamicStep() : null}
|
|
1491
1503
|
</div>
|
|
1492
1504
|
</div>
|
|
1493
1505
|
</div>
|
|
@@ -328,56 +328,148 @@
|
|
|
328
328
|
position: absolute;
|
|
329
329
|
top: 50%;
|
|
330
330
|
z-index: 6;
|
|
331
|
-
width:
|
|
332
|
-
height:
|
|
331
|
+
width: 52px;
|
|
332
|
+
height: 52px;
|
|
333
333
|
display: inline-flex;
|
|
334
334
|
align-items: center;
|
|
335
335
|
justify-content: center;
|
|
336
336
|
padding: 0;
|
|
337
337
|
border: none;
|
|
338
338
|
border-radius: 50%;
|
|
339
|
-
background: rgba(30, 58, 138, 0.
|
|
339
|
+
background: rgba(30, 58, 138, 0.55);
|
|
340
|
+
backdrop-filter: blur(8px) saturate(140%);
|
|
341
|
+
-webkit-backdrop-filter: blur(8px) saturate(140%);
|
|
340
342
|
color: #ffffff;
|
|
341
343
|
font-size: 18px;
|
|
342
344
|
cursor: pointer;
|
|
343
|
-
box-shadow:
|
|
345
|
+
box-shadow:
|
|
346
|
+
0 10px 24px rgba(15, 23, 42, 0.22),
|
|
347
|
+
inset 0 0 0 1px rgba(255, 255, 255, 0.18);
|
|
344
348
|
opacity: 0;
|
|
345
349
|
visibility: hidden;
|
|
346
|
-
transform: translateY(-50%) scale(0.
|
|
347
|
-
transition:
|
|
350
|
+
transform: translateY(-50%) scale(0.82);
|
|
351
|
+
transition:
|
|
352
|
+
opacity 260ms ease,
|
|
353
|
+
transform 260ms cubic-bezier(0.2, 0.8, 0.25, 1),
|
|
354
|
+
visibility 0s linear 260ms,
|
|
355
|
+
background-color 200ms ease,
|
|
356
|
+
box-shadow 200ms ease;
|
|
348
357
|
-webkit-tap-highlight-color: transparent;
|
|
349
358
|
touch-action: manipulation;
|
|
350
359
|
}
|
|
351
360
|
|
|
361
|
+
/*
|
|
362
|
+
Decorative pulsing ring around the button.
|
|
363
|
+
- Drawn via ::before so it does not interfere with click targets.
|
|
364
|
+
- Only animates while the button is visible and enabled, to keep the
|
|
365
|
+
idle state calm instead of visually noisy.
|
|
366
|
+
*/
|
|
367
|
+
.steps-touch-nav::before {
|
|
368
|
+
content: '';
|
|
369
|
+
position: absolute;
|
|
370
|
+
inset: 0;
|
|
371
|
+
border-radius: 50%;
|
|
372
|
+
border: 2px solid rgba(255, 255, 255, 0.45);
|
|
373
|
+
opacity: 0;
|
|
374
|
+
pointer-events: none;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.steps-touch-nav.is-visible:not(:disabled)::before {
|
|
378
|
+
animation: steps-touch-nav-ring 2.4s ease-out infinite;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/*
|
|
382
|
+
Radial wash behind the icon for depth.
|
|
383
|
+
- Keeps the icon glyph crisp against varied content backgrounds.
|
|
384
|
+
*/
|
|
385
|
+
.steps-touch-nav::after {
|
|
386
|
+
content: '';
|
|
387
|
+
position: absolute;
|
|
388
|
+
inset: 4px;
|
|
389
|
+
border-radius: 50%;
|
|
390
|
+
background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.22), rgba(255, 255, 255, 0) 65%);
|
|
391
|
+
pointer-events: none;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.steps-touch-nav .anticon {
|
|
395
|
+
position: relative;
|
|
396
|
+
z-index: 1;
|
|
397
|
+
filter: drop-shadow(0 1px 1px rgba(15, 23, 42, 0.25));
|
|
398
|
+
}
|
|
399
|
+
|
|
352
400
|
.steps-touch-nav:hover:not(:disabled),
|
|
353
401
|
.steps-touch-nav:focus-visible:not(:disabled) {
|
|
354
|
-
background: rgba(30, 58, 138,
|
|
402
|
+
background: rgba(30, 58, 138, 0.92);
|
|
403
|
+
box-shadow:
|
|
404
|
+
0 14px 30px rgba(15, 23, 42, 0.32),
|
|
405
|
+
inset 0 0 0 1px rgba(255, 255, 255, 0.28);
|
|
355
406
|
outline: none;
|
|
356
407
|
}
|
|
357
408
|
|
|
409
|
+
.steps-touch-nav:hover:not(:disabled),
|
|
410
|
+
.steps-touch-nav:focus-visible:not(:disabled),
|
|
411
|
+
.steps-touch-nav.is-visible:hover:not(:disabled),
|
|
412
|
+
.steps-touch-nav.is-visible:focus-visible:not(:disabled) {
|
|
413
|
+
opacity: 1;
|
|
414
|
+
}
|
|
415
|
+
|
|
358
416
|
.steps-touch-nav:active:not(:disabled) {
|
|
359
|
-
transform: translateY(-50%) scale(0.
|
|
417
|
+
transform: translateY(-50%) scale(0.94);
|
|
418
|
+
transition:
|
|
419
|
+
transform 120ms ease,
|
|
420
|
+
opacity 120ms ease,
|
|
421
|
+
background-color 120ms ease,
|
|
422
|
+
box-shadow 120ms ease;
|
|
360
423
|
}
|
|
361
424
|
|
|
362
425
|
.steps-touch-nav:disabled {
|
|
363
|
-
background: rgba(148, 163, 184, 0.
|
|
426
|
+
background: rgba(148, 163, 184, 0.38);
|
|
427
|
+
color: rgba(255, 255, 255, 0.7);
|
|
364
428
|
cursor: not-allowed;
|
|
365
|
-
box-shadow: 0 3px 10px rgba(15, 23, 42, 0.
|
|
429
|
+
box-shadow: 0 3px 10px rgba(15, 23, 42, 0.08);
|
|
430
|
+
backdrop-filter: none;
|
|
431
|
+
-webkit-backdrop-filter: none;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.steps-touch-nav:disabled::after {
|
|
435
|
+
display: none;
|
|
366
436
|
}
|
|
367
437
|
|
|
368
438
|
.steps-touch-nav-left {
|
|
369
|
-
left:
|
|
439
|
+
left: 14px;
|
|
370
440
|
}
|
|
371
441
|
|
|
372
442
|
.steps-touch-nav-right {
|
|
373
|
-
right:
|
|
443
|
+
right: 14px;
|
|
374
444
|
}
|
|
375
445
|
|
|
376
446
|
.steps-touch-nav.is-visible {
|
|
377
|
-
opacity:
|
|
447
|
+
opacity: 0.68;
|
|
378
448
|
visibility: visible;
|
|
379
449
|
transform: translateY(-50%) scale(1);
|
|
380
|
-
transition:
|
|
450
|
+
transition:
|
|
451
|
+
opacity 260ms ease,
|
|
452
|
+
transform 260ms cubic-bezier(0.2, 0.8, 0.25, 1),
|
|
453
|
+
visibility 0s linear 0s,
|
|
454
|
+
background-color 200ms ease,
|
|
455
|
+
box-shadow 200ms ease;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
@keyframes steps-touch-nav-ring {
|
|
459
|
+
0% {
|
|
460
|
+
opacity: 0.55;
|
|
461
|
+
transform: scale(1);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
65% {
|
|
465
|
+
opacity: 0;
|
|
466
|
+
transform: scale(1.45);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
100% {
|
|
470
|
+
opacity: 0;
|
|
471
|
+
transform: scale(1.45);
|
|
472
|
+
}
|
|
381
473
|
}
|
|
382
474
|
|
|
383
475
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -390,6 +482,10 @@
|
|
|
390
482
|
transform: translateY(-50%);
|
|
391
483
|
transition: opacity 120ms linear, visibility 0s linear 0s;
|
|
392
484
|
}
|
|
485
|
+
|
|
486
|
+
.steps-touch-nav.is-visible:not(:disabled)::before {
|
|
487
|
+
animation: none;
|
|
488
|
+
}
|
|
393
489
|
}
|
|
394
490
|
|
|
395
491
|
.steps-stage-body::-webkit-scrollbar {
|
|
@@ -742,17 +838,17 @@
|
|
|
742
838
|
}
|
|
743
839
|
|
|
744
840
|
.steps-touch-nav {
|
|
745
|
-
width:
|
|
746
|
-
height:
|
|
841
|
+
width: 44px;
|
|
842
|
+
height: 44px;
|
|
747
843
|
font-size: 16px;
|
|
748
844
|
}
|
|
749
845
|
|
|
750
846
|
.steps-touch-nav-left {
|
|
751
|
-
left:
|
|
847
|
+
left: 8px;
|
|
752
848
|
}
|
|
753
849
|
|
|
754
850
|
.steps-touch-nav-right {
|
|
755
|
-
right:
|
|
851
|
+
right: 8px;
|
|
756
852
|
}
|
|
757
853
|
}
|
|
758
854
|
|