@@ -32,35 +32,12 @@ $maxTreeLevel = $fieldType->getMaxCategoryLevel($fieldType->getCategoryTree());
3232 };
3333
3434 const CategorySelectionHover = {
35- hoverOnFirstItem() {
36- const firstHoverItemId = this.hoverSequence[0];
37- if (firstHoverItemId) {
38- this.items[firstHoverItemId].hovered = true;
39- }
40- },
41- getHoverSequenceByEventKey(key) {
42- const currentHoveredItem = this.getCurrentHoverItem();
43- const sequenceStartIndex = this.hoverSequence.findIndex((seq) => seq === currentHoveredItem.id);
44-
45- if (sequenceStartIndex === -1) {
46- return [];
47- }
48-
49- if (key === 'ArrowDown') {
50- return this.hoverSequence.slice(sequenceStartIndex + 1);
51- }
52- if (key === 'ArrowUp') {
53- return this.hoverSequence.slice(0, sequenceStartIndex).reverse();
35+ isItemHovered(id) {
36+ if (!this.items[id]) {
37+ return false;
5438 }
5539
56- return [];
57- },
58- getCurrentHoverItem() {
59- const currentHoveredItemId = Object.keys(this.items).find((itemId) => {
60- return this.items[itemId].hovered;
61- });
62-
63- return this.items[currentHoveredItemId];
40+ return this.items[id].hovered;
6441 },
6542 keydownSwitcher() {
6643 this.$event.stopPropagation();
@@ -72,15 +49,15 @@ $maxTreeLevel = $fieldType->getMaxCategoryLevel($fieldType->getCategoryTree());
7249 this.$nextTick(() => {
7350 this.$el.focus();
7451 });
75- const currentHoveredItem = this.getCurrentHoverItem ();
52+ const currentHoveredItem = this._getCurrentHoverItem ();
7653
7754 if (!currentHoveredItem) {
78- return this.hoverOnFirstItem ();
55+ return this._hoverOnFirstItem ();
7956 }
8057
8158 let sequenceItemUsed = false;
8259
83- for (const seqId of this.getHoverSequenceByEventKey (this.$event.key)) {
60+ for (const seqId of this._getHoverSequenceByEventKey (this.$event.key)) {
8461 const item = this.items[seqId];
8562 if (!item) {
8663 continue;
@@ -101,7 +78,7 @@ $maxTreeLevel = $fieldType->getMaxCategoryLevel($fieldType->getCategoryTree());
10178 }
10279 currentHoveredItem.hovered = false;
10380 if (!sequenceItemUsed) {
104- this.hoverOnFirstItem ();
81+ this._hoverOnFirstItem ();
10582 }
10683 },
10784 updateItemHovered(id, hoverValue) {
@@ -111,12 +88,35 @@ $maxTreeLevel = $fieldType->getMaxCategoryLevel($fieldType->getCategoryTree());
11188
11289 this.items[id].hovered = hoverValue;
11390 },
114- isItemHovered(id) {
115- if (!this.items[id]) {
116- return false;
91+ _getHoverSequenceByEventKey(key) {
92+ const currentHoveredItem = this._getCurrentHoverItem();
93+ const sequenceStartIndex = this.hoverSequence.findIndex((seq) => seq === currentHoveredItem.id);
94+
95+ if (sequenceStartIndex === -1) {
96+ return [];
11797 }
11898
119- return this.items[id].hovered;
99+ if (key === 'ArrowDown') {
100+ return this.hoverSequence.slice(sequenceStartIndex + 1);
101+ }
102+ if (key === 'ArrowUp') {
103+ return this.hoverSequence.slice(0, sequenceStartIndex).reverse();
104+ }
105+
106+ return [];
107+ },
108+ _getCurrentHoverItem() {
109+ const currentHoveredItemId = Object.keys(this.items).find((itemId) => {
110+ return this.items[itemId].hovered;
111+ });
112+
113+ return this.items[currentHoveredItemId];
114+ },
115+ _hoverOnFirstItem() {
116+ const firstHoverItemId = this.hoverSequence[0];
117+ if (firstHoverItemId) {
118+ this.items[firstHoverItemId].hovered = true;
119+ }
120120 },
121121 };
122122
@@ -147,8 +147,8 @@ $maxTreeLevel = $fieldType->getMaxCategoryLevel($fieldType->getCategoryTree());
147147 classActionMenu() {
148148 return { _active: this.listVisible };
149149 },
150- toggleListVisible( ) {
151- this.listVisible = !this.listVisible ;
150+ itemLabel(id ) {
151+ return this.items[id]?.label || '' ;
152152 },
153153 isTree() {
154154 return true;
@@ -166,6 +166,9 @@ $maxTreeLevel = $fieldType->getMaxCategoryLevel($fieldType->getCategoryTree());
166166
167167 return this.items[id].expanded;
168168 },
169+ toggleListVisible() {
170+ this.listVisible = !this.listVisible;
171+ },
169172 toggleItemExpansion(id) {
170173 if (!this.items[id]) {
171174 return;
@@ -195,19 +198,6 @@ $maxTreeLevel = $fieldType->getMaxCategoryLevel($fieldType->getCategoryTree());
195198 function CategorySelectItemCommon() {
196199 return {
197200 data: null,
198- toggleSelection() {
199- if (!this.data) {
200- return;
201- }
202- this.$event.stopPropagation();
203- this.toggleItemSelection(this.data.id);
204- },
205- isSelected() {
206- if (!this.data) {
207- return false;
208- }
209- return this.isItemSelected(this.data.id);
210- },
211201 classActionMenuItem() {
212202 if (!this.data) {
213203 return {};
@@ -221,6 +211,19 @@ $maxTreeLevel = $fieldType->getMaxCategoryLevel($fieldType->getCategoryTree());
221211 '_with-checkbox': true,
222212 };
223213 },
214+ isSelected() {
215+ if (!this.data) {
216+ return false;
217+ }
218+ return this.isItemSelected(this.data.id);
219+ },
220+ toggleSelection() {
221+ if (!this.data) {
222+ return;
223+ }
224+ this.$event.stopPropagation();
225+ this.toggleItemSelection(this.data.id);
226+ },
224227 }
225228 }
226229
@@ -239,12 +242,12 @@ $maxTreeLevel = $fieldType->getMaxCategoryLevel($fieldType->getCategoryTree());
239242 get itemId() {
240243 return this.data?.id;
241244 },
242- classInnerItem() {
243- return { _parent: this.data.hasChildren };
244- },
245245 itemLevel() {
246246 return this.data.level;
247247 },
248+ classInnerItem() {
249+ return { _parent: this.data.hasChildren };
250+ },
248251 dataExpanded() {
249252 return this.isItemExpanded(this.itemId) ? 'true' : 'false';
250253 },
0 commit comments