@syncfusion/ej2-dropdowns 18.2.44-4568 → 18.2.44-4570

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.
Files changed (170) hide show
  1. package/.eslintrc.json +244 -0
  2. package/CHANGELOG.md +1524 -1524
  3. package/README.md +118 -118
  4. package/dist/ej2-dropdowns.umd.min.js +1 -1
  5. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-dropdowns.es2015.js +99 -60
  7. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  8. package/dist/es6/ej2-dropdowns.es5.js +191 -151
  9. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  10. package/dist/global/ej2-dropdowns.min.js +1 -1
  11. package/dist/global/ej2-dropdowns.min.js.map +1 -1
  12. package/dist/ts/auto-complete/auto-complete.ts +527 -0
  13. package/dist/ts/combo-box/combo-box.ts +957 -0
  14. package/dist/ts/common/highlight-search.ts +47 -0
  15. package/dist/ts/common/incremental-search.ts +81 -0
  16. package/dist/ts/drop-down-base/drop-down-base.ts +1572 -0
  17. package/dist/ts/drop-down-list/drop-down-list.ts +2993 -0
  18. package/dist/ts/drop-down-tree/drop-down-tree.ts +3066 -0
  19. package/dist/ts/list-box/list-box.ts +2317 -0
  20. package/dist/ts/multi-select/checkbox-selection.ts +528 -0
  21. package/dist/ts/multi-select/float-label.ts +155 -0
  22. package/dist/ts/multi-select/interface.ts +66 -0
  23. package/dist/ts/multi-select/multi-select.ts +4216 -0
  24. package/helpers/e2e/index.js +3 -3
  25. package/license +2 -2
  26. package/package.json +63 -77
  27. package/src/auto-complete/auto-complete-model.d.ts +179 -179
  28. package/src/auto-complete/auto-complete.js +19 -19
  29. package/src/combo-box/combo-box-model.d.ts +212 -212
  30. package/src/combo-box/combo-box.js +19 -19
  31. package/src/drop-down-base/drop-down-base-model.d.ts +191 -191
  32. package/src/drop-down-base/drop-down-base.js +19 -19
  33. package/src/drop-down-list/drop-down-list-model.d.ts +222 -222
  34. package/src/drop-down-list/drop-down-list.js +19 -19
  35. package/src/drop-down-tree/drop-down-tree-model.d.ts +344 -344
  36. package/src/drop-down-tree/drop-down-tree.js +19 -19
  37. package/src/list-box/list-box-model.d.ts +156 -156
  38. package/src/list-box/list-box.js +19 -19
  39. package/src/multi-select/checkbox-selection.js +3 -1
  40. package/src/multi-select/multi-select-model.d.ts +452 -452
  41. package/src/multi-select/multi-select.d.ts +2 -0
  42. package/src/multi-select/multi-select.js +58 -19
  43. package/styles/_all.scss +3 -3
  44. package/styles/auto-complete/_bootstrap-dark-definition.scss +3 -3
  45. package/styles/auto-complete/_bootstrap4-definition.scss +11 -11
  46. package/styles/auto-complete/_fabric-dark-definition.scss +2 -2
  47. package/styles/auto-complete/_highcontrast-light-definition.scss +2 -2
  48. package/styles/auto-complete/_material-dark-definition.scss +2 -2
  49. package/styles/bootstrap-dark.css +13 -16
  50. package/styles/bootstrap.css +12 -15
  51. package/styles/bootstrap4.css +6 -10
  52. package/styles/combo-box/_bootstrap-dark-definition.scss +2 -2
  53. package/styles/combo-box/_bootstrap4-definition.scss +11 -11
  54. package/styles/combo-box/_fabric-dark-definition.scss +2 -2
  55. package/styles/combo-box/_highcontrast-light-definition.scss +3 -3
  56. package/styles/combo-box/_material-dark-definition.scss +2 -2
  57. package/styles/drop-down-base/_all.scss +2 -2
  58. package/styles/drop-down-base/_bootstrap-dark-definition.scss +64 -64
  59. package/styles/drop-down-base/_bootstrap-definition.scss +64 -64
  60. package/styles/drop-down-base/_bootstrap4-definition.scss +78 -78
  61. package/styles/drop-down-base/_definition.scss +23 -23
  62. package/styles/drop-down-base/_fabric-dark-definition.scss +68 -68
  63. package/styles/drop-down-base/_fabric-definition.scss +66 -66
  64. package/styles/drop-down-base/_highcontrast-definition.scss +82 -82
  65. package/styles/drop-down-base/_highcontrast-light-definition.scss +81 -81
  66. package/styles/drop-down-base/_layout.scss +108 -108
  67. package/styles/drop-down-base/_material-dark-definition.scss +67 -67
  68. package/styles/drop-down-base/_material-definition.scss +65 -65
  69. package/styles/drop-down-base/_theme.scss +242 -242
  70. package/styles/drop-down-list/_all.scss +2 -2
  71. package/styles/drop-down-list/_bootstrap-dark-definition.scss +157 -157
  72. package/styles/drop-down-list/_bootstrap-definition.scss +156 -156
  73. package/styles/drop-down-list/_bootstrap4-definition.scss +184 -184
  74. package/styles/drop-down-list/_fabric-dark-definition.scss +127 -127
  75. package/styles/drop-down-list/_fabric-definition.scss +122 -122
  76. package/styles/drop-down-list/_highcontrast-definition.scss +131 -131
  77. package/styles/drop-down-list/_highcontrast-light-definition.scss +133 -133
  78. package/styles/drop-down-list/_layout.scss +218 -218
  79. package/styles/drop-down-list/_material-dark-definition.scss +143 -143
  80. package/styles/drop-down-list/_material-definition.scss +166 -166
  81. package/styles/drop-down-list/_theme.scss +10 -10
  82. package/styles/drop-down-list/icons/_bootstrap-dark.scss +14 -14
  83. package/styles/drop-down-list/icons/_bootstrap.scss +14 -14
  84. package/styles/drop-down-list/icons/_bootstrap4.scss +14 -14
  85. package/styles/drop-down-list/icons/_fabric-dark.scss +14 -14
  86. package/styles/drop-down-list/icons/_fabric.scss +14 -14
  87. package/styles/drop-down-list/icons/_highcontrast-light.scss +14 -14
  88. package/styles/drop-down-list/icons/_highcontrast.scss +14 -14
  89. package/styles/drop-down-list/icons/_material-dark.scss +14 -14
  90. package/styles/drop-down-list/icons/_material.scss +14 -14
  91. package/styles/drop-down-list/material.css +9 -0
  92. package/styles/drop-down-tree/_all.scss +2 -2
  93. package/styles/drop-down-tree/_bootstrap-dark-definition.scss +61 -61
  94. package/styles/drop-down-tree/_bootstrap-definition.scss +61 -61
  95. package/styles/drop-down-tree/_bootstrap4-definition.scss +62 -62
  96. package/styles/drop-down-tree/_fabric-dark-definition.scss +62 -62
  97. package/styles/drop-down-tree/_fabric-definition.scss +62 -62
  98. package/styles/drop-down-tree/_highcontrast-definition.scss +62 -62
  99. package/styles/drop-down-tree/_highcontrast-light-definition.scss +62 -62
  100. package/styles/drop-down-tree/_layout.scss +437 -437
  101. package/styles/drop-down-tree/_material-dark-definition.scss +60 -60
  102. package/styles/drop-down-tree/_material-definition.scss +60 -60
  103. package/styles/drop-down-tree/_theme.scss +68 -68
  104. package/styles/drop-down-tree/icons/_bootstrap-dark.scss +11 -11
  105. package/styles/drop-down-tree/icons/_bootstrap.scss +11 -11
  106. package/styles/drop-down-tree/icons/_bootstrap4.scss +11 -11
  107. package/styles/drop-down-tree/icons/_fabric-dark.scss +11 -11
  108. package/styles/drop-down-tree/icons/_fabric.scss +11 -11
  109. package/styles/drop-down-tree/icons/_highcontrast-light.scss +11 -11
  110. package/styles/drop-down-tree/icons/_highcontrast.scss +11 -11
  111. package/styles/drop-down-tree/icons/_material-dark.scss +11 -11
  112. package/styles/drop-down-tree/icons/_material.scss +11 -11
  113. package/styles/drop-down-tree/material.css +9 -0
  114. package/styles/fabric-dark.css +2 -5
  115. package/styles/fabric.css +1 -4
  116. package/styles/highcontrast-light.css +2 -5
  117. package/styles/highcontrast.css +2 -7
  118. package/styles/list-box/_all.scss +2 -2
  119. package/styles/list-box/_bootstrap-dark-definition.scss +118 -118
  120. package/styles/list-box/_bootstrap-definition.scss +112 -112
  121. package/styles/list-box/_bootstrap4-definition.scss +118 -118
  122. package/styles/list-box/_fabric-dark-definition.scss +118 -118
  123. package/styles/list-box/_fabric-definition.scss +112 -112
  124. package/styles/list-box/_highcontrast-definition.scss +112 -112
  125. package/styles/list-box/_highcontrast-light-definition.scss +118 -118
  126. package/styles/list-box/_layout.scss +458 -458
  127. package/styles/list-box/_material-dark-definition.scss +118 -118
  128. package/styles/list-box/_material-definition.scss +112 -112
  129. package/styles/list-box/_theme.scss +273 -273
  130. package/styles/list-box/icons/_bootstrap-dark.scss +25 -25
  131. package/styles/list-box/icons/_bootstrap.scss +25 -25
  132. package/styles/list-box/icons/_bootstrap4.scss +25 -25
  133. package/styles/list-box/icons/_fabric-dark.scss +25 -25
  134. package/styles/list-box/icons/_fabric.scss +25 -25
  135. package/styles/list-box/icons/_highcontrast-light.scss +25 -25
  136. package/styles/list-box/icons/_highcontrast.scss +25 -25
  137. package/styles/list-box/icons/_material-dark.scss +25 -25
  138. package/styles/list-box/icons/_material.scss +25 -25
  139. package/styles/material-dark.css +8 -11
  140. package/styles/material.css +34 -10
  141. package/styles/multi-select/_all.scss +2 -2
  142. package/styles/multi-select/_bootstrap-dark-definition.scss +171 -171
  143. package/styles/multi-select/_bootstrap-definition.scss +166 -166
  144. package/styles/multi-select/_bootstrap4-definition.scss +233 -233
  145. package/styles/multi-select/_fabric-dark-definition.scss +170 -170
  146. package/styles/multi-select/_fabric-definition.scss +167 -167
  147. package/styles/multi-select/_highcontrast-definition.scss +257 -259
  148. package/styles/multi-select/_highcontrast-light-definition.scss +258 -258
  149. package/styles/multi-select/_layout.scss +1153 -1153
  150. package/styles/multi-select/_material-dark-definition.scss +186 -186
  151. package/styles/multi-select/_material-definition.scss +191 -191
  152. package/styles/multi-select/_theme.scss +384 -389
  153. package/styles/multi-select/bootstrap-dark.css +13 -16
  154. package/styles/multi-select/bootstrap.css +12 -15
  155. package/styles/multi-select/bootstrap4.css +6 -10
  156. package/styles/multi-select/fabric-dark.css +2 -5
  157. package/styles/multi-select/fabric.css +1 -4
  158. package/styles/multi-select/highcontrast-light.css +2 -5
  159. package/styles/multi-select/highcontrast.css +2 -7
  160. package/styles/multi-select/icons/_bootstrap-dark.scss +26 -26
  161. package/styles/multi-select/icons/_bootstrap.scss +26 -26
  162. package/styles/multi-select/icons/_bootstrap4.scss +37 -37
  163. package/styles/multi-select/icons/_fabric-dark.scss +26 -26
  164. package/styles/multi-select/icons/_fabric.scss +26 -26
  165. package/styles/multi-select/icons/_highcontrast-light.scss +26 -26
  166. package/styles/multi-select/icons/_highcontrast.scss +26 -26
  167. package/styles/multi-select/icons/_material-dark.scss +26 -26
  168. package/styles/multi-select/icons/_material.scss +324 -324
  169. package/styles/multi-select/material-dark.css +8 -11
  170. package/styles/multi-select/material.css +16 -10
