verben-ng-ui 0.0.1

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 (190) hide show
  1. package/README.md +24 -0
  2. package/ng-package.json +10 -0
  3. package/package.json +34 -0
  4. package/src/lib/Verbena-input/error.service.ts +23 -0
  5. package/src/lib/Verbena-input/verbena-input.component.css +59 -0
  6. package/src/lib/Verbena-input/verbena-input.component.html +64 -0
  7. package/src/lib/Verbena-input/verbena-input.component.spec.ts +25 -0
  8. package/src/lib/Verbena-input/verbena-input.component.ts +162 -0
  9. package/src/lib/Verbena-input/verbena-input.module.ts +12 -0
  10. package/src/lib/components/TemplateDirective.directive.ts +10 -0
  11. package/src/lib/components/card/card.component.css +20 -0
  12. package/src/lib/components/card/card.component.html +23 -0
  13. package/src/lib/components/card/card.component.spec.ts +23 -0
  14. package/src/lib/components/card/card.component.ts +33 -0
  15. package/src/lib/components/card/card.module.ts +10 -0
  16. package/src/lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component.css +3 -0
  17. package/src/lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component.html +1 -0
  18. package/src/lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component.spec.ts +23 -0
  19. package/src/lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component.ts +10 -0
  20. package/src/lib/components/card-data-view/card-data-view-header/card-data-view-header.component.css +7 -0
  21. package/src/lib/components/card-data-view/card-data-view-header/card-data-view-header.component.html +1 -0
  22. package/src/lib/components/card-data-view/card-data-view-header/card-data-view-header.component.spec.ts +23 -0
  23. package/src/lib/components/card-data-view/card-data-view-header/card-data-view-header.component.ts +10 -0
  24. package/src/lib/components/card-data-view/card-data-view.component.css +39 -0
  25. package/src/lib/components/card-data-view/card-data-view.component.html +29 -0
  26. package/src/lib/components/card-data-view/card-data-view.component.spec.ts +23 -0
  27. package/src/lib/components/card-data-view/card-data-view.component.ts +66 -0
  28. package/src/lib/components/card-data-view/card-data-view.module.ts +20 -0
  29. package/src/lib/components/card-data-view/card-data.ts +7 -0
  30. package/src/lib/components/card-data-view/left-card-data/left-card-data.component.css +15 -0
  31. package/src/lib/components/card-data-view/left-card-data/left-card-data.component.html +4 -0
  32. package/src/lib/components/card-data-view/left-card-data/left-card-data.component.spec.ts +23 -0
  33. package/src/lib/components/card-data-view/left-card-data/left-card-data.component.ts +19 -0
  34. package/src/lib/components/card-data-view/left-card-data-view/left-card-data-view.component.css +0 -0
  35. package/src/lib/components/card-data-view/left-card-data-view/left-card-data-view.component.html +4 -0
  36. package/src/lib/components/card-data-view/left-card-data-view/left-card-data-view.component.spec.ts +23 -0
  37. package/src/lib/components/card-data-view/left-card-data-view/left-card-data-view.component.ts +12 -0
  38. package/src/lib/components/card-data-view/right-card-data-view/right-card-data-view.component.css +3 -0
  39. package/src/lib/components/card-data-view/right-card-data-view/right-card-data-view.component.html +1 -0
  40. package/src/lib/components/card-data-view/right-card-data-view/right-card-data-view.component.spec.ts +23 -0
  41. package/src/lib/components/card-data-view/right-card-data-view/right-card-data-view.component.ts +10 -0
  42. package/src/lib/components/chip/ChipChangeEvent.ts +4 -0
  43. package/src/lib/components/chip/chip.component.css +94 -0
  44. package/src/lib/components/chip/chip.component.html +49 -0
  45. package/src/lib/components/chip/chip.component.spec.ts +23 -0
  46. package/src/lib/components/chip/chip.component.ts +209 -0
  47. package/src/lib/components/chip/chip.module.ts +24 -0
  48. package/src/lib/components/chip/documentation.md +26 -0
  49. package/src/lib/components/data-export/data-export.component.css +0 -0
  50. package/src/lib/components/data-export/data-export.component.html +90 -0
  51. package/src/lib/components/data-export/data-export.component.spec.ts +23 -0
  52. package/src/lib/components/data-export/data-export.component.ts +158 -0
  53. package/src/lib/components/data-export/data-export.module.ts +13 -0
  54. package/src/lib/components/data-export/data-export.service.spec.ts +16 -0
  55. package/src/lib/components/data-export/data-export.service.ts +152 -0
  56. package/src/lib/components/data-export/data-export.types.ts +21 -0
  57. package/src/lib/components/data-table/column.directive.spec.ts +8 -0
  58. package/src/lib/components/data-table/column.directive.ts +19 -0
  59. package/src/lib/components/data-table/data-table.component.css +0 -0
  60. package/src/lib/components/data-table/data-table.component.html +55 -0
  61. package/src/lib/components/data-table/data-table.component.spec.ts +21 -0
  62. package/src/lib/components/data-table/data-table.component.ts +336 -0
  63. package/src/lib/components/data-table/data-table.module.ts +11 -0
  64. package/src/lib/components/data-table/data-table.types.ts +13 -0
  65. package/src/lib/components/data-table/style.types.ts +55 -0
  66. package/src/lib/components/data-view/data-view-click-outside.directive.ts +44 -0
  67. package/src/lib/components/data-view/data-view.component.css +74 -0
  68. package/src/lib/components/data-view/data-view.component.html +161 -0
  69. package/src/lib/components/data-view/data-view.component.spec.ts +23 -0
  70. package/src/lib/components/data-view/data-view.component.ts +136 -0
  71. package/src/lib/components/data-view/data-view.module.ts +16 -0
  72. package/src/lib/components/date-picker/date-picker.component.css +65 -0
  73. package/src/lib/components/date-picker/date-picker.component.html +60 -0
  74. package/src/lib/components/date-picker/date-picker.component.specs.ts +23 -0
  75. package/src/lib/components/date-picker/date-picker.component.ts +143 -0
  76. package/src/lib/components/date-picker/date-picker.module.ts +12 -0
  77. package/src/lib/components/drop-down/DropdownChangeEvent.ts +4 -0
  78. package/src/lib/components/drop-down/DropdownLoadEvent.ts +19 -0
  79. package/src/lib/components/drop-down/DropdownMenuItem.ts +42 -0
  80. package/src/lib/components/drop-down/documentation.md +69 -0
  81. package/src/lib/components/drop-down/drop-down-item/drop-down-item.component.css +123 -0
  82. package/src/lib/components/drop-down/drop-down-item/drop-down-item.component.html +133 -0
  83. package/src/lib/components/drop-down/drop-down-item/drop-down-item.component.spec.ts +23 -0
  84. package/src/lib/components/drop-down/drop-down-item/drop-down-item.component.ts +88 -0
  85. package/src/lib/components/drop-down/drop-down.component.css +317 -0
  86. package/src/lib/components/drop-down/drop-down.component.html +177 -0
  87. package/src/lib/components/drop-down/drop-down.component.spec.ts +23 -0
  88. package/src/lib/components/drop-down/drop-down.component.ts +757 -0
  89. package/src/lib/components/drop-down/drop-down.module.ts +24 -0
  90. package/src/lib/components/image/image.component.css +12 -0
  91. package/src/lib/components/image/image.component.html +18 -0
  92. package/src/lib/components/image/image.component.spec.ts +23 -0
  93. package/src/lib/components/image/image.component.ts +45 -0
  94. package/src/lib/components/image/image.module.ts +11 -0
  95. package/src/lib/components/notification/notification.component.css +3 -0
  96. package/src/lib/components/notification/notification.component.html +19 -0
  97. package/src/lib/components/notification/notification.component.spec.ts +23 -0
  98. package/src/lib/components/notification/notification.component.ts +77 -0
  99. package/src/lib/components/notification/notification.module.ts +14 -0
  100. package/src/lib/components/shared.module.ts +9 -0
  101. package/src/lib/components/sort-table/sort-table.component.css +67 -0
  102. package/src/lib/components/sort-table/sort-table.component.html +164 -0
  103. package/src/lib/components/sort-table/sort-table.component.spec.ts +23 -0
  104. package/src/lib/components/sort-table/sort-table.component.ts +204 -0
  105. package/src/lib/components/sort-table/sort-table.module.ts +11 -0
  106. package/src/lib/components/svg/svg.component.css +0 -0
  107. package/src/lib/components/svg/svg.component.html +1 -0
  108. package/src/lib/components/svg/svg.component.spec.ts +23 -0
  109. package/src/lib/components/svg/svg.component.ts +64 -0
  110. package/src/lib/components/svg/svg.module.ts +10 -0
  111. package/src/lib/components/table-filter/table-filter.component.css +93 -0
  112. package/src/lib/components/table-filter/table-filter.component.html +293 -0
  113. package/src/lib/components/table-filter/table-filter.component.spec.ts +23 -0
  114. package/src/lib/components/table-filter/table-filter.component.ts +221 -0
  115. package/src/lib/components/table-filter/table-filter.module.ts +25 -0
  116. package/src/lib/components/tooltip/tooltip.component.css +8 -0
  117. package/src/lib/components/tooltip/tooltip.component.html +13 -0
  118. package/src/lib/components/tooltip/tooltip.component.spec.ts +23 -0
  119. package/src/lib/components/tooltip/tooltip.component.ts +84 -0
  120. package/src/lib/components/tooltip/tooltip.module.ts +11 -0
  121. package/src/lib/components/verben-mail/verben-mail.component.config.ts +11 -0
  122. package/src/lib/components/verben-mail/verben-mail.component.css +71 -0
  123. package/src/lib/components/verben-mail/verben-mail.component.html +139 -0
  124. package/src/lib/components/verben-mail/verben-mail.component.ts +151 -0
  125. package/src/lib/components/verben-mail/verben-mail.module.ts +18 -0
  126. package/src/lib/components/visible-column/visible-column.component.css +83 -0
  127. package/src/lib/components/visible-column/visible-column.component.html +77 -0
  128. package/src/lib/components/visible-column/visible-column.component.spec.ts +23 -0
  129. package/src/lib/components/visible-column/visible-column.component.ts +106 -0
  130. package/src/lib/components/visible-column/visible-column.module.ts +11 -0
  131. package/src/lib/config.ts +37 -0
  132. package/src/lib/control-options/control-options.directive.ts +129 -0
  133. package/src/lib/control-options/control-options.module.ts +10 -0
  134. package/src/lib/convert-to-integer/convert-to-integer.directive.ts +28 -0
  135. package/src/lib/convert-to-integer/convert-to-integer.module.ts +10 -0
  136. package/src/lib/convert-to-integer/public-api.ts +1 -0
  137. package/src/lib/convert-to-number/convert-to-number.directive.ts +22 -0
  138. package/src/lib/convert-to-number/convert-to-number.module.ts +8 -0
  139. package/src/lib/convert-to-number/public-api.ts +1 -0
  140. package/src/lib/email-validator/email-validator.directive.ts +24 -0
  141. package/src/lib/email-validator/email-validator.module.ts +14 -0
  142. package/src/lib/models/column-filter.ts +5 -0
  143. package/src/lib/models/data-filter.ts +8 -0
  144. package/src/lib/models/mail-model.ts +8 -0
  145. package/src/lib/models/sort-filter.ts +0 -0
  146. package/src/lib/models/table-filter.ts +34 -0
  147. package/src/lib/number-range/number-range.directive.ts +35 -0
  148. package/src/lib/number-range/number-range.module.ts +11 -0
  149. package/src/lib/phone-number/phone-number.directive.ts +22 -0
  150. package/src/lib/phone-number/phone-number.module.ts +10 -0
  151. package/src/lib/phone-number/public-api.ts +1 -0
  152. package/src/lib/required-input/required-input.directive.ts +18 -0
  153. package/src/lib/required-input/required-input.module.ts +8 -0
  154. package/src/lib/theme-switcher/theme-switcher.directive.spec.ts +8 -0
  155. package/src/lib/theme-switcher/theme-switcher.directive.ts +70 -0
  156. package/src/lib/theme-switcher/theme-switcher.module.ts +8 -0
  157. package/src/lib/validate/error-message.service.ts +104 -0
  158. package/src/lib/validate/validate.directive.ts +110 -0
  159. package/src/lib/validate/validate.module.ts +17 -0
  160. package/src/lib/validate-input/validate-input.directive.ts +8 -0
  161. package/src/lib/validate-input/validate-input.module.ts +8 -0
  162. package/src/lib/verben-ng-ui.component.spec.ts +23 -0
  163. package/src/lib/verben-ng-ui.component.ts +16 -0
  164. package/src/lib/verben-ng-ui.service.spec.ts +16 -0
  165. package/src/lib/verben-ng-ui.service.ts +9 -0
  166. package/src/lib/verbena-badge/verbena-badge.component.css +16 -0
  167. package/src/lib/verbena-badge/verbena-badge.component.html +13 -0
  168. package/src/lib/verbena-badge/verbena-badge.component.spec.ts +25 -0
  169. package/src/lib/verbena-badge/verbena-badge.component.ts +18 -0
  170. package/src/lib/verbena-badge/verbena-badge.module.ts +10 -0
  171. package/src/lib/verbena-button/verbena-button.component.css +20 -0
  172. package/src/lib/verbena-button/verbena-button.component.html +25 -0
  173. package/src/lib/verbena-button/verbena-button.component.spec.ts +25 -0
  174. package/src/lib/verbena-button/verbena-button.component.ts +92 -0
  175. package/src/lib/verbena-button/verbena-button.module.ts +11 -0
  176. package/src/lib/verbena-switch/verbena-switch.component.css +45 -0
  177. package/src/lib/verbena-switch/verbena-switch.component.html +8 -0
  178. package/src/lib/verbena-switch/verbena-switch.component.spec.ts +25 -0
  179. package/src/lib/verbena-switch/verbena-switch.component.ts +31 -0
  180. package/src/lib/verbena-switch/verbena-switch.module.ts +10 -0
  181. package/src/lib/verbena-textarea/verbena-textarea.component.css +0 -0
  182. package/src/lib/verbena-textarea/verbena-textarea.component.html +19 -0
  183. package/src/lib/verbena-textarea/verbena-textarea.component.spec.ts +33 -0
  184. package/src/lib/verbena-textarea/verbena-textarea.component.ts +44 -0
  185. package/src/lib/verbena-textarea/verbena-textarea.module.ts +11 -0
  186. package/src/public-api.ts +122 -0
  187. package/src/styles.css +103 -0
  188. package/tsconfig.lib.json +15 -0
  189. package/tsconfig.lib.prod.json +11 -0
  190. package/tsconfig.spec.json +15 -0
