bpmn-js 18.6.4 → 18.7.0
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/dist/assets/diagram-js.css +6 -0
- package/dist/bpmn-modeler.development.js +93 -47
- package/dist/bpmn-modeler.production.min.js +21 -19
- package/dist/bpmn-navigated-viewer.development.js +2 -2
- package/dist/bpmn-navigated-viewer.production.min.js +1 -1
- package/dist/bpmn-viewer.development.js +2 -2
- package/dist/bpmn-viewer.production.min.js +1 -1
- package/package.json +3 -3
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
--popup-background-color: var(--color-white);
|
|
64
64
|
--popup-border-color: transparent;
|
|
65
65
|
--popup-shadow-color: var(--color-black-opacity-30);
|
|
66
|
+
--popup-disabled-color: var(--color-grey-225-10-35);
|
|
66
67
|
--popup-description-color: var(--color-grey-225-10-55);
|
|
67
68
|
--popup-no-results-color: var(--color-grey-225-10-55);
|
|
68
69
|
--popup-entry-title-color: var(--color-grey-225-10-55);
|
|
@@ -674,6 +675,11 @@
|
|
|
674
675
|
background-color: var(--popup-entry-hover-color);
|
|
675
676
|
}
|
|
676
677
|
|
|
678
|
+
.djs-popup .entry.disabled {
|
|
679
|
+
color: var(--popup-disabled-color);
|
|
680
|
+
cursor: not-allowed;
|
|
681
|
+
}
|
|
682
|
+
|
|
677
683
|
.djs-popup-body .entry:not(:first-child) {
|
|
678
684
|
margin-top: 2px;
|
|
679
685
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* bpmn-js - bpmn-modeler v18.
|
|
2
|
+
* bpmn-js - bpmn-modeler v18.7.0
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) 2014-present, camunda Services GmbH
|
|
5
5
|
*
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Source Code: https://github.com/bpmn-io/bpmn-js
|
|
10
10
|
*
|
|
11
|
-
* Date: 2025-09-
|
|
11
|
+
* Date: 2025-09-23
|
|
12
12
|
*/
|
|
13
13
|
(function (global, factory) {
|
|
14
14
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
@@ -27542,6 +27542,18 @@
|
|
|
27542
27542
|
|
|
27543
27543
|
const groups = q(() => groupEntries$1(headerEntries), [ headerEntries ]);
|
|
27544
27544
|
|
|
27545
|
+
const isActionable = (entry) => {
|
|
27546
|
+
return entry.action && !entry.disabled;
|
|
27547
|
+
};
|
|
27548
|
+
|
|
27549
|
+
const handleClick = (event, entry) => {
|
|
27550
|
+
if (!isActionable(entry)) {
|
|
27551
|
+
return;
|
|
27552
|
+
}
|
|
27553
|
+
|
|
27554
|
+
return onSelect(event, entry);
|
|
27555
|
+
};
|
|
27556
|
+
|
|
27545
27557
|
return m$1`
|
|
27546
27558
|
<div class="djs-popup-header">
|
|
27547
27559
|
<h3 class="djs-popup-title" title=${ title }>${ title }</h3>
|
|
@@ -27550,15 +27562,16 @@
|
|
|
27550
27562
|
|
|
27551
27563
|
${ group.entries.map(entry => m$1`
|
|
27552
27564
|
<li key=${ entry.id }>
|
|
27553
|
-
<${ entry
|
|
27565
|
+
<${ isActionable(entry) ? 'button' : 'span' }
|
|
27554
27566
|
class=${ getHeaderClasses(entry, entry === selectedEntry) }
|
|
27555
|
-
onClick=${ event =>
|
|
27567
|
+
onClick=${ event => handleClick(event, entry) }
|
|
27556
27568
|
title=${ entry.title || entry.label }
|
|
27557
27569
|
data-id=${ entry.id }
|
|
27558
|
-
|
|
27559
|
-
|
|
27560
|
-
|
|
27561
|
-
|
|
27570
|
+
aria-disabled=${ entry.disabled || undefined }
|
|
27571
|
+
onMouseEnter=${ () => isActionable(entry) && setSelectedEntry(entry) }
|
|
27572
|
+
onMouseLeave=${ () => isActionable(entry) && setSelectedEntry(null) }
|
|
27573
|
+
onFocus=${ () => isActionable(entry) && setSelectedEntry(entry) }
|
|
27574
|
+
onBlur=${ () => isActionable(entry) && setSelectedEntry(null) }
|
|
27562
27575
|
>
|
|
27563
27576
|
${(entry.imageUrl && m$1`<img class="djs-popup-entry-icon" src=${ entry.imageUrl } alt="" />`) ||
|
|
27564
27577
|
(entry.imageHtml && m$1`<div class="djs-popup-entry-icon" dangerouslySetInnerHTML=${ { __html: entry.imageHtml } } />`)}
|
|
@@ -27629,18 +27642,27 @@
|
|
|
27629
27642
|
onAction
|
|
27630
27643
|
} = props;
|
|
27631
27644
|
|
|
27645
|
+
const handleClick = (event, action) => {
|
|
27646
|
+
if (entry.disabled) {
|
|
27647
|
+
return;
|
|
27648
|
+
}
|
|
27649
|
+
|
|
27650
|
+
return onAction(event, entry, action);
|
|
27651
|
+
};
|
|
27652
|
+
|
|
27632
27653
|
return m$1`
|
|
27633
27654
|
<li
|
|
27634
|
-
class=${ clsx('entry', { selected }) }
|
|
27655
|
+
class=${ clsx('entry', { selected, disabled: entry.disabled }) }
|
|
27635
27656
|
data-id=${ entry.id }
|
|
27636
27657
|
title=${ entry.title || entry.label }
|
|
27658
|
+
aria-disabled=${ entry.disabled || undefined }
|
|
27637
27659
|
tabIndex="0"
|
|
27638
|
-
onClick=${
|
|
27660
|
+
onClick=${ handleClick }
|
|
27639
27661
|
onFocus=${ onMouseEnter }
|
|
27640
27662
|
onBlur=${ onMouseLeave }
|
|
27641
27663
|
onMouseEnter=${ onMouseEnter }
|
|
27642
27664
|
onMouseLeave=${ onMouseLeave }
|
|
27643
|
-
onDragStart=${ (event) =>
|
|
27665
|
+
onDragStart=${ (event) => handleClick(event, 'dragstart') }
|
|
27644
27666
|
draggable=${ true }
|
|
27645
27667
|
>
|
|
27646
27668
|
<div class="djs-popup-entry-content">
|
|
@@ -27686,13 +27708,14 @@
|
|
|
27686
27708
|
|
|
27687
27709
|
/**
|
|
27688
27710
|
* @typedef {import('./PopupMenuProvider').PopupMenuEntry} PopupMenuEntry
|
|
27711
|
+
* @typedef {import('./PopupMenuProvider').PopupMenuGroup} PopupMenuGroup
|
|
27689
27712
|
*/
|
|
27690
27713
|
|
|
27691
27714
|
/**
|
|
27692
27715
|
* Component that renders a popup menu entry list.
|
|
27693
27716
|
*
|
|
27694
27717
|
* @param {Object} props
|
|
27695
|
-
* @param {
|
|
27718
|
+
* @param {PopupMenuGroup[]} props.groupedEntries
|
|
27696
27719
|
* @param {PopupMenuEntry} props.selectedEntry
|
|
27697
27720
|
* @param {(entry: PopupMenuEntry | null) => void} props.setSelectedEntry
|
|
27698
27721
|
*/
|
|
@@ -27700,14 +27723,12 @@
|
|
|
27700
27723
|
const {
|
|
27701
27724
|
selectedEntry,
|
|
27702
27725
|
setSelectedEntry,
|
|
27703
|
-
|
|
27726
|
+
groupedEntries,
|
|
27704
27727
|
...restProps
|
|
27705
27728
|
} = props;
|
|
27706
27729
|
|
|
27707
27730
|
const resultsRef = F();
|
|
27708
27731
|
|
|
27709
|
-
const groups = q(() => groupEntries(entries), [ entries ]);
|
|
27710
|
-
|
|
27711
27732
|
// scroll to selected result
|
|
27712
27733
|
A(() => {
|
|
27713
27734
|
const containerEl = resultsRef.current;
|
|
@@ -27724,7 +27745,7 @@
|
|
|
27724
27745
|
|
|
27725
27746
|
return m$1`
|
|
27726
27747
|
<div class="djs-popup-results" ref=${ resultsRef }>
|
|
27727
|
-
${
|
|
27748
|
+
${ groupedEntries.map(group => m$1`
|
|
27728
27749
|
${ group.name && m$1`
|
|
27729
27750
|
<div key=${ group.id } class="entry-header" title=${ group.name }>
|
|
27730
27751
|
${ group.name }
|
|
@@ -27748,33 +27769,6 @@
|
|
|
27748
27769
|
}
|
|
27749
27770
|
|
|
27750
27771
|
|
|
27751
|
-
// helpers
|
|
27752
|
-
function groupEntries(entries) {
|
|
27753
|
-
const groups = [];
|
|
27754
|
-
|
|
27755
|
-
const getGroup = group => groups.find(elem => group.id === elem.id);
|
|
27756
|
-
|
|
27757
|
-
const containsGroup = group => !!getGroup(group);
|
|
27758
|
-
|
|
27759
|
-
// legacy support for provider built for the old popUp menu
|
|
27760
|
-
const formatGroup = group =>
|
|
27761
|
-
typeof group === 'string' ? { id: group } : group;
|
|
27762
|
-
|
|
27763
|
-
entries.forEach(entry => {
|
|
27764
|
-
|
|
27765
|
-
// assume a default group when none is provided
|
|
27766
|
-
const group = entry.group ? formatGroup(entry.group) : { id: 'default' };
|
|
27767
|
-
|
|
27768
|
-
if (!containsGroup(group)) {
|
|
27769
|
-
groups.push({ ...group, entries: [ entry ] });
|
|
27770
|
-
} else {
|
|
27771
|
-
getGroup(group).entries.push(entry);
|
|
27772
|
-
}
|
|
27773
|
-
});
|
|
27774
|
-
|
|
27775
|
-
return groups;
|
|
27776
|
-
}
|
|
27777
|
-
|
|
27778
27772
|
// helpers ////////////////
|
|
27779
27773
|
|
|
27780
27774
|
function scrollIntoView(el) {
|
|
@@ -27792,6 +27786,7 @@
|
|
|
27792
27786
|
* @typedef {import('./PopupMenuProvider').PopupMenuEntry} PopupMenuEntry
|
|
27793
27787
|
* @typedef {import('./PopupMenuProvider').PopupMenuHeaderEntry} PopupMenuHeaderEntry
|
|
27794
27788
|
* @typedef {import('./PopupMenuProvider').PopupMenuEmptyPlaceholderProvider | import('./PopupMenuProvider').PopupMenuEmptyPlaceholder} PopupMenuEmptyPlaceholder
|
|
27789
|
+
* @typedef {import('./PopupMenuProvider').PopupMenuGroup} PopupMenuGroup
|
|
27795
27790
|
*
|
|
27796
27791
|
* @typedef {import('../search/search').default} search
|
|
27797
27792
|
*
|
|
@@ -27867,21 +27862,24 @@
|
|
|
27867
27862
|
const [ entries, setEntries ] = p(filterEntries(originalEntries, searchValue));
|
|
27868
27863
|
const [ selectedEntry, setSelectedEntry ] = p(entries[0]);
|
|
27869
27864
|
|
|
27865
|
+
const groupedEntries = q(() => groupEntries(entries), [ entries ]);
|
|
27866
|
+
|
|
27870
27867
|
const updateEntries = x((newEntries) => {
|
|
27871
27868
|
|
|
27872
27869
|
// always select first
|
|
27873
27870
|
setSelectedEntry(newEntries[0]);
|
|
27874
27871
|
|
|
27875
27872
|
setEntries(newEntries);
|
|
27876
|
-
}, [
|
|
27873
|
+
}, [ setEntries, setSelectedEntry ]);
|
|
27877
27874
|
|
|
27878
27875
|
// filter entries on search value change
|
|
27879
27876
|
_(() => {
|
|
27880
27877
|
updateEntries(filterEntries(originalEntries, searchValue));
|
|
27881
27878
|
}, [ searchValue, originalEntries ]);
|
|
27882
27879
|
|
|
27883
|
-
// handle keyboard
|
|
27880
|
+
// handle keyboard selection
|
|
27884
27881
|
const keyboardSelect = x(direction => {
|
|
27882
|
+
const entries = getOrderedEntries(groupedEntries);
|
|
27885
27883
|
const idx = entries.indexOf(selectedEntry);
|
|
27886
27884
|
|
|
27887
27885
|
let nextIdx = idx + direction;
|
|
@@ -27895,10 +27893,14 @@
|
|
|
27895
27893
|
}
|
|
27896
27894
|
|
|
27897
27895
|
setSelectedEntry(entries[nextIdx]);
|
|
27898
|
-
}, [
|
|
27896
|
+
}, [ groupedEntries, selectedEntry, setSelectedEntry ]);
|
|
27899
27897
|
|
|
27900
27898
|
const handleKeyDown = x(event => {
|
|
27901
27899
|
if (event.key === 'Enter' && selectedEntry) {
|
|
27900
|
+
if (selectedEntry.disabled) {
|
|
27901
|
+
return;
|
|
27902
|
+
}
|
|
27903
|
+
|
|
27902
27904
|
return onSelect(event, selectedEntry);
|
|
27903
27905
|
}
|
|
27904
27906
|
|
|
@@ -27965,7 +27967,7 @@
|
|
|
27965
27967
|
` }
|
|
27966
27968
|
|
|
27967
27969
|
<${PopupMenuList}
|
|
27968
|
-
|
|
27970
|
+
groupedEntries=${ groupedEntries }
|
|
27969
27971
|
selectedEntry=${ selectedEntry }
|
|
27970
27972
|
setSelectedEntry=${ setSelectedEntry }
|
|
27971
27973
|
onAction=${ onSelect }
|
|
@@ -28065,6 +28067,7 @@
|
|
|
28065
28067
|
`;
|
|
28066
28068
|
}
|
|
28067
28069
|
|
|
28070
|
+
|
|
28068
28071
|
// helpers //////////////////////
|
|
28069
28072
|
|
|
28070
28073
|
function getPopupStyle(props) {
|
|
@@ -28075,6 +28078,49 @@
|
|
|
28075
28078
|
};
|
|
28076
28079
|
}
|
|
28077
28080
|
|
|
28081
|
+
function getOrderedEntries(groupedEntries) {
|
|
28082
|
+
const entries = [];
|
|
28083
|
+
|
|
28084
|
+
groupedEntries.forEach(group => {
|
|
28085
|
+
group.entries.forEach(entry => {
|
|
28086
|
+
entries.push(entry);
|
|
28087
|
+
});
|
|
28088
|
+
});
|
|
28089
|
+
|
|
28090
|
+
return entries;
|
|
28091
|
+
}
|
|
28092
|
+
|
|
28093
|
+
/**
|
|
28094
|
+
* @param {PopupMenuEntry[]} entries
|
|
28095
|
+
*
|
|
28096
|
+
* @return {PopupMenuGroup[]}
|
|
28097
|
+
*/
|
|
28098
|
+
function groupEntries(entries) {
|
|
28099
|
+
const groups = [];
|
|
28100
|
+
|
|
28101
|
+
const getGroup = group => groups.find(elem => group.id === elem.id);
|
|
28102
|
+
|
|
28103
|
+
const containsGroup = group => !!getGroup(group);
|
|
28104
|
+
|
|
28105
|
+
// legacy support for provider built for the old popUp menu
|
|
28106
|
+
const formatGroup = group =>
|
|
28107
|
+
typeof group === 'string' ? { id: group } : group;
|
|
28108
|
+
|
|
28109
|
+
entries.forEach(entry => {
|
|
28110
|
+
|
|
28111
|
+
// assume a default group when none is provided
|
|
28112
|
+
const group = entry.group ? formatGroup(entry.group) : { id: 'default' };
|
|
28113
|
+
|
|
28114
|
+
if (!containsGroup(group)) {
|
|
28115
|
+
groups.push({ ...group, entries: [ entry ] });
|
|
28116
|
+
} else {
|
|
28117
|
+
getGroup(group).entries.push(entry);
|
|
28118
|
+
}
|
|
28119
|
+
});
|
|
28120
|
+
|
|
28121
|
+
return groups;
|
|
28122
|
+
}
|
|
28123
|
+
|
|
28078
28124
|
/**
|
|
28079
28125
|
* @typedef {import('../../core/Canvas').default} Canvas
|
|
28080
28126
|
* @typedef {import('../../core/EventBus').default} EventBus
|