@@ -0,0 +1,47 @@
1
+ export type HightLightType = 'Contains' | 'StartsWith' | 'EndsWith';
2
+ /**
3
+ * Function helps to find which highlightSearch is to call based on your data.
4
+ * @param {HTMLElement} element - Specifies an li element.
5
+ * @param {string} query - Specifies the string to be highlighted.
6
+ * @param {boolean} ignoreCase - Specifies the ignoreCase option.
7
+ * @param {HightLightType} type - Specifies the type of highlight.
8
+ */
9
+ export function highlightSearch(element: HTMLElement, query: string, ignoreCase: boolean, type?: HightLightType, isBlazor?: boolean): void {
10
+ if (query === '') {
11
+ return;
12
+ } else {
13
+ let ignoreRegex: string = ignoreCase ? 'gim' : 'gm';
14
+ query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
15
+ let replaceQuery: string = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ? '(' + query + ')$' : '(' + query + ')';
16
+ findTextNode(element, new RegExp(replaceQuery, ignoreRegex), isBlazor);
17
+ }
18
+ }
19
+
20
+ function findTextNode(element: HTMLElement, pattern: RegExp, isBlazor?: boolean): void {
21
+ for (let index: number = 0; element.childNodes && (index < element.childNodes.length); index++) {
22
+ if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {
23
+ element = (isBlazor && element.classList.contains('e-highlight')) ? element.parentElement : element;
24
+ if (isBlazor && element.getAttribute('data-value')) {
25
+ element.innerHTML = element.getAttribute('data-value').replace(pattern, '<span class="e-highlight">$1</span>');
26
+ } else {
27
+ element.innerHTML = element.innerHTML.replace(pattern, '<span class="e-highlight">$1</span>');
28
+ }
29
+ break;
30
+ } else {
31
+ findTextNode(element.childNodes[index] as HTMLElement, pattern, isBlazor);
32
+ }
33
+ }
34
+ }
35
+
36
+ /**
37
+ * Function helps to remove highlighted element based on your data.
38
+ * @param {HTMLElement} content - Specifies an content element.
39
+ */
40
+ export function revertHighlightSearch(content: HTMLElement): void {
41
+ let contentElement: NodeListOf<Element> = content.querySelectorAll('.e-highlight');
42
+ for (let i: number = contentElement.length - 1; i >= 0; i--) {
43
+ let parent: Node = contentElement[i].parentNode;
44
+ let text: Text = document.createTextNode(contentElement[i].textContent);
45
+ parent.replaceChild(text, contentElement[i]);
46
+ }
47
+ }
@@ -0,0 +1,81 @@
1
+
2
+ /**
3
+ * IncrementalSearch module file
4
+ */
5
+
6
+ let queryString: string = '';
7
+ let prevString: string = '';
8
+ let matches: Element[] = [];
9
+ let activeClass: string = 'e-active';
10
+ let prevElementId: string = '';
11
+ export type SearchType = 'StartsWith' | 'Equal';
12
+ /**
13
+ * Search and focus the list item based on key code matches with list text content
14
+ * @param { number } keyCode - Specifies the key code which pressed on keyboard events.
15
+ * @param { HTMLElement[]] } items - Specifies an array of HTMLElement, from which matches find has done.
16
+ * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen
17
+ * after selected item otherwise it will do from initial.
18
+ * @param { boolean } ignoreCase - Specifies the case consideration when search has done.
19
+ */
20
+
21
+ export function incrementalSearch(
22
+ keyCode: number, items: HTMLElement[], selectedIndex: number, ignoreCase: boolean, elementId: string, isBlazor?: boolean): Element {
23
+ queryString += String.fromCharCode(keyCode);
24
+ setTimeout(() => { queryString = ''; }, 1000);
25
+ let index: number;
26
+ queryString = ignoreCase ? queryString.toLowerCase() : queryString;
27
+ if (prevElementId === elementId && prevString === queryString) {
28
+ for (let i: number = 0; i < matches.length; i++) {
29
+ if (matches[i].classList.contains(activeClass)) { index = i; break; }
30
+ }
31
+ index = index + 1;
32
+ return matches[index];
33
+ } else {
34
+ let listItems: Element[] = items;
35
+ let strLength: number = queryString.length;
36
+ let text: string;
37
+ let item: HTMLElement;
38
+ selectedIndex = selectedIndex ? selectedIndex + 1 : 0;
39
+ let i: number = selectedIndex;
40
+ matches = [];
41
+ do {
42
+ if (i === listItems.length) { i = -1; }
43
+ i === -1 ? index = 0 : index = i;
44
+ item = listItems[index] as HTMLElement;
45
+ if (isBlazor) {
46
+ text = ignoreCase ? item.textContent.trim().toLowerCase() : item.textContent.trim();
47
+ } else {
48
+ text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;
49
+ }
50
+ if (text.substr(0, strLength) === queryString) {
51
+ matches.push(listItems[index]);
52
+ }
53
+ i++;
54
+ } while (i !== selectedIndex);
55
+ prevString = queryString;
56
+ prevElementId = elementId;
57
+ return matches[0];
58
+ }
59
+ }
60
+
61
+ export function Search(
62
+ inputVal: string, items: HTMLElement[], searchType: SearchType, ignoreCase?: boolean): { [key: string]: Element | number } {
63
+ let listItems: Element[] = items;
64
+ ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;
65
+ let itemData: { [key: string]: Element | number } = { item: null, index: null };
66
+ if (inputVal && inputVal.length) {
67
+ let strLength: number = inputVal.length;
68
+ let queryStr: string = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;
69
+ for (let i: number = 0, itemsData: Element[] = listItems; i < itemsData.length; i++) {
70
+ let item: Element = itemsData[i];
71
+ let text: string = (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\s+|\s+$/g, '');
72
+ if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr)) {
73
+ itemData.item = item;
74
+ itemData.index = i;
75
+ return { item: item, index: i };
76
+ }
77
+ }
78
+ return itemData;
79
+ }
80
+ return itemData;
81
+ }