bromcom-ui 2.4.14 → 2.4.15
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/bromcom-ui/bromcom-ui.esm.js +1 -1
- package/dist/bromcom-ui/{p-f2e73379.entry.js → p-027c7708.entry.js} +1 -1
- package/dist/bromcom-ui/{p-1b314bd5.entry.js → p-1cd97811.entry.js} +1 -1
- package/dist/bromcom-ui/{p-d4fd1619.entry.js → p-1fc98e5a.entry.js} +1 -1
- package/dist/bromcom-ui/{p-5f44988e.entry.js → p-2bd4c2ba.entry.js} +1 -1
- package/dist/bromcom-ui/{p-59c0459d.entry.js → p-3c1b8095.entry.js} +1 -1
- package/dist/bromcom-ui/p-3d40f6ce.js +1 -0
- package/dist/bromcom-ui/p-4054d5e3.js +1 -0
- package/dist/bromcom-ui/{p-6f9c4492.entry.js → p-7175652d.entry.js} +1 -1
- package/dist/bromcom-ui/p-9f47196d.js +1 -0
- package/dist/bromcom-ui/{p-3d463d45.entry.js → p-af83c581.entry.js} +1 -1
- package/dist/bromcom-ui/{p-89aab923.js → p-b5f0649f.js} +1 -1
- package/dist/bromcom-ui/p-c28be553.entry.js +1 -0
- package/dist/bromcom-ui/p-c6e58492.js +1 -0
- package/dist/bromcom-ui/{p-841a7311.entry.js → p-d4d5758f.entry.js} +1 -1
- package/dist/bromcom-ui/p-e42b15f4.js +1 -0
- package/dist/bromcom-ui/{p-ac4d2284.entry.js → p-ea79fd86.entry.js} +1 -1
- package/dist/cjs/{bcm-6463472f.js → bcm-5dcc129b.js} +6 -0
- package/dist/cjs/bcm-avatar_33.cjs.entry.js +5 -5
- package/dist/cjs/bcm-icon-2_2.cjs.entry.js +2 -2
- package/dist/cjs/bcm-list.cjs.entry.js +287 -218
- package/dist/cjs/bcm-popconfirm-box.cjs.entry.js +4 -4
- package/dist/cjs/bcm-popconfirm.cjs.entry.js +2 -2
- package/dist/cjs/bcm-popover-box.cjs.entry.js +4 -4
- package/dist/cjs/bcm-popover.cjs.entry.js +2 -2
- package/dist/cjs/bcm-search-2.cjs.entry.js +3 -3
- package/dist/cjs/bcm-stepper.cjs.entry.js +3 -3
- package/dist/cjs/bcm-tag-2.cjs.entry.js +2 -2
- package/dist/cjs/bromcom-ui.cjs.js +1 -1
- package/dist/cjs/{generate-2330fd84.js → generate-daf8998f.js} +10 -0
- package/dist/cjs/{label-template-317aee92.js → label-template-39ce726c.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{popover-placement-e5e2f665.js → popover-placement-dacc8fc9.js} +5 -6
- package/dist/cjs/{stepper-states-3c341aa6.js → stepper-states-56f0862b.js} +1 -1
- package/dist/cjs/{string-helper-acab31b6.js → string-helper-991c7e7d.js} +1 -1
- package/dist/collection/components/organism/list/list-key-control.js +104 -0
- package/dist/collection/components/organism/list/list.css +10 -4
- package/dist/collection/components/organism/list/list.js +211 -210
- package/dist/collection/helper/generate.js +10 -0
- package/dist/collection/models/bcm.js +6 -0
- package/dist/collection/templates/list-item-template.js +6 -5
- package/dist/collection/utils/popover-placement.js +4 -5
- package/dist/esm/{bcm-0d5f0281.js → bcm-1571bb45.js} +6 -0
- package/dist/esm/bcm-avatar_33.entry.js +5 -5
- package/dist/esm/bcm-icon-2_2.entry.js +2 -2
- package/dist/esm/bcm-list.entry.js +287 -218
- package/dist/esm/bcm-popconfirm-box.entry.js +4 -4
- package/dist/esm/bcm-popconfirm.entry.js +2 -2
- package/dist/esm/bcm-popover-box.entry.js +4 -4
- package/dist/esm/bcm-popover.entry.js +2 -2
- package/dist/esm/bcm-search-2.entry.js +3 -3
- package/dist/esm/bcm-stepper.entry.js +3 -3
- package/dist/esm/bcm-tag-2.entry.js +2 -2
- package/dist/esm/bromcom-ui.js +1 -1
- package/dist/esm/{generate-2ee52515.js → generate-3a3196bb.js} +10 -0
- package/dist/esm/{label-template-dcde83fb.js → label-template-6989c6ba.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{popover-placement-0b415c4e.js → popover-placement-38aa9b63.js} +5 -6
- package/dist/esm/{stepper-states-8d16f3b0.js → stepper-states-b821e069.js} +1 -1
- package/dist/esm/{string-helper-acc53dad.js → string-helper-cfa6df93.js} +1 -1
- package/dist/types/components/organism/list/list-key-control.d.ts +21 -0
- package/dist/types/components/organism/list/list.d.ts +26 -24
- package/dist/types/components.d.ts +5 -3
- package/dist/types/models/bcm-types.d.ts +1 -0
- package/dist/types/models/bcm.d.ts +5 -1
- package/dist/types/templates/list-item-template.d.ts +1 -0
- package/dist/types/templates/list-template.d.ts +1 -0
- package/package.json +2 -2
- package/dist/bromcom-ui/p-18d770ad.js +0 -1
- package/dist/bromcom-ui/p-3cbd2cb0.js +0 -1
- package/dist/bromcom-ui/p-8754d990.js +0 -1
- package/dist/bromcom-ui/p-93082523.js +0 -1
- package/dist/bromcom-ui/p-970c5b1c.entry.js +0 -1
- package/dist/bromcom-ui/p-dd76fa74.js +0 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
export class ListKeyControl {
|
|
2
|
+
constructor(keyCode, element) {
|
|
3
|
+
this.keyCode = keyCode;
|
|
4
|
+
this.element = element;
|
|
5
|
+
}
|
|
6
|
+
getKeyCode() {
|
|
7
|
+
return this.keyCode;
|
|
8
|
+
}
|
|
9
|
+
isUp() {
|
|
10
|
+
return this.keyCode === 38;
|
|
11
|
+
}
|
|
12
|
+
isDown() {
|
|
13
|
+
return this.keyCode === 40;
|
|
14
|
+
}
|
|
15
|
+
isLeft() {
|
|
16
|
+
return this.keyCode === 37;
|
|
17
|
+
}
|
|
18
|
+
isRight() {
|
|
19
|
+
return this.keyCode === 39;
|
|
20
|
+
}
|
|
21
|
+
isEnter() {
|
|
22
|
+
return this.keyCode === 13;
|
|
23
|
+
}
|
|
24
|
+
isEscape() {
|
|
25
|
+
return this.keyCode === 27;
|
|
26
|
+
}
|
|
27
|
+
isSpace() {
|
|
28
|
+
return this.keyCode === 32;
|
|
29
|
+
}
|
|
30
|
+
getFocusedElement() {
|
|
31
|
+
return this.element.querySelectorAll('.bcm-list__item.focused')[0] || null;
|
|
32
|
+
}
|
|
33
|
+
getFirstElement() {
|
|
34
|
+
return this.element.querySelectorAll('.bcm-list__item')[0] || null;
|
|
35
|
+
}
|
|
36
|
+
getNextElement() {
|
|
37
|
+
var _a;
|
|
38
|
+
return ((_a = this.getFocusedElement()) === null || _a === void 0 ? void 0 : _a.nextElementSibling) || this.getFirstElement();
|
|
39
|
+
}
|
|
40
|
+
getPreviousElement() {
|
|
41
|
+
var _a;
|
|
42
|
+
return ((_a = this.getFocusedElement()) === null || _a === void 0 ? void 0 : _a.previousElementSibling) || this.getFirstElement();
|
|
43
|
+
}
|
|
44
|
+
getChildElement() {
|
|
45
|
+
var _a;
|
|
46
|
+
return ((_a = this.getFocusedElement()) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.bcm-list__item')[0]) || null;
|
|
47
|
+
}
|
|
48
|
+
getParentElement() {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
return ((_b = (_a = this.getFocusedElement()) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement) || null;
|
|
51
|
+
}
|
|
52
|
+
setFocus(element) {
|
|
53
|
+
element.focus();
|
|
54
|
+
}
|
|
55
|
+
keydown() {
|
|
56
|
+
debugger;
|
|
57
|
+
const focusedElement = this.getFocusedElement();
|
|
58
|
+
const nextElement = this.getNextElement();
|
|
59
|
+
const previousElement = this.getPreviousElement();
|
|
60
|
+
const childElement = this.getChildElement();
|
|
61
|
+
const parentElement = this.getParentElement();
|
|
62
|
+
if (this.isUp()) {
|
|
63
|
+
if (focusedElement) {
|
|
64
|
+
if (previousElement) {
|
|
65
|
+
this.setFocus(previousElement);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.setFocus(parentElement);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.setFocus(this.getFirstElement());
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (this.isDown()) {
|
|
76
|
+
if (focusedElement) {
|
|
77
|
+
if (nextElement) {
|
|
78
|
+
this.setFocus(nextElement);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.setFocus(this.getFirstElement());
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.setFocus(this.getFirstElement());
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (this.isLeft()) {
|
|
89
|
+
if (parentElement) {
|
|
90
|
+
this.setFocus(parentElement);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (this.isRight()) {
|
|
94
|
+
if (childElement) {
|
|
95
|
+
this.setFocus(childElement);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (this.isEnter()) {
|
|
99
|
+
if (focusedElement) {
|
|
100
|
+
console.log('seçilen element: ', focusedElement);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -18562,14 +18562,14 @@
|
|
|
18562
18562
|
.bcm-list__container.full-width {
|
|
18563
18563
|
width: 100%;
|
|
18564
18564
|
}
|
|
18565
|
-
.bcm-list__container.bcm-list__type-select, .bcm-list__container.bcm-list__type-autocomplete {
|
|
18565
|
+
.bcm-list__container.bcm-list__type-linked-component, .bcm-list__container.bcm-list__type-select, .bcm-list__container.bcm-list__type-autocomplete {
|
|
18566
18566
|
opacity: 0;
|
|
18567
18567
|
visibility: hidden;
|
|
18568
18568
|
position: absolute;
|
|
18569
18569
|
top: 0;
|
|
18570
18570
|
left: 0;
|
|
18571
18571
|
}
|
|
18572
|
-
.bcm-list__container.bcm-list__type-select.is-open, .bcm-list__container.bcm-list__type-autocomplete.is-open {
|
|
18572
|
+
.bcm-list__container.bcm-list__type-linked-component.is-open, .bcm-list__container.bcm-list__type-select.is-open, .bcm-list__container.bcm-list__type-autocomplete.is-open {
|
|
18573
18573
|
opacity: 1;
|
|
18574
18574
|
visibility: visible;
|
|
18575
18575
|
z-index: 10800;
|
|
@@ -18691,13 +18691,18 @@
|
|
|
18691
18691
|
.bcm-list__item {
|
|
18692
18692
|
padding: 2px 8px;
|
|
18693
18693
|
}
|
|
18694
|
+
.bcm-list__item.disabled {
|
|
18695
|
+
user-select: none;
|
|
18696
|
+
}
|
|
18694
18697
|
.bcm-list__item:focus {
|
|
18695
18698
|
outline: none;
|
|
18696
18699
|
}
|
|
18697
|
-
.bcm-list__item:focus .bcm-list__item-content {
|
|
18698
|
-
color: var(--bcm-color-grey-8);
|
|
18700
|
+
.bcm-list__item:focus > .bcm-list__item-content {
|
|
18699
18701
|
background-color: var(--bcm-color-prime-blue-1);
|
|
18700
18702
|
}
|
|
18703
|
+
.bcm-list__item:focus > .bcm-list__item-content:not(.disabled) {
|
|
18704
|
+
color: var(--bcm-color-grey-8);
|
|
18705
|
+
}
|
|
18701
18706
|
.bcm-list__item-content {
|
|
18702
18707
|
display: flex;
|
|
18703
18708
|
flex-direction: row;
|
|
@@ -18710,6 +18715,7 @@
|
|
|
18710
18715
|
}
|
|
18711
18716
|
.bcm-list__item-content.disabled {
|
|
18712
18717
|
color: var(--bcm-color-grey-6);
|
|
18718
|
+
user-select: none;
|
|
18713
18719
|
}
|
|
18714
18720
|
.bcm-list__item-content.selected {
|
|
18715
18721
|
color: var(--bcm-color-prime-blue-6);
|
|
@@ -18,12 +18,13 @@ import { ListTemplate } from '../../../templates/list-template';
|
|
|
18
18
|
import { getPlacement, setPosition } from '../../../utils/popover-placement';
|
|
19
19
|
import { delay, pluralize } from '../../../utils/utils';
|
|
20
20
|
import listState from '../states/bcm-list2.states';
|
|
21
|
+
import { ListKeyControl } from './list-key-control';
|
|
21
22
|
export class BcmList {
|
|
22
23
|
constructor() {
|
|
23
24
|
this.debounce = null;
|
|
24
25
|
this._id = Generate.UID();
|
|
25
26
|
// All types
|
|
26
|
-
this.type =
|
|
27
|
+
this.type = Bcm.ListType.listbox;
|
|
27
28
|
this.treeview = false;
|
|
28
29
|
this.checkboxes = false;
|
|
29
30
|
this.searchable = false;
|
|
@@ -79,32 +80,13 @@ export class BcmList {
|
|
|
79
80
|
this.data = [];
|
|
80
81
|
this.debounceHandler = Generate.debounceInput(() => this.listenResize(), 300, false);
|
|
81
82
|
}
|
|
82
|
-
async componentDidLoad() {
|
|
83
|
-
await this.initState();
|
|
84
|
-
if (this.type == 'select' || this.type == 'autocomplete') {
|
|
85
|
-
const list = this.el.querySelector(`#bcm-list-${this._id}`);
|
|
86
|
-
if (list) {
|
|
87
|
-
document.body.appendChild(list);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
83
|
connectedCallback() {
|
|
92
84
|
if (this.height != '256px') {
|
|
93
85
|
this.limit = Math.floor(+(this.height.replace('px', '')) / 32);
|
|
94
86
|
this.searchResultLimit = this.limit;
|
|
95
|
-
// this.searchGetParents = 20
|
|
96
87
|
this.markForCheck();
|
|
97
88
|
}
|
|
98
89
|
}
|
|
99
|
-
disconnectedCallback() {
|
|
100
|
-
listState.removeState(this._id);
|
|
101
|
-
if (this.type == 'select' || this.type == 'autocomplete') {
|
|
102
|
-
const list = document.querySelector(`#bcm-list-${this._id}`);
|
|
103
|
-
if (list) {
|
|
104
|
-
document.body.removeChild(list);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
90
|
componentWillRender() {
|
|
109
91
|
this.calculateLocation();
|
|
110
92
|
this.updateOptions();
|
|
@@ -117,12 +99,22 @@ export class BcmList {
|
|
|
117
99
|
this.tagControl();
|
|
118
100
|
}
|
|
119
101
|
}
|
|
120
|
-
|
|
121
|
-
|
|
102
|
+
async componentDidLoad() {
|
|
103
|
+
await this.initState();
|
|
104
|
+
if (this.type == 'select' || this.type == 'autocomplete' || this.linkedComponent) {
|
|
105
|
+
const list = this.el.querySelector(`#bcm-list-${this._id}`);
|
|
106
|
+
if (list) {
|
|
107
|
+
document.body.appendChild(list);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
122
110
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
111
|
+
disconnectedCallback() {
|
|
112
|
+
listState.removeState(this._id);
|
|
113
|
+
if (this.type == 'select' || this.type == 'autocomplete' || this.linkedComponent) {
|
|
114
|
+
const list = document.querySelector(`#bcm-list-${this._id}`);
|
|
115
|
+
if (list) {
|
|
116
|
+
document.body.removeChild(list);
|
|
117
|
+
}
|
|
126
118
|
}
|
|
127
119
|
}
|
|
128
120
|
handleValueChange(newVal, oldVal) {
|
|
@@ -140,9 +132,6 @@ export class BcmList {
|
|
|
140
132
|
this.handleIndeterminate(this.value.length, this.totalData);
|
|
141
133
|
}
|
|
142
134
|
}
|
|
143
|
-
handleIndeterminate(checkeds, total) {
|
|
144
|
-
this.selectAllItem = Object.assign(Object.assign({}, this.selectAllItem), { indeterminate: this.checkboxes && checkeds > 0 ? checkeds === total ? 'check' : 'indeterminate' : 'uncheck', checked: this.checkboxes && checkeds > 0 ? checkeds === total ? true : false : false });
|
|
145
|
-
}
|
|
146
135
|
handleOtherSelected(newValue) {
|
|
147
136
|
var _a;
|
|
148
137
|
const tagContent = (_a = document.getElementById(`bcm-list-input-tag-${this._id}-other-tag`)) === null || _a === void 0 ? void 0 : _a.querySelector(".bcm-tag__content");
|
|
@@ -155,14 +144,28 @@ export class BcmList {
|
|
|
155
144
|
}
|
|
156
145
|
}
|
|
157
146
|
}
|
|
147
|
+
async handleOpen() {
|
|
148
|
+
if (this.isOpen) {
|
|
149
|
+
this.onSelectSearch();
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
this.unSelectOther();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async dataChanged(newValue, oldValue) {
|
|
156
|
+
if (!Validators.compareTwoArrayIsSame(newValue, oldValue)) {
|
|
157
|
+
await this.initState();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
handleChange(e) {
|
|
161
|
+
if (e.target.id == `bcm-list-input-tag-container-${this._id}-autocomplete-input`) {
|
|
162
|
+
e.stopImmediatePropagation();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
158
165
|
handleResize() {
|
|
159
166
|
this.calculateLocation();
|
|
160
167
|
this.debounceHandler();
|
|
161
168
|
}
|
|
162
|
-
listenResize() {
|
|
163
|
-
this.tagControl();
|
|
164
|
-
this.calculateLocation();
|
|
165
|
-
}
|
|
166
169
|
handleClick(event) {
|
|
167
170
|
if (this.disabled)
|
|
168
171
|
return;
|
|
@@ -207,37 +210,6 @@ export class BcmList {
|
|
|
207
210
|
}
|
|
208
211
|
}
|
|
209
212
|
}
|
|
210
|
-
async handleOpen() {
|
|
211
|
-
if (this.isOpen) {
|
|
212
|
-
this.calculateLocation();
|
|
213
|
-
this.onSelectSearch();
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
this.unSelectOther();
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
unSelectOther() {
|
|
220
|
-
this.onClearSearch();
|
|
221
|
-
this.isSelectedOther = false;
|
|
222
|
-
this.returnFilterData = {};
|
|
223
|
-
this.isOpen = false;
|
|
224
|
-
}
|
|
225
|
-
async onClearSearch() {
|
|
226
|
-
const searchInput = document.getElementById(`bcm-list-${this._id}-search`);
|
|
227
|
-
if (searchInput) {
|
|
228
|
-
await searchInput.handleClear();
|
|
229
|
-
}
|
|
230
|
-
return Promise.resolve();
|
|
231
|
-
}
|
|
232
|
-
onSelectSearch() {
|
|
233
|
-
const searchInput = document.getElementById(`bcm-list-${this._id}-search`);
|
|
234
|
-
if (searchInput) {
|
|
235
|
-
setTimeout(() => {
|
|
236
|
-
searchInput.onBcmFocus();
|
|
237
|
-
searchInput.onBcmSelect();
|
|
238
|
-
}, 100);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
213
|
async onDismiss(event) {
|
|
242
214
|
const { itemObject } = event.detail;
|
|
243
215
|
const isOtherTag = Array.isArray(itemObject);
|
|
@@ -278,23 +250,6 @@ export class BcmList {
|
|
|
278
250
|
this.onSelectSearch();
|
|
279
251
|
this.markForCheck();
|
|
280
252
|
}
|
|
281
|
-
otherTagIds() {
|
|
282
|
-
const otherTag = document.querySelector(`#bcm-list-input-tag-${this._id}-other-tag`);
|
|
283
|
-
if (otherTag) {
|
|
284
|
-
return otherTag.itemObject;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
async filterOtherList(itemObject) {
|
|
288
|
-
const ids = itemObject.map(item => item.id);
|
|
289
|
-
const checklist = (await this.getCheckedList()).nestedResult;
|
|
290
|
-
const filter = Generate.convertIdsToNestedData(ids, checklist);
|
|
291
|
-
this.returnFilterData = await listState.filterData(this._id, filter, null, true);
|
|
292
|
-
this.searchFound = ids.length || 0;
|
|
293
|
-
this.limit = 500;
|
|
294
|
-
this.searchGetParents = null;
|
|
295
|
-
await delay(1000);
|
|
296
|
-
this.markForCheck();
|
|
297
|
-
}
|
|
298
253
|
bcmOnSearchClear(event) {
|
|
299
254
|
var _a, _b;
|
|
300
255
|
if (this.type == 'autocomplete') {
|
|
@@ -335,9 +290,43 @@ export class BcmList {
|
|
|
335
290
|
this.markForCheck();
|
|
336
291
|
}
|
|
337
292
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
293
|
+
//keyboard navigation
|
|
294
|
+
handleKeyDown(ev) {
|
|
295
|
+
const keycode = ev.keyCode || ev.which;
|
|
296
|
+
if (keycode === Bcm.KeyCode.escape) {
|
|
297
|
+
if (this.isOpen) {
|
|
298
|
+
this.isOpen = false;
|
|
299
|
+
ev.preventDefault();
|
|
300
|
+
ev.stopPropagation();
|
|
301
|
+
ev.stopImmediatePropagation();
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
if (this.keyControl) {
|
|
305
|
+
const keyboard = new ListKeyControl(keycode, this.el);
|
|
306
|
+
keyboard.keydown();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
handleKeyUp(ev) {
|
|
310
|
+
if (this.keyControl) {
|
|
311
|
+
const focusedList = Generate.findEventPath(ev, this.el);
|
|
312
|
+
if (focusedList) {
|
|
313
|
+
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
314
|
+
if (list) {
|
|
315
|
+
const items = list.querySelectorAll('.bcm-list__item.focused');
|
|
316
|
+
if (items.length > 0) {
|
|
317
|
+
const main = list.querySelector('main');
|
|
318
|
+
const itemHeight = items[0].offsetHeight;
|
|
319
|
+
const listHeight = main.offsetHeight;
|
|
320
|
+
const itemTop = items[0].offsetTop;
|
|
321
|
+
if (itemTop > listHeight) {
|
|
322
|
+
main.scrollTop = itemTop - (listHeight / 2) + (itemHeight / 2);
|
|
323
|
+
}
|
|
324
|
+
if (itemTop < listHeight) {
|
|
325
|
+
main.scrollTop = itemTop - (listHeight / 2) - (itemHeight / 2);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
341
330
|
}
|
|
342
331
|
}
|
|
343
332
|
async getCheckedList() {
|
|
@@ -352,7 +341,7 @@ export class BcmList {
|
|
|
352
341
|
async addChecked(ids = [], save = false) {
|
|
353
342
|
if (ids && ids.length > 0) {
|
|
354
343
|
if (!save) {
|
|
355
|
-
this.setClear();
|
|
344
|
+
await this.setClear();
|
|
356
345
|
}
|
|
357
346
|
listState.addChecked(this._id, ids);
|
|
358
347
|
this.value = (await this.getCheckedList()).checkedList;
|
|
@@ -388,6 +377,62 @@ export class BcmList {
|
|
|
388
377
|
await delay(10);
|
|
389
378
|
return Promise.resolve();
|
|
390
379
|
}
|
|
380
|
+
async show() {
|
|
381
|
+
this.isOpen = true;
|
|
382
|
+
return Promise.resolve();
|
|
383
|
+
}
|
|
384
|
+
async hide() {
|
|
385
|
+
this.isOpen = false;
|
|
386
|
+
return Promise.resolve();
|
|
387
|
+
}
|
|
388
|
+
updateOptions() {
|
|
389
|
+
listState.updateOptions(this._id, this);
|
|
390
|
+
}
|
|
391
|
+
handleIndeterminate(checkeds, total) {
|
|
392
|
+
this.selectAllItem = Object.assign(Object.assign({}, this.selectAllItem), { indeterminate: this.checkboxes && checkeds > 0 ? checkeds === total ? 'check' : 'indeterminate' : 'uncheck', checked: this.checkboxes && checkeds > 0 ? checkeds === total ? true : false : false });
|
|
393
|
+
}
|
|
394
|
+
listenResize() {
|
|
395
|
+
this.tagControl();
|
|
396
|
+
this.calculateLocation();
|
|
397
|
+
}
|
|
398
|
+
async unSelectOther() {
|
|
399
|
+
await this.onClearSearch();
|
|
400
|
+
this.isSelectedOther = false;
|
|
401
|
+
this.returnFilterData = {};
|
|
402
|
+
this.isOpen = false;
|
|
403
|
+
}
|
|
404
|
+
async onClearSearch() {
|
|
405
|
+
const searchInput = document.getElementById(`bcm-list-${this._id}-search`);
|
|
406
|
+
if (searchInput) {
|
|
407
|
+
await searchInput.handleClear();
|
|
408
|
+
}
|
|
409
|
+
return Promise.resolve();
|
|
410
|
+
}
|
|
411
|
+
async onSelectSearch() {
|
|
412
|
+
const searchInput = document.getElementById(`bcm-list-${this._id}-search`);
|
|
413
|
+
if (searchInput) {
|
|
414
|
+
await delay(10);
|
|
415
|
+
searchInput.onBcmFocus();
|
|
416
|
+
searchInput.onBcmSelect();
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
otherTagIds() {
|
|
420
|
+
const otherTag = document.querySelector(`#bcm-list-input-tag-${this._id}-other-tag`);
|
|
421
|
+
if (otherTag) {
|
|
422
|
+
return otherTag.itemObject;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
async filterOtherList(itemObject) {
|
|
426
|
+
const ids = itemObject.map(item => item.id);
|
|
427
|
+
const checklist = (await this.getCheckedList()).nestedResult;
|
|
428
|
+
const filter = Generate.convertIdsToNestedData(ids, checklist);
|
|
429
|
+
this.returnFilterData = await listState.filterData(this._id, filter, null, true);
|
|
430
|
+
this.searchFound = ids.length || 0;
|
|
431
|
+
this.limit = 500;
|
|
432
|
+
this.searchGetParents = null;
|
|
433
|
+
await delay(1000);
|
|
434
|
+
this.markForCheck();
|
|
435
|
+
}
|
|
391
436
|
async initState() {
|
|
392
437
|
await listState.setValue({
|
|
393
438
|
id: this._id,
|
|
@@ -426,24 +471,21 @@ export class BcmList {
|
|
|
426
471
|
listState.openGroup(this._id, parentId);
|
|
427
472
|
this.markForCheck();
|
|
428
473
|
}
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
474
|
+
focusItem(e) {
|
|
475
|
+
if (e.target.classList.contains('bcm-list__item')) {
|
|
476
|
+
const item = e.target;
|
|
477
|
+
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
478
|
+
if (list) {
|
|
479
|
+
const items = list.querySelectorAll('.bcm-list__item');
|
|
480
|
+
if (items.length > 0) {
|
|
481
|
+
const selectedItem = list.querySelector('.bcm-list__item.focused');
|
|
482
|
+
if (selectedItem) {
|
|
483
|
+
selectedItem.classList.remove('focused');
|
|
484
|
+
}
|
|
485
|
+
item.classList.add('focused');
|
|
486
|
+
}
|
|
487
|
+
}
|
|
436
488
|
}
|
|
437
|
-
this.value = (await this.getCheckedList()).checkedList;
|
|
438
|
-
this.changeVisibleCheckeds();
|
|
439
|
-
this.markForCheck();
|
|
440
|
-
}
|
|
441
|
-
changeVisibleCheckeds() {
|
|
442
|
-
const { visibledItems } = this.returnFilterData;
|
|
443
|
-
this.returnFilterData = {
|
|
444
|
-
visibledItems,
|
|
445
|
-
checkedItems: (visibledItems && visibledItems.filter(item => item.checked)) || []
|
|
446
|
-
};
|
|
447
489
|
}
|
|
448
490
|
async selectedItem(itemId) {
|
|
449
491
|
this.value = listState.selectedItem(this._id, itemId);
|
|
@@ -463,6 +505,25 @@ export class BcmList {
|
|
|
463
505
|
}
|
|
464
506
|
return Promise.resolve(this.value);
|
|
465
507
|
}
|
|
508
|
+
async checkedItem(itemId) {
|
|
509
|
+
const isCheckSelectAll = itemId === 'select-all';
|
|
510
|
+
if (!isCheckSelectAll) {
|
|
511
|
+
listState.checkedItem(this._id, itemId);
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
listState.selectAll(this._id, !this.selectAllItem.checked);
|
|
515
|
+
}
|
|
516
|
+
this.value = (await this.getCheckedList()).checkedList;
|
|
517
|
+
this.changeVisibleCheckeds();
|
|
518
|
+
this.markForCheck();
|
|
519
|
+
}
|
|
520
|
+
changeVisibleCheckeds() {
|
|
521
|
+
const { visibledItems } = this.returnFilterData;
|
|
522
|
+
this.returnFilterData = {
|
|
523
|
+
visibledItems,
|
|
524
|
+
checkedItems: (visibledItems && visibledItems.filter(item => item.checked)) || []
|
|
525
|
+
};
|
|
526
|
+
}
|
|
466
527
|
getAutoCompleteInput() {
|
|
467
528
|
return document.getElementById(`bcm-list-input-tag-container-${this._id}-autocomplete-input`);
|
|
468
529
|
}
|
|
@@ -485,7 +546,14 @@ export class BcmList {
|
|
|
485
546
|
if (this.isOpen) {
|
|
486
547
|
var placement = this.placement;
|
|
487
548
|
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
488
|
-
|
|
549
|
+
// if (this.linkedComponent) {
|
|
550
|
+
// const linked = document.getElementById(this.linkedComponent)
|
|
551
|
+
// if (linked) {
|
|
552
|
+
// console.dir(linked)
|
|
553
|
+
// }
|
|
554
|
+
// }
|
|
555
|
+
const targetElementId = this.linkedComponent ? this.linkedComponent : `bcm-list-input-${this._id}`;
|
|
556
|
+
const targetElement = document.getElementById(targetElementId);
|
|
489
557
|
if (list && targetElement) {
|
|
490
558
|
getPlacement(list, targetElement, placement, (place) => placement = place);
|
|
491
559
|
const pos = setPosition(placement, targetElement);
|
|
@@ -612,110 +680,6 @@ export class BcmList {
|
|
|
612
680
|
}
|
|
613
681
|
}
|
|
614
682
|
}
|
|
615
|
-
//keyboard navigation
|
|
616
|
-
handleKeyDown(ev) {
|
|
617
|
-
//esc isopen false
|
|
618
|
-
const keycode = ev.keyCode || ev.which;
|
|
619
|
-
if (keycode === Bcm.KeyCode.escape) {
|
|
620
|
-
if (this.isOpen) {
|
|
621
|
-
this.isOpen = false;
|
|
622
|
-
ev.preventDefault();
|
|
623
|
-
ev.stopPropagation();
|
|
624
|
-
ev.stopImmediatePropagation();
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
if (this.keyControl) {
|
|
628
|
-
const focusedList = Generate.findEventPath(ev, this.el);
|
|
629
|
-
if (focusedList) {
|
|
630
|
-
const keyCode = ev.keyCode || ev.which;
|
|
631
|
-
const keyList = [
|
|
632
|
-
[Bcm.KeyCode.up],
|
|
633
|
-
[Bcm.KeyCode.down],
|
|
634
|
-
[Bcm.KeyCode.enter],
|
|
635
|
-
[Bcm.KeyCode.space],
|
|
636
|
-
[Bcm.KeyCode.left],
|
|
637
|
-
[Bcm.KeyCode.right]
|
|
638
|
-
];
|
|
639
|
-
if (keyList.some(key => key.includes(keyCode))) {
|
|
640
|
-
ev.preventDefault();
|
|
641
|
-
ev.stopPropagation();
|
|
642
|
-
ev.stopImmediatePropagation();
|
|
643
|
-
if (this.type === 'select' && !this.isOpen) {
|
|
644
|
-
if (keycode === Bcm.KeyCode.enter || keycode === Bcm.KeyCode.space) {
|
|
645
|
-
this.isOpen = true;
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
|
-
else {
|
|
649
|
-
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
650
|
-
if (list) {
|
|
651
|
-
const items = list.querySelectorAll('.bcm-list__item');
|
|
652
|
-
if (items.length > 0) {
|
|
653
|
-
const selectedItem = list.querySelector('.bcm-list__item.focused');
|
|
654
|
-
if (selectedItem) {
|
|
655
|
-
const selectedIndex = Array.prototype.indexOf.call(items, selectedItem);
|
|
656
|
-
if (ev.key === 'ArrowDown') {
|
|
657
|
-
if (selectedIndex < items.length - 1) {
|
|
658
|
-
items[selectedIndex + 1].focus();
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
else if (ev.key === 'ArrowUp') {
|
|
662
|
-
if (selectedIndex > 0) {
|
|
663
|
-
items[selectedIndex - 1].focus();
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
else if (ev.key === 'Enter') {
|
|
667
|
-
this.selectedItem(selectedItem.id);
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
else {
|
|
671
|
-
items[0].focus();
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
handleKeyUp(ev) {
|
|
681
|
-
if (this.keyControl) {
|
|
682
|
-
const focusedList = Generate.findEventPath(ev, this.el);
|
|
683
|
-
if (focusedList) {
|
|
684
|
-
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
685
|
-
if (list) {
|
|
686
|
-
const items = list.querySelectorAll('.bcm-list__item.focused');
|
|
687
|
-
if (items.length > 0) {
|
|
688
|
-
const main = list.querySelector('main');
|
|
689
|
-
const itemHeight = items[0].offsetHeight;
|
|
690
|
-
const listHeight = main.offsetHeight;
|
|
691
|
-
const itemTop = items[0].offsetTop;
|
|
692
|
-
if (itemTop > listHeight) {
|
|
693
|
-
main.scrollTop = itemTop - (listHeight / 2) + (itemHeight / 2);
|
|
694
|
-
}
|
|
695
|
-
if (itemTop < listHeight) {
|
|
696
|
-
main.scrollTop = itemTop - (listHeight / 2) - (itemHeight / 2);
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
focusItem(e) {
|
|
704
|
-
if (e.target.classList.contains('bcm-list__item')) {
|
|
705
|
-
const item = e.target;
|
|
706
|
-
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
707
|
-
if (list) {
|
|
708
|
-
const items = list.querySelectorAll('.bcm-list__item');
|
|
709
|
-
if (items.length > 0) {
|
|
710
|
-
const selectedItem = list.querySelector('.bcm-list__item.focused');
|
|
711
|
-
if (selectedItem) {
|
|
712
|
-
selectedItem.classList.remove('focused');
|
|
713
|
-
}
|
|
714
|
-
item.classList.add('focused');
|
|
715
|
-
}
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
683
|
render() {
|
|
720
684
|
const { checkboxes, treeview, label, size, disabled, readonly, required, hidden, fullWidth, searchable } = this.getOptions();
|
|
721
685
|
const hostClasses = cs('bcm-list', `bcm-list__size-${size}`, size === 'large' ? 'size-3' : 'size-2', {
|
|
@@ -725,7 +689,7 @@ export class BcmList {
|
|
|
725
689
|
readonly,
|
|
726
690
|
disabled
|
|
727
691
|
});
|
|
728
|
-
const bcmListContainer = cs('bcm-list__container', `bcm-list__type-${this.type}`, {
|
|
692
|
+
const bcmListContainer = cs('bcm-list__container', this.linkedComponent ? 'bcm-list__type-linked-component' : `bcm-list__type-${this.type}`, {
|
|
729
693
|
'is-open': this.isOpen,
|
|
730
694
|
'error': this.captionType == Bcm.Status.error,
|
|
731
695
|
'full-width': fullWidth,
|
|
@@ -780,9 +744,14 @@ export class BcmList {
|
|
|
780
744
|
"type": "string",
|
|
781
745
|
"mutable": false,
|
|
782
746
|
"complexType": {
|
|
783
|
-
"original": "
|
|
747
|
+
"original": "ListTypes",
|
|
784
748
|
"resolved": "\"autocomplete\" | \"listbox\" | \"select\"",
|
|
785
|
-
"references": {
|
|
749
|
+
"references": {
|
|
750
|
+
"ListTypes": {
|
|
751
|
+
"location": "import",
|
|
752
|
+
"path": "../../../models/bcm-types"
|
|
753
|
+
}
|
|
754
|
+
}
|
|
786
755
|
},
|
|
787
756
|
"required": false,
|
|
788
757
|
"optional": false,
|
|
@@ -792,7 +761,7 @@ export class BcmList {
|
|
|
792
761
|
},
|
|
793
762
|
"attribute": "type",
|
|
794
763
|
"reflect": false,
|
|
795
|
-
"defaultValue": "
|
|
764
|
+
"defaultValue": "Bcm.ListType.listbox"
|
|
796
765
|
},
|
|
797
766
|
"treeview": {
|
|
798
767
|
"type": "boolean",
|
|
@@ -1601,6 +1570,38 @@ export class BcmList {
|
|
|
1601
1570
|
"text": "",
|
|
1602
1571
|
"tags": []
|
|
1603
1572
|
}
|
|
1573
|
+
},
|
|
1574
|
+
"show": {
|
|
1575
|
+
"complexType": {
|
|
1576
|
+
"signature": "() => Promise<void>",
|
|
1577
|
+
"parameters": [],
|
|
1578
|
+
"references": {
|
|
1579
|
+
"Promise": {
|
|
1580
|
+
"location": "global"
|
|
1581
|
+
}
|
|
1582
|
+
},
|
|
1583
|
+
"return": "Promise<void>"
|
|
1584
|
+
},
|
|
1585
|
+
"docs": {
|
|
1586
|
+
"text": "",
|
|
1587
|
+
"tags": []
|
|
1588
|
+
}
|
|
1589
|
+
},
|
|
1590
|
+
"hide": {
|
|
1591
|
+
"complexType": {
|
|
1592
|
+
"signature": "() => Promise<void>",
|
|
1593
|
+
"parameters": [],
|
|
1594
|
+
"references": {
|
|
1595
|
+
"Promise": {
|
|
1596
|
+
"location": "global"
|
|
1597
|
+
}
|
|
1598
|
+
},
|
|
1599
|
+
"return": "Promise<void>"
|
|
1600
|
+
},
|
|
1601
|
+
"docs": {
|
|
1602
|
+
"text": "",
|
|
1603
|
+
"tags": []
|
|
1604
|
+
}
|
|
1604
1605
|
}
|
|
1605
1606
|
}; }
|
|
1606
1607
|
static get elementRef() { return "el"; }
|