bromcom-ui 2.4.12 → 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 -221
- 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 +15 -6
- package/dist/collection/components/organism/list/list.js +211 -213
- 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 -221
- 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-545d742a.entry.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-dd76fa74.js +0 -1
|
@@ -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,36 +210,6 @@ export class BcmList {
|
|
|
207
210
|
}
|
|
208
211
|
}
|
|
209
212
|
}
|
|
210
|
-
async handleOpen() {
|
|
211
|
-
if (this.isOpen) {
|
|
212
|
-
this.onSelectSearch();
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
this.unSelectOther();
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
unSelectOther() {
|
|
219
|
-
this.onClearSearch();
|
|
220
|
-
this.isSelectedOther = false;
|
|
221
|
-
this.returnFilterData = {};
|
|
222
|
-
this.isOpen = false;
|
|
223
|
-
}
|
|
224
|
-
async onClearSearch() {
|
|
225
|
-
const searchInput = document.getElementById(`bcm-list-${this._id}-search`);
|
|
226
|
-
if (searchInput) {
|
|
227
|
-
await searchInput.handleClear();
|
|
228
|
-
}
|
|
229
|
-
return Promise.resolve();
|
|
230
|
-
}
|
|
231
|
-
onSelectSearch() {
|
|
232
|
-
const searchInput = document.getElementById(`bcm-list-${this._id}-search`);
|
|
233
|
-
if (searchInput) {
|
|
234
|
-
setTimeout(() => {
|
|
235
|
-
searchInput.onBcmFocus();
|
|
236
|
-
searchInput.onBcmSelect();
|
|
237
|
-
}, 100);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
213
|
async onDismiss(event) {
|
|
241
214
|
const { itemObject } = event.detail;
|
|
242
215
|
const isOtherTag = Array.isArray(itemObject);
|
|
@@ -277,23 +250,6 @@ export class BcmList {
|
|
|
277
250
|
this.onSelectSearch();
|
|
278
251
|
this.markForCheck();
|
|
279
252
|
}
|
|
280
|
-
otherTagIds() {
|
|
281
|
-
const otherTag = document.querySelector(`#bcm-list-input-tag-${this._id}-other-tag`);
|
|
282
|
-
if (otherTag) {
|
|
283
|
-
return otherTag.itemObject;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
async filterOtherList(itemObject) {
|
|
287
|
-
const ids = itemObject.map(item => item.id);
|
|
288
|
-
const checklist = (await this.getCheckedList()).nestedResult;
|
|
289
|
-
const filter = Generate.convertIdsToNestedData(ids, checklist);
|
|
290
|
-
this.returnFilterData = await listState.filterData(this._id, filter, null, true);
|
|
291
|
-
this.searchFound = ids.length || 0;
|
|
292
|
-
this.limit = 500;
|
|
293
|
-
this.searchGetParents = null;
|
|
294
|
-
await delay(1000);
|
|
295
|
-
this.markForCheck();
|
|
296
|
-
}
|
|
297
253
|
bcmOnSearchClear(event) {
|
|
298
254
|
var _a, _b;
|
|
299
255
|
if (this.type == 'autocomplete') {
|
|
@@ -334,9 +290,43 @@ export class BcmList {
|
|
|
334
290
|
this.markForCheck();
|
|
335
291
|
}
|
|
336
292
|
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
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
|
+
}
|
|
340
330
|
}
|
|
341
331
|
}
|
|
342
332
|
async getCheckedList() {
|
|
@@ -351,7 +341,7 @@ export class BcmList {
|
|
|
351
341
|
async addChecked(ids = [], save = false) {
|
|
352
342
|
if (ids && ids.length > 0) {
|
|
353
343
|
if (!save) {
|
|
354
|
-
this.setClear();
|
|
344
|
+
await this.setClear();
|
|
355
345
|
}
|
|
356
346
|
listState.addChecked(this._id, ids);
|
|
357
347
|
this.value = (await this.getCheckedList()).checkedList;
|
|
@@ -387,6 +377,62 @@ export class BcmList {
|
|
|
387
377
|
await delay(10);
|
|
388
378
|
return Promise.resolve();
|
|
389
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
|
+
}
|
|
390
436
|
async initState() {
|
|
391
437
|
await listState.setValue({
|
|
392
438
|
id: this._id,
|
|
@@ -425,24 +471,21 @@ export class BcmList {
|
|
|
425
471
|
listState.openGroup(this._id, parentId);
|
|
426
472
|
this.markForCheck();
|
|
427
473
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
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
|
+
}
|
|
435
488
|
}
|
|
436
|
-
this.value = (await this.getCheckedList()).checkedList;
|
|
437
|
-
this.changeVisibleCheckeds();
|
|
438
|
-
this.markForCheck();
|
|
439
|
-
}
|
|
440
|
-
changeVisibleCheckeds() {
|
|
441
|
-
const { visibledItems } = this.returnFilterData;
|
|
442
|
-
this.returnFilterData = {
|
|
443
|
-
visibledItems,
|
|
444
|
-
checkedItems: (visibledItems && visibledItems.filter(item => item.checked)) || []
|
|
445
|
-
};
|
|
446
489
|
}
|
|
447
490
|
async selectedItem(itemId) {
|
|
448
491
|
this.value = listState.selectedItem(this._id, itemId);
|
|
@@ -462,6 +505,25 @@ export class BcmList {
|
|
|
462
505
|
}
|
|
463
506
|
return Promise.resolve(this.value);
|
|
464
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
|
+
}
|
|
465
527
|
getAutoCompleteInput() {
|
|
466
528
|
return document.getElementById(`bcm-list-input-tag-container-${this._id}-autocomplete-input`);
|
|
467
529
|
}
|
|
@@ -484,7 +546,14 @@ export class BcmList {
|
|
|
484
546
|
if (this.isOpen) {
|
|
485
547
|
var placement = this.placement;
|
|
486
548
|
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
487
|
-
|
|
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);
|
|
488
557
|
if (list && targetElement) {
|
|
489
558
|
getPlacement(list, targetElement, placement, (place) => placement = place);
|
|
490
559
|
const pos = setPosition(placement, targetElement);
|
|
@@ -611,114 +680,6 @@ export class BcmList {
|
|
|
611
680
|
}
|
|
612
681
|
}
|
|
613
682
|
}
|
|
614
|
-
//keyboard navigation
|
|
615
|
-
handleKeyDown(ev) {
|
|
616
|
-
//esc isopen false
|
|
617
|
-
const keycode = ev.keyCode || ev.which;
|
|
618
|
-
if (keycode === Bcm.KeyCode.escape) {
|
|
619
|
-
if (this.isOpen) {
|
|
620
|
-
this.isOpen = false;
|
|
621
|
-
ev.preventDefault();
|
|
622
|
-
ev.stopPropagation();
|
|
623
|
-
ev.stopImmediatePropagation();
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
if (this.keyControl) {
|
|
627
|
-
const focusedList = Generate.findEventPath(ev, this.el);
|
|
628
|
-
if (focusedList) {
|
|
629
|
-
if (this.type === 'select' && !this.isOpen) {
|
|
630
|
-
if (keycode === Bcm.KeyCode.enter || keycode === Bcm.KeyCode.space) {
|
|
631
|
-
this.isOpen = true;
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
else {
|
|
635
|
-
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
636
|
-
if (list) {
|
|
637
|
-
const items = list.querySelectorAll('.bcm-list__item');
|
|
638
|
-
if (items.length > 0) {
|
|
639
|
-
const selectedItem = list.querySelector('.bcm-list__item.focused');
|
|
640
|
-
if (selectedItem) {
|
|
641
|
-
const selectedIndex = Array.prototype.indexOf.call(items, selectedItem);
|
|
642
|
-
if (ev.key === 'ArrowDown') {
|
|
643
|
-
if (selectedIndex < items.length - 1) {
|
|
644
|
-
items[selectedIndex + 1].focus();
|
|
645
|
-
}
|
|
646
|
-
}
|
|
647
|
-
else if (ev.key === 'ArrowUp') {
|
|
648
|
-
if (selectedIndex > 0) {
|
|
649
|
-
items[selectedIndex - 1].focus();
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
else if (ev.key === 'Enter') {
|
|
653
|
-
this.selectedItem(selectedItem);
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
else {
|
|
657
|
-
items[0].focus();
|
|
658
|
-
}
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
handleKeyUp(ev) {
|
|
666
|
-
if (this.keyControl) {
|
|
667
|
-
const focusedList = Generate.findEventPath(ev, this.el);
|
|
668
|
-
if (focusedList) {
|
|
669
|
-
const keycode = ev.keyCode || ev.which;
|
|
670
|
-
if (keycode === Bcm.KeyCode.escape) {
|
|
671
|
-
//unfocused element
|
|
672
|
-
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
673
|
-
if (list) {
|
|
674
|
-
const items = list.querySelectorAll('.bcm-list__item');
|
|
675
|
-
if (items.length > 0) {
|
|
676
|
-
items[0].focus();
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
const goToScroll = (item, list) => {
|
|
681
|
-
const main = list.querySelector('main');
|
|
682
|
-
const itemHeight = item.offsetHeight;
|
|
683
|
-
const listHeight = main.offsetHeight;
|
|
684
|
-
const itemTop = item.offsetTop;
|
|
685
|
-
// console.log(item.offsetTop)
|
|
686
|
-
const listTop = main.scrollTop;
|
|
687
|
-
const listBottom = listTop + listHeight;
|
|
688
|
-
if (itemTop < listTop) {
|
|
689
|
-
main.scrollTop = itemTop;
|
|
690
|
-
}
|
|
691
|
-
else if (itemTop > listBottom) {
|
|
692
|
-
main.scrollTop = itemTop - listHeight + itemHeight;
|
|
693
|
-
}
|
|
694
|
-
// console.log(main.scrollTop)
|
|
695
|
-
};
|
|
696
|
-
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
697
|
-
if (list) {
|
|
698
|
-
const items = list.querySelectorAll('.bcm-list__item.focused');
|
|
699
|
-
if (items.length > 0) {
|
|
700
|
-
goToScroll(items[0], list);
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
}
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
focusItem(e) {
|
|
707
|
-
if (e.target.classList.contains('bcm-list__item')) {
|
|
708
|
-
const item = e.target;
|
|
709
|
-
const list = document.getElementById(`bcm-list-${this._id}`);
|
|
710
|
-
if (list) {
|
|
711
|
-
const items = list.querySelectorAll('.bcm-list__item');
|
|
712
|
-
if (items.length > 0) {
|
|
713
|
-
const selectedItem = list.querySelector('.bcm-list__item.focused');
|
|
714
|
-
if (selectedItem) {
|
|
715
|
-
selectedItem.classList.remove('focused');
|
|
716
|
-
}
|
|
717
|
-
item.classList.add('focused');
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
683
|
render() {
|
|
723
684
|
const { checkboxes, treeview, label, size, disabled, readonly, required, hidden, fullWidth, searchable } = this.getOptions();
|
|
724
685
|
const hostClasses = cs('bcm-list', `bcm-list__size-${size}`, size === 'large' ? 'size-3' : 'size-2', {
|
|
@@ -728,7 +689,7 @@ export class BcmList {
|
|
|
728
689
|
readonly,
|
|
729
690
|
disabled
|
|
730
691
|
});
|
|
731
|
-
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}`, {
|
|
732
693
|
'is-open': this.isOpen,
|
|
733
694
|
'error': this.captionType == Bcm.Status.error,
|
|
734
695
|
'full-width': fullWidth,
|
|
@@ -783,9 +744,14 @@ export class BcmList {
|
|
|
783
744
|
"type": "string",
|
|
784
745
|
"mutable": false,
|
|
785
746
|
"complexType": {
|
|
786
|
-
"original": "
|
|
747
|
+
"original": "ListTypes",
|
|
787
748
|
"resolved": "\"autocomplete\" | \"listbox\" | \"select\"",
|
|
788
|
-
"references": {
|
|
749
|
+
"references": {
|
|
750
|
+
"ListTypes": {
|
|
751
|
+
"location": "import",
|
|
752
|
+
"path": "../../../models/bcm-types"
|
|
753
|
+
}
|
|
754
|
+
}
|
|
789
755
|
},
|
|
790
756
|
"required": false,
|
|
791
757
|
"optional": false,
|
|
@@ -795,7 +761,7 @@ export class BcmList {
|
|
|
795
761
|
},
|
|
796
762
|
"attribute": "type",
|
|
797
763
|
"reflect": false,
|
|
798
|
-
"defaultValue": "
|
|
764
|
+
"defaultValue": "Bcm.ListType.listbox"
|
|
799
765
|
},
|
|
800
766
|
"treeview": {
|
|
801
767
|
"type": "boolean",
|
|
@@ -1604,6 +1570,38 @@ export class BcmList {
|
|
|
1604
1570
|
"text": "",
|
|
1605
1571
|
"tags": []
|
|
1606
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
|
+
}
|
|
1607
1605
|
}
|
|
1608
1606
|
}; }
|
|
1609
1607
|
static get elementRef() { return "el"; }
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import { StatusProps } from "../components/molecules/alert/types";
|
|
2
|
+
// @ts-ignore
|
|
3
|
+
import { version } from "../../package.json";
|
|
4
|
+
//console.log versiyon
|
|
5
|
+
console.log(`%c Bromcom ui component library version: ${version} `, `background: #1890FF;
|
|
6
|
+
text-shadow: 0 0 2px #000000;
|
|
7
|
+
color: #fff;
|
|
8
|
+
line-height: 40px;
|
|
9
|
+
font-size: 13px;
|
|
10
|
+
padding: 0 20px;
|
|
11
|
+
border-radius: 6px; `);
|
|
2
12
|
export class Generate {
|
|
3
13
|
}
|
|
4
14
|
Generate.UID = () => Math.random().toString(36).substr(2, 9);
|
|
@@ -447,5 +447,11 @@ export var Bcm;
|
|
|
447
447
|
TriggerType["click"] = "click";
|
|
448
448
|
TriggerType["focus"] = "focus";
|
|
449
449
|
})(TriggerType = Bcm.TriggerType || (Bcm.TriggerType = {}));
|
|
450
|
+
let ListType;
|
|
451
|
+
(function (ListType) {
|
|
452
|
+
ListType["listbox"] = "listbox";
|
|
453
|
+
ListType["select"] = "select";
|
|
454
|
+
ListType["autocomplete"] = "autocomplete";
|
|
455
|
+
})(ListType = Bcm.ListType || (Bcm.ListType = {}));
|
|
450
456
|
})(Bcm || (Bcm = {}));
|
|
451
457
|
export default Bcm;
|
|
@@ -15,12 +15,13 @@ export const ListItemTemplate = ({ item, treeview, highlight, checkboxes, size,
|
|
|
15
15
|
intersection = match.filter(x => keys.includes(x));
|
|
16
16
|
}
|
|
17
17
|
text = item.template && intersection.length > 1 ? StringHelper.templateParser(item.template, Object.assign(Object.assign({}, item.itemObject), { text })) : text;
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const disabled = item.disabled;
|
|
19
|
+
return (h("div", { id: item.id, hidden: item.hidden, tabindex: "-1", "on-focus": (e) => !disabled && (focusItem(e)), class: cs("bcm-list__item", size === 'large' ? 'size-3' : 'size-2') },
|
|
20
|
+
h("div", { class: cs('bcm-list__item-content', !checkboxes && item.selected == true && ('selected'), { 'disabled': disabled }) },
|
|
20
21
|
treeview && (h("div", { class: "bcm-list__item-content-collapse-icon", onClick: () => { item.open = item.isSearching; openGroup(item.id); } }, isHaveChildren && (h("i", { class: cs('bcm-fas bcm-fa-caret-' + (item.isSearching || item.open ? 'down' : 'right')) })))),
|
|
21
|
-
h("div", { class: cs('bcm-list__item-content-text', { treeview }), onClick: () => !checkboxes && selectedItem(item.id) },
|
|
22
|
-
checkboxes && (h("div", { class: "bcm-list__item-content-text-checkbox", onClick: () => checkedItem(item.id) },
|
|
22
|
+
h("div", { class: cs('bcm-list__item-content-text', { treeview }), onClick: () => !checkboxes && !disabled && (selectedItem(item.id)) },
|
|
23
|
+
checkboxes && (h("div", { class: "bcm-list__item-content-text-checkbox", onClick: () => !disabled && (checkedItem(item.id)) },
|
|
23
24
|
h(CheckboxTemplate, { indeterminate: item.indeterminate, checked: item.checked }))),
|
|
24
25
|
h("span", { class: "bcm-list__item-content-text-inner", innerHTML: text }))),
|
|
25
|
-
treeview && isHaveChildren && (h("div", { class: "bcm-list__item-childs" }, (item.isSearching || item.open) && item.items.map((item) => (h(ListItemTemplate, { highlight: highlight, item: item, treeview: treeview, checkboxes: checkboxes, selectedItem: selectedItem, checkedItem: checkedItem, openGroup: (parentId) => openGroup(parentId) })))))));
|
|
26
|
+
treeview && isHaveChildren && (h("div", { class: "bcm-list__item-childs" }, (item.isSearching || item.open) && item.items.map((item) => (h(ListItemTemplate, { highlight: highlight, item: item, treeview: treeview, checkboxes: checkboxes, selectedItem: selectedItem, checkedItem: checkedItem, openGroup: (parentId) => openGroup(parentId), focusItem: (itemId) => focusItem(itemId) })))))));
|
|
26
27
|
};
|
|
@@ -43,12 +43,11 @@ export const getPlacement = async (box, host, placement, changePlacement) => {
|
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
export const setPosition = (placement, target) => {
|
|
46
|
-
const { offsetTop, offsetHeight, offsetWidth, offsetLeft } = target;
|
|
47
46
|
const rect = target.getBoundingClientRect();
|
|
48
|
-
const top =
|
|
49
|
-
const left =
|
|
50
|
-
const height =
|
|
51
|
-
const width =
|
|
47
|
+
const top = (rect.top + window.pageYOffset);
|
|
48
|
+
const left = (rect.left + window.pageXOffset);
|
|
49
|
+
const height = rect.height;
|
|
50
|
+
const width = rect.width;
|
|
52
51
|
const places = StringHelper.textContains(placement, '-') ? placement.split('-') : placement.split(' ');
|
|
53
52
|
switch (places[0]) {
|
|
54
53
|
case 'left':
|
|
@@ -447,6 +447,12 @@ var Bcm;
|
|
|
447
447
|
TriggerType["click"] = "click";
|
|
448
448
|
TriggerType["focus"] = "focus";
|
|
449
449
|
})(TriggerType = Bcm.TriggerType || (Bcm.TriggerType = {}));
|
|
450
|
+
let ListType;
|
|
451
|
+
(function (ListType) {
|
|
452
|
+
ListType["listbox"] = "listbox";
|
|
453
|
+
ListType["select"] = "select";
|
|
454
|
+
ListType["autocomplete"] = "autocomplete";
|
|
455
|
+
})(ListType = Bcm.ListType || (Bcm.ListType = {}));
|
|
450
456
|
})(Bcm || (Bcm = {}));
|
|
451
457
|
const Bcm$1 = Bcm;
|
|
452
458
|
|