@@ -0,0 +1,317 @@
1
+ @import '../../../styles.css';
2
+
3
+ .error-message {
4
+ position: absolute;
5
+ z-index: 1;
6
+ left: 0;
7
+ right: 0;
8
+ bottom: -20px;
9
+ }
10
+
11
+ .top-error .error-message {
12
+ top: -20px !important;
13
+ bottom: initial !important;
14
+ }
15
+
16
+ .left-error .error-message {
17
+ bottom: 50% !important;
18
+ right: calc(100% + 10px) !important;
19
+ width: max-content;
20
+ left: initial !important;
21
+ transform: translateY(50%);
22
+ }
23
+
24
+ .right-error .error-message {
25
+ bottom: 50% !important;
26
+ left: calc(100% + 10px) !important;
27
+ width: max-content;
28
+ right: initial !important;
29
+ transform: translateY(50%);
30
+ }
31
+
32
+ .drop-down {
33
+ position: relative;
34
+ cursor: pointer;
35
+ }
36
+
37
+ .drop-down-menu-item-wrapper {
38
+ min-width: calc(100% - 4px);
39
+ position: absolute;
40
+ margin-top: 3px;
41
+ left: 0;
42
+ right: 0;
43
+ z-index: 1;
44
+ background: #ffffff;
45
+ color: #334155;
46
+ border: 1px solid #e2e8f0;
47
+ border-radius: 5px;
48
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
49
+ }
50
+
51
+ .drop-down-menu-item {
52
+ max-height: 200px;
53
+ overflow-y: auto;
54
+ padding: 4px;
55
+ box-sizing: content-box;
56
+ }
57
+
58
+ .drop-down-input-wrapper {
59
+ position: relative;
60
+ }
61
+
62
+ .drop-down-input {
63
+ align-items: center;
64
+ min-height: 39px;
65
+ }
66
+
67
+ .drop-down-input.disabled .dropdown-label {
68
+ color: #64748b;
69
+ }
70
+
71
+ .drop-down-main-content {
72
+ flex: 1 1 0;
73
+ padding: 8px;
74
+ min-width: 0;
75
+ }
76
+
77
+ .drop-down-icon-item.drop-down-clear-button {
78
+ padding: 8px 5px;
79
+ }
80
+
81
+ .drop-down-icon-item>svg {
82
+ width: 0.8rem;
83
+ height: 0.8rem;
84
+ display: flex;
85
+ }
86
+
87
+ .drop-down-icon-item.drop-down-clear-button>svg {
88
+ color: #94a3b8;
89
+ }
90
+
91
+ .drop-down-icon-item.drop-down-expand-button {
92
+ padding: 8px 8px 8px 5px;
93
+ }
94
+
95
+ .drop-down-icon-item.drop-down-expand-button>svg {
96
+ color: #94a3b8;
97
+ }
98
+
99
+ .drop-down-input.disabled .drop-down-icon-item>svg {
100
+ color: #64748b;
101
+ }
102
+
103
+ .dropdown-label {
104
+ color: #334155;
105
+ white-space: nowrap;
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ }
109
+
110
+ .dropdown-label.place-holder {
111
+ color: #64748b;
112
+ }
113
+
114
+ .default-item {
115
+ align-items: center;
116
+ }
117
+
118
+ .default-item>div {
119
+ flex: 1 1 0;
120
+ width: 100%;
121
+ }
122
+
123
+ .see-more-container {
124
+ padding: 5px;
125
+ }
126
+
127
+ .see-more-caption {
128
+ font-size: 12px;
129
+ color: #3b82f6;
130
+ }
131
+
132
+ .actions-section {
133
+ gap: 5px;
134
+ margin: 10px;
135
+ align-items: center;
136
+ }
137
+
138
+ .select-all-caption {
139
+ font-weight: 600;
140
+ }
141
+
142
+ .search-section {
143
+ flex: 1 1 0;
144
+ border: 1px solid transparent;
145
+ padding: 2px 10px;
146
+ border-radius: 24px;
147
+ gap: 3px;
148
+ background-color: rgba(217, 217, 217, 0.25);
149
+ align-items: center;
150
+ }
151
+
152
+ .search-section.focused {
153
+ border-color: #3b82f6;
154
+ outline: none;
155
+ }
156
+
157
+ .search-icon>svg {
158
+ color: #64748b;
159
+ width: 0.8rem;
160
+ height: 0.8rem;
161
+ }
162
+
163
+ .search-input-container {
164
+ flex: 1 1 0;
165
+ }
166
+
167
+ .search-input {
168
+ width: 100%;
169
+ border: none;
170
+ outline: none;
171
+ background-color: transparent;
172
+ }
173
+
174
+ .search-context {
175
+ max-width: 45px;
176
+ border-radius: 5px;
177
+ padding: 3px 5px;
178
+ background-color: rgba(52, 121, 233, 0.5);
179
+ white-space: nowrap;
180
+ overflow: hidden;
181
+ text-overflow: ellipsis;
182
+ }
183
+
184
+ .colored-underline {
185
+ height: 4px;
186
+ border: none;
187
+ }
188
+
189
+ .multiselect-items-container {
190
+ padding: 10px;
191
+ }
192
+
193
+ .multiselect-items-container.normal {
194
+ max-width: 100%;
195
+ overflow-x: auto;
196
+ white-space: nowrap;
197
+ }
198
+
199
+ .multiselect-items-container.chip {
200
+ max-width: 100%;
201
+ overflow-x: auto;
202
+ white-space: nowrap;
203
+ gap: 5px;
204
+ /* flex-wrap: wrap;
205
+ max-height: 50px;
206
+ gap: 5px;
207
+ overflow-y: auto; */
208
+ }
209
+
210
+ .multiselect-items-container-two.normal {
211
+ max-width: 100%;
212
+ white-space: nowrap;
213
+ overflow: hidden;
214
+ text-overflow: ellipsis;
215
+ }
216
+
217
+ .multiselect-items-container-two.chip {
218
+ max-width: 100%;
219
+ white-space: nowrap;
220
+ overflow: hidden;
221
+ text-overflow: ellipsis;
222
+ gap: 5px;
223
+ /* flex-wrap: wrap;
224
+ max-height: 50px;
225
+ gap: 5px;
226
+ overflow-y: auto; */
227
+ }
228
+
229
+ .multiselect-items-container-two-tooltip {
230
+ display: grid;
231
+ flex-wrap: wrap;
232
+ gap: 10px 5px;
233
+ grid-template-columns: repeat(2, 1fr);
234
+ }
235
+
236
+ .multiselect-items-container-two-tooltip-normal {
237
+ display: flex;
238
+ flex-wrap: wrap;
239
+ }
240
+
241
+ .multiselect-items-container-two-tooltip .multiselect-item-chip {
242
+ justify-content: space-between;
243
+ }
244
+
245
+ .multiselect-item-chip {
246
+ align-items: center;
247
+ gap: 5px;
248
+ border-radius: 5px;
249
+ padding: 1px 5px;
250
+ background-color: rgba(52, 121, 233, 0.5);
251
+ }
252
+
253
+ .multiselect-item-chip.multi-select {
254
+ margin-right: 5px;
255
+ display: inline-flex;
256
+ }
257
+
258
+ .multiselect-item-chip>span {
259
+ max-width: 100px;
260
+ white-space: nowrap;
261
+ overflow: hidden;
262
+ text-overflow: ellipsis;
263
+ }
264
+
265
+ .multiselect-item-chip>svg {
266
+ width: 12px;
267
+ height: 12px;
268
+ }
269
+
270
+ verben-tooltip {
271
+ width: 100%;
272
+ }
273
+
274
+ ::ng-deep .custom-tooltip-width {
275
+ max-width: 300px;
276
+ max-height: 500px;
277
+ overflow-y: auto;
278
+ }
279
+
280
+ .loading-overlay {
281
+ position: absolute;
282
+ top: 0;
283
+ left: 0;
284
+ width: 100%;
285
+ height: 100%;
286
+ background-color: rgba(77, 75, 75, 0.5);
287
+ /* Semi-transparent shade */
288
+ z-index: 10;
289
+ /* Make sure it's on top */
290
+ display: flex;
291
+ justify-content: center;
292
+ align-items: center;
293
+ pointer-events: none;
294
+ /* Prevents interactions below */
295
+ }
296
+
297
+ .loader {
298
+ width: 50px;
299
+ padding: 8px;
300
+ aspect-ratio: 1;
301
+ border-radius: 50%;
302
+ background: #3b82f6;
303
+ --_m:
304
+ conic-gradient(#0000 10%, #000),
305
+ linear-gradient(#000 0 0) content-box;
306
+ -webkit-mask: var(--_m);
307
+ mask: var(--_m);
308
+ -webkit-mask-composite: source-out;
309
+ mask-composite: subtract;
310
+ animation: l3 1s infinite linear;
311
+ }
312
+
313
+ @keyframes l3 {
314
+ to {
315
+ transform: rotate(1turn)
316
+ }
317
+ }
@@ -0,0 +1,177 @@
1
+ <div #dropdownContainer [ngClass]="styleClass" [style.width]="width" class="drop-down">
2
+ <div
3
+ [ngClass]="{'right-error': errorPosition == 'right', 'left-error': errorPosition == 'left', 'top-error': errorPosition == 'top'}"
4
+ class="drop-down-input-wrapper">
5
+ <div (click)="onDropdownClick($event)" [class.focused]="isFocused"
6
+ [ngClass]="{'ng-invalid': isInvalid, 'disabled': disabled}" (focus)="onFocus()" (blur)="onBlur()" tabindex="0"
7
+ class="drop-down-input verben-input flex">
8
+ <div class="drop-down-main-content">
9
+ <ng-container
10
+ *ngIf="(selectedItemTemplate && selectedOption) || (selectedItemTemplate && selectedOptions.length > 0); else defaultItem">
11
+ <div *ngIf="!multiselect">
12
+ <ng-container
13
+ *ngTemplateOutlet="selectedItemTemplate; context: { $implicit: selectedOption }"></ng-container>
14
+ </div>
15
+ <div *ngIf="multiselect">
16
+ <ng-container
17
+ *ngTemplateOutlet="selectedItemTemplate; context: { $implicit: selectedOptions }"></ng-container>
18
+ </div>
19
+ </ng-container>
20
+
21
+ <ng-template #defaultItem>
22
+ <div *ngIf="!multiselect" class="default-item flex">
23
+ <div class="dropdown-label place-holder" *ngIf="!this.selectedOption">{{placeholder}}</div>
24
+ <div *ngIf="this.selectedOption" class="item-label dropdown-label">
25
+ {{this.selectedOptionLabel}}</div>
26
+ </div>
27
+ <div *ngIf="multiselect" class="default-item multi-select flex">
28
+ <div class="dropdown-label place-holder" *ngIf="this.selectedOptions.length == 0">{{placeholder}}</div>
29
+ <verben-tooltip customClass="custom-tooltip-width" border="1px solid #334155" backgroundColor="white"
30
+ [tooltipContent]="multiselectTooltip">
31
+ <div *ngIf="this.selectedOptions.length > 0" class="item-label dropdown-label">
32
+ <div *ngIf="display == 'chip'" class="multiselect-items-container-two chip">
33
+ <span *ngFor="let item of selectedOptionLabels; index as i"
34
+ class="multiselect-item-chip multi-select flex">
35
+ <span>{{item}}</span>
36
+ <verben-svg (click)="onMultiselectItemClosed(i, $event); $event.stopPropagation();"
37
+ icon="close-circle-full" [width]="15" [height]="15"></verben-svg>
38
+ <!-- <svg (click)="onMultiselectItemClosed(i, $event); $event.stopPropagation();" width="10" height="10"
39
+ viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
40
+ <path
41
+ d="M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z"
42
+ stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" />
43
+ <path d="M6.25 3.91797L3.75 6.41797" stroke="currentColor" stroke-linecap="round"
44
+ stroke-linejoin="round" />
45
+ <path d="M3.75 3.91797L6.25 6.41797" stroke="currentColor" stroke-linecap="round"
46
+ stroke-linejoin="round" />
47
+ </svg> -->
48
+ </span>
49
+ </div>
50
+ <div *ngIf="display != 'chip'" class="multiselect-items-container-two normal">
51
+ <span *ngFor="let item of selectedOptionLabels; index as i" class="multiselect-item">
52
+ {{i !== selectedOptionLabels.length - 1? item + ', ':item}}
53
+ </span>
54
+ </div>
55
+ </div>
56
+ </verben-tooltip>
57
+ <ng-template #multiselectTooltip>
58
+ <div class="multi-select-full-view">
59
+ <div *ngIf="this.selectedOptions.length > 0" class="item-label dropdown-label">
60
+ <div *ngIf="display == 'chip'" class="multiselect-items-container-two-tooltip chip">
61
+ <span *ngFor="let item of selectedOptionLabels; index as i"
62
+ class="multiselect-item-chip multi-select flex">
63
+ <span>{{item}}</span>
64
+ <verben-svg (click)="onMultiselectItemClosed(i, $event); $event.stopPropagation();"
65
+ icon="close-circle-full" [width]="15" [height]="15"></verben-svg>
66
+ <!-- <svg (click)="onMultiselectItemClosed(i, $event); $event.stopPropagation();" width="10" height="10"
67
+ viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
68
+ <path
69
+ d="M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z"
70
+ stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" />
71
+ <path d="M6.25 3.91797L3.75 6.41797" stroke="currentColor" stroke-linecap="round"
72
+ stroke-linejoin="round" />
73
+ <path d="M3.75 3.91797L6.25 6.41797" stroke="currentColor" stroke-linecap="round"
74
+ stroke-linejoin="round" />
75
+ </svg> -->
76
+ </span>
77
+ </div>
78
+ <div *ngIf="display != 'chip'" class="multiselect-items-container-two-tooltip-normal">
79
+ <span *ngFor="let item of selectedOptionLabels; index as i" class="multiselect-item">
80
+ {{i !== selectedOptionLabels.length - 1? item + ', ':item}}
81
+ </span>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </ng-template>
86
+ </div>
87
+ </ng-template>
88
+ </div>
89
+ <span
90
+ *ngIf="(showClear && this.selectedOption && !multiselect) || (showClear && this.selectedOptions.length > 0 && multiselect)"
91
+ (click)="this.clearSelection($event); $event.stopPropagation()"
92
+ class="drop-down-icon-item drop-down-clear-button">
93
+ <verben-svg icon="close-no-circle" stroke="#94a3b8" [width]="13" [height]="13"></verben-svg>
94
+ <!-- <svg width="9" height="9" viewBox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg">
95
+ <path d="M0.84375 0.84375L8.15625 8.15625" stroke="currentColor" stroke-linecap="round"
96
+ stroke-linejoin="round" />
97
+ <path d="M0.84375 8.15625L8.15625 0.84375" stroke="currentColor" stroke-linecap="round"
98
+ stroke-linejoin="round" />
99
+ </svg> -->
100
+ </span>
101
+ <span class="drop-down-icon-item drop-down-expand-button">
102
+ <verben-svg icon="chevron-down" fill="#94a3b8" [width]="15" [height]="8"></verben-svg>
103
+ <!-- <svg width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg">
104
+ <path
105
+ d="M6.00507 4.88027C6.20205 4.62775 6.30683 4.4622 6.44095 4.32704C7.74334 3.01731 9.05202 1.71387 10.3576 0.406242C10.5713 0.192495 10.7882 0.00913367 11.1193 0.0101814C11.4692 0.0112292 11.7228 0.15792 11.8884 0.456537C12.057 0.760394 12.0309 1.06111 11.8349 1.34296C11.7658 1.4425 11.6767 1.52737 11.5908 1.61433C9.98873 3.21639 8.37305 4.80483 6.793 6.42784C6.29111 6.94335 5.68759 6.92344 5.21399 6.43832C3.63184 4.8174 2.01826 3.22687 0.414109 1.62691C0.116539 1.32934 -0.116067 1.0192 0.0620561 0.565507C0.271612 0.031139 0.883519 -0.167941 1.35502 0.157919C1.49647 0.255363 1.61592 0.387385 1.73955 0.509975C3.02204 1.79036 4.30452 3.07075 5.58386 4.35533C5.70645 4.47792 5.80284 4.62671 6.00611 4.88132L6.00507 4.88027Z"
106
+ fill="currentColor" />
107
+ </svg> -->
108
+ </span>
109
+ </div>
110
+ <div *ngIf="this.isInvalid && this.invalidMessage" class="verben-error-message error-message">{{invalidMessage}}
111
+ </div>
112
+ </div>
113
+ <div class="drop-down-menu-item-wrapper" *ngIf="isExpanded">
114
+ <div *ngIf="multiselect && this.selectedOptions.length > 0">
115
+ <div *ngIf="display == 'chip'" class="multiselect-items-container chip flex">
116
+ <span *ngFor="let item of selectedOptionLabels; index as i" class="multiselect-item-chip flex">
117
+ <span>{{item}}</span>
118
+ <verben-svg (click)="onMultiselectItemClosed(i, $event)" icon="close-circle-full" [width]="15"
119
+ [height]="15"></verben-svg>
120
+ <!-- <svg (click)="onMultiselectItemClosed(i, $event)" width="10" height="10" viewBox="0 0 10 10" fill="none"
121
+ xmlns="http://www.w3.org/2000/svg">
122
+ <path
123
+ d="M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z"
124
+ stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" />
125
+ <path d="M6.25 3.91797L3.75 6.41797" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" />
126
+ <path d="M3.75 3.91797L6.25 6.41797" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" />
127
+ </svg> -->
128
+ </span>
129
+ </div>
130
+ <div *ngIf="display != 'chip'" class="multiselect-items-container normal">
131
+ <span *ngFor="let item of selectedOptionLabels; index as i" class="multiselect-item">
132
+ {{i !== selectedOptionLabels.length - 1? item + ', ':item}}
133
+ </span>
134
+ </div>
135
+ </div>
136
+ <div *ngIf="allowSelectAll || filter" class="actions-section flex">
137
+ <input *ngIf="allowSelectAll" (click)="onSelectAll($event)" type="checkbox" [(ngModel)]="selectedAll"
138
+ class="custom-checkbox" />
139
+ <span class="select-all-caption" *ngIf="allowSelectAll && !filter">Select All</span>
140
+ <div *ngIf="filter" [ngClass]="{'focused': isInputFocused}" tabindex="0" (focus)="onSearchFocus()"
141
+ (blur)="onSearchBlur()" class="search-section flex">
142
+ <span class="search-icon flex">
143
+ <verben-svg icon="search" stroke="#64748b" [width]="15" [height]="15"></verben-svg>
144
+ <!-- <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
145
+ <circle cx="9" cy="9" r="8" stroke="currentColor" stroke-width="2" fill="none"></circle>
146
+ <line x1="14" y1="14" x2="19" y2="19" stroke="currentColor" stroke-width="2"></line>
147
+ </svg> -->
148
+ </span>
149
+ <span *ngIf="this.selectedContexts[this.selectedContexts.length - 1]" class="search-context">
150
+ {{this.getOptionLabel(this.selectedContexts[this.selectedContexts.length - 1])}}
151
+ </span>
152
+ <div class="search-input-container">
153
+ <input (input)="onSearch($event)" [(ngModel)]="searchContext" (focus)="onInputFocus()" (blur)="onInputBlur()"
154
+ placeholder="Search..." class="search-input" />
155
+ </div>
156
+ </div>
157
+ </div>
158
+ <div *ngIf="showHorizontalLine" class="colored-underline-section">
159
+ <hr [style.background-color]="horizontalLineColor" class="colored-underline" />
160
+ </div>
161
+ <div class="drop-down-menu-item">
162
+ <drop-down-item [itemTemplate]="itemTemplate" [groupTemplate]="groupTemplate" [activeItem]="selectedOption"
163
+ [activeItems]="selectedOptions" [multiselect]="multiselect" [optionValue]="optionValue"
164
+ [optionLabel]="optionLabel" [optionSubLabel]="optionSubLabel" [loadMoreCaption]="loadMoreCaption"
165
+ [options]="options" [group]="group" [onExpand]="expandMenu.bind(this)"
166
+ [onLoadMore]="loadMoreMenuItems.bind(this)" [onSelect]="onSelect.bind(this)"></drop-down-item>
167
+ <div *ngIf="lazyLoad">
168
+ <div class="see-more-container flex justify-end">
169
+ <span class="see-more-caption" (click)="loadMore()">{{loadMoreCaption}}</span>
170
+ </div>
171
+ </div>
172
+ <div *ngIf="isLoading" class="loading-overlay">
173
+ <div class="loader"></div>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ </div>
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { DropDownComponent } from './drop-down.component';
4
+
5
+ describe('DropDownComponent', () => {
6
+ let component: DropDownComponent;
7
+ let fixture: ComponentFixture<DropDownComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [DropDownComponent]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(DropDownComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });