@valtimo/components 4.16.0-next-main.19 → 4.18.0

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 (118) hide show
  1. package/assets/css/ng-multiselect-dropdown.theme.scss +210 -0
  2. package/bundles/valtimo-components.umd.js +93 -17
  3. package/bundles/valtimo-components.umd.js.map +1 -1
  4. package/bundles/valtimo-components.umd.min.js +2 -2
  5. package/bundles/valtimo-components.umd.min.js.map +1 -1
  6. package/esm2015/lib/components/alert/alert.component.js +1 -1
  7. package/esm2015/lib/components/alert/alert.module.js +1 -1
  8. package/esm2015/lib/components/alert/alert.service.js +1 -1
  9. package/esm2015/lib/components/bpmn-js-diagram/bpmn-js-diagram.component.js +1 -1
  10. package/esm2015/lib/components/bpmn-js-diagram/bpmn-js-diagram.module.js +1 -1
  11. package/esm2015/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.js +1 -1
  12. package/esm2015/lib/components/breadcrumb-navigation/breadcrumb-navigation.module.js +1 -1
  13. package/esm2015/lib/components/camunda/form/camunda-form.components.js +1 -1
  14. package/esm2015/lib/components/camunda/form/camunda-form.module.js +1 -1
  15. package/esm2015/lib/components/camunda/form/custom/camunda-custom-form.component.js +1 -1
  16. package/esm2015/lib/components/camunda/form/custom/camunda-custom-form.module.js +1 -1
  17. package/esm2015/lib/components/camunda/form/generated/camunda-generated-form.component.js +1 -1
  18. package/esm2015/lib/components/camunda/form/generated/camunda-generated-form.module.js +1 -1
  19. package/esm2015/lib/components/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.js +1 -1
  20. package/esm2015/lib/components/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +1 -1
  21. package/esm2015/lib/components/camunda/form/generated/formfield/camunda-formfield.service.js +1 -1
  22. package/esm2015/lib/components/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.js +1 -1
  23. package/esm2015/lib/components/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +1 -1
  24. package/esm2015/lib/components/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +1 -1
  25. package/esm2015/lib/components/camunda/form/generated/formfield/formfield.model.js +1 -1
  26. package/esm2015/lib/components/camunda/form/generated/formfield/long/camunda-long-formfield.component.js +1 -1
  27. package/esm2015/lib/components/camunda/form/generated/formfield/string/camunda-string-formfield.component.js +1 -1
  28. package/esm2015/lib/components/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.js +1 -1
  29. package/esm2015/lib/components/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +1 -1
  30. package/esm2015/lib/components/camunda/form/generated/formfield/validation/date.validators.js +1 -1
  31. package/esm2015/lib/components/card/card.component.js +1 -1
  32. package/esm2015/lib/components/card/card.module.js +1 -1
  33. package/esm2015/lib/components/components.module.js +1 -1
  34. package/esm2015/lib/components/data-list/data-list.component.js +1 -1
  35. package/esm2015/lib/components/data-list/data-list.module.js +1 -1
  36. package/esm2015/lib/components/dropzone/dropzone.component.js +2 -3
  37. package/esm2015/lib/components/dropzone/dropzone.module.js +1 -1
  38. package/esm2015/lib/components/field-auto-focus/field-auto-focus.directive.js +1 -1
  39. package/esm2015/lib/components/field-auto-focus/field-auto-focus.module.js +1 -1
  40. package/esm2015/lib/components/file-size/file-size.module.js +1 -1
  41. package/esm2015/lib/components/file-size/file-size.pipe.js +1 -1
  42. package/esm2015/lib/components/filter-sidebar/filter-sidebar.component.js +1 -1
  43. package/esm2015/lib/components/filter-sidebar/filter-sidebar.module.js +1 -1
  44. package/esm2015/lib/components/form-io/form-io-builder.component.js +1 -1
  45. package/esm2015/lib/components/form-io/form-io-uploader/form-io-uploader-edit-form.js +1 -1
  46. package/esm2015/lib/components/form-io/form-io-uploader/form-io-uploader.component.js +2 -2
  47. package/esm2015/lib/components/form-io/form-io-uploader/form-io-uploader.formio.js +1 -1
  48. package/esm2015/lib/components/form-io/form-io.component.js +1 -1
  49. package/esm2015/lib/components/form-io/form-io.module.js +1 -1
  50. package/esm2015/lib/components/form-io/formio-config.js +1 -1
  51. package/esm2015/lib/components/form-io/services/form-io-dom.service.js +1 -1
  52. package/esm2015/lib/components/form-io/services/form-io-state.service.js +1 -1
  53. package/esm2015/lib/components/left-sidebar/left-sidebar.component.js +1 -1
  54. package/esm2015/lib/components/left-sidebar/left-sidebar.module.js +1 -1
  55. package/esm2015/lib/components/list/ListFilterPipe.directive.js +1 -1
  56. package/esm2015/lib/components/list/list.component.js +3 -3
  57. package/esm2015/lib/components/list/list.module.js +1 -1
  58. package/esm2015/lib/components/menu/menu-item-text.component.js +1 -1
  59. package/esm2015/lib/components/menu/menu-routing.module.js +1 -1
  60. package/esm2015/lib/components/menu/menu.component.js +1 -1
  61. package/esm2015/lib/components/menu/menu.init.js +1 -1
  62. package/esm2015/lib/components/menu/menu.module.js +1 -1
  63. package/esm2015/lib/components/menu/menu.service.js +1 -1
  64. package/esm2015/lib/components/menu/submenu-item-text.component.js +1 -1
  65. package/esm2015/lib/components/modal/modal.component.js +1 -1
  66. package/esm2015/lib/components/modal/modal.module.js +1 -1
  67. package/esm2015/lib/components/multiselect-dropdown/multiselect-dropdown.component.js +47 -0
  68. package/esm2015/lib/components/multiselect-dropdown/multiselect-dropdown.module.js +30 -0
  69. package/esm2015/lib/components/page-header/page-header.component.js +1 -1
  70. package/esm2015/lib/components/page-header/page-header.module.js +1 -1
  71. package/esm2015/lib/components/page-title/page-title.component.js +1 -1
  72. package/esm2015/lib/components/page-title/page-title.module.js +1 -1
  73. package/esm2015/lib/components/progress-bar/progress-bar.component.js +1 -1
  74. package/esm2015/lib/components/progress-bar/progress-bar.module.js +1 -1
  75. package/esm2015/lib/components/right-sidebar/right-sidebar.component.js +1 -1
  76. package/esm2015/lib/components/right-sidebar/right-sidebar.module.js +1 -1
  77. package/esm2015/lib/components/searchable-dropdown/searchable-dropdown.component.js +1 -1
  78. package/esm2015/lib/components/searchable-dropdown/searchable-dropdown.module.js +1 -1
  79. package/esm2015/lib/components/searchable-dropdown-select/searchable-dropdown-select.component.js +3 -3
  80. package/esm2015/lib/components/searchable-dropdown-select/searchable-dropdown-select.module.js +1 -1
  81. package/esm2015/lib/components/spinner/spinner.component.js +1 -1
  82. package/esm2015/lib/components/spinner/spinner.module.js +1 -1
  83. package/esm2015/lib/components/timeline/timeline.component.js +1 -1
  84. package/esm2015/lib/components/timeline/timeline.module.js +1 -1
  85. package/esm2015/lib/components/topbar/topbar.component.js +3 -3
  86. package/esm2015/lib/components/topbar/topbar.module.js +1 -1
  87. package/esm2015/lib/components/uploader/uploader-drag-drop.directive.js +1 -1
  88. package/esm2015/lib/components/uploader/uploader.component.js +2 -2
  89. package/esm2015/lib/components/uploader/uploader.module.js +1 -1
  90. package/esm2015/lib/components/version/version.service.js +1 -1
  91. package/esm2015/lib/components/view-content/type-converters/booleanTypeConverter.js +1 -1
  92. package/esm2015/lib/components/view-content/type-converters/dateTypeConverter.js +1 -1
  93. package/esm2015/lib/components/view-content/type-converters/enumTypeConverter.js +1 -1
  94. package/esm2015/lib/components/view-content/type-converters/relatedFilesTypeConverter.js +1 -1
  95. package/esm2015/lib/components/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +1 -1
  96. package/esm2015/lib/components/view-content/type-converters/stringTypeConverter.js +1 -1
  97. package/esm2015/lib/components/view-content/type-converters/type-converters.model.js +1 -1
  98. package/esm2015/lib/components/view-content/view-content.service.js +1 -1
  99. package/esm2015/lib/components/webcam/webcam.component.js +3 -3
  100. package/esm2015/lib/components/webcam/webcam.module.js +1 -1
  101. package/esm2015/lib/components/widget/widget.component.js +1 -1
  102. package/esm2015/lib/components/widget/widget.module.js +1 -1
  103. package/esm2015/lib/models/alert.model.js +1 -1
  104. package/esm2015/lib/models/form-io.model.js +1 -1
  105. package/esm2015/lib/models/index.js +1 -1
  106. package/esm2015/lib/models/pagination.model.js +1 -1
  107. package/esm2015/lib/models/searchable-dropdown.model.js +1 -1
  108. package/esm2015/lib/models/timeline.model.js +1 -1
  109. package/esm2015/lib/models/version.model.js +1 -1
  110. package/esm2015/public_api.js +4 -2
  111. package/esm2015/valtimo-components.js +1 -1
  112. package/fesm2015/valtimo-components.js +85 -14
  113. package/fesm2015/valtimo-components.js.map +1 -1
  114. package/lib/components/multiselect-dropdown/multiselect-dropdown.component.d.ts +15 -0
  115. package/lib/components/multiselect-dropdown/multiselect-dropdown.module.d.ts +2 -0
  116. package/package.json +4 -3
  117. package/public_api.d.ts +2 -0
  118. package/valtimo-components.metadata.json +1 -1
@@ -0,0 +1,210 @@
1
+ $base-color: #337ab7;
2
+ $disable-background-color: #eceeef;
3
+ .multiselect-dropdown {
4
+ position: relative;
5
+ width: 100%;
6
+ font-size: inherit;
7
+ font-family: inherit;
8
+ .dropdown-btn {
9
+ display: inline-block;
10
+ border: 1px solid #adadad;
11
+ width: 100%;
12
+ padding: 6px 12px;
13
+ margin-bottom: 0;
14
+ font-weight: normal;
15
+ line-height: 1.52857143;
16
+ text-align: left;
17
+ vertical-align: middle;
18
+ cursor: pointer;
19
+ background-image: none;
20
+ border-radius: 4px;
21
+ .selected-item {
22
+ border: 1px solid $base-color;
23
+ margin-right: 4px;
24
+ background: $base-color;
25
+ padding: 0px 5px;
26
+ color: #fff;
27
+ border-radius: 2px;
28
+ float: left;
29
+ a {
30
+ text-decoration: none;
31
+ }
32
+ }
33
+ .selected-item:hover {
34
+ box-shadow: 1px 1px #959595;
35
+ }
36
+ .dropdown-down {
37
+ display: inline-block;
38
+ top: 10px;
39
+ width: 0;
40
+ height: 0;
41
+ border-top: 10px solid #adadad;
42
+ border-left: 10px solid transparent;
43
+ border-right: 10px solid transparent;
44
+ }
45
+ .dropdown-up {
46
+ display: inline-block;
47
+ width: 0;
48
+ height: 0;
49
+ border-bottom: 10px solid #adadad;
50
+ border-left: 10px solid transparent;
51
+ border-right: 10px solid transparent;
52
+ }
53
+ }
54
+ .disabled {
55
+ & > span {
56
+ background-color: $disable-background-color;
57
+ }
58
+ }
59
+ }
60
+
61
+ .dropdown-list {
62
+ position: absolute;
63
+ padding-top: 6px;
64
+ width: 100%;
65
+ z-index: 9999;
66
+ border: 1px solid #ccc;
67
+ border-radius: 3px;
68
+ background: #fff;
69
+ margin-top: 10px;
70
+ box-shadow: 0px 1px 5px #959595;
71
+ ul {
72
+ padding: 0px;
73
+ list-style: none;
74
+ overflow: auto;
75
+ margin: 0px;
76
+ }
77
+ li {
78
+ padding: 6px 10px;
79
+ cursor: pointer;
80
+ text-align: left;
81
+ }
82
+ .filter-textbox {
83
+ border-bottom: 1px solid #ccc;
84
+ position: relative;
85
+ padding: 10px;
86
+ input {
87
+ border: 0px;
88
+ width: 100%;
89
+ padding: 0px 0px 0px 26px;
90
+ }
91
+ input:focus {
92
+ outline: none;
93
+ }
94
+ }
95
+ }
96
+
97
+ .multiselect-item-checkbox input[type='checkbox'] {
98
+ border: 0;
99
+ clip: rect(0 0 0 0);
100
+ height: 1px;
101
+ margin: -1px;
102
+ overflow: hidden;
103
+ padding: 0;
104
+ position: absolute;
105
+ width: 1px;
106
+ }
107
+
108
+ .multiselect-item-checkbox input[type='checkbox']:focus + div:before,
109
+ .multiselect-item-checkbox input[type='checkbox']:hover + div:before {
110
+ border-color: $base-color;
111
+ background-color: #f2f2f2;
112
+ }
113
+
114
+ .multiselect-item-checkbox input[type='checkbox']:active + div:before {
115
+ transition-duration: 0s;
116
+ }
117
+
118
+ .multiselect-item-checkbox input[type='checkbox'] + div {
119
+ position: relative;
120
+ padding-left: 2em;
121
+ vertical-align: middle;
122
+ user-select: none;
123
+ cursor: pointer;
124
+ margin: 0px;
125
+ color: #000;
126
+ }
127
+
128
+ .multiselect-item-checkbox input[type='checkbox'] + div:before {
129
+ box-sizing: content-box;
130
+ content: '';
131
+ color: $base-color;
132
+ position: absolute;
133
+ top: 50%;
134
+ left: 0;
135
+ width: 14px;
136
+ height: 14px;
137
+ margin-top: -9px;
138
+ border: 2px solid $base-color;
139
+ text-align: center;
140
+ transition: all 0.4s ease;
141
+ }
142
+
143
+ .multiselect-item-checkbox input[type='checkbox'] + div:after {
144
+ box-sizing: content-box;
145
+ content: '';
146
+ background-color: $base-color;
147
+ position: absolute;
148
+ top: 50%;
149
+ left: 4px;
150
+ width: 10px;
151
+ height: 10px;
152
+ margin-top: -5px;
153
+ transform: scale(0);
154
+ transform-origin: 50%;
155
+ transition: transform 200ms ease-out;
156
+ }
157
+
158
+ .multiselect-item-checkbox input[type='checkbox']:disabled + div:before {
159
+ border-color: #cccccc;
160
+ }
161
+
162
+ .multiselect-item-checkbox
163
+ input[type='checkbox']:disabled:focus
164
+ + div:before
165
+ .multiselect-item-checkbox
166
+ input[type='checkbox']:disabled:hover
167
+ + div:before {
168
+ background-color: inherit;
169
+ }
170
+
171
+ .multiselect-item-checkbox
172
+ input[type='checkbox']:disabled:checked
173
+ + div:before {
174
+ background-color: #cccccc;
175
+ }
176
+
177
+ .multiselect-item-checkbox input[type='checkbox'] + div:after {
178
+ background-color: transparent;
179
+ top: 50%;
180
+ left: 4px;
181
+ width: 8px;
182
+ height: 3px;
183
+ margin-top: -4px;
184
+ border-style: solid;
185
+ border-color: #ffffff;
186
+ border-width: 0 0 3px 3px;
187
+ border-image: none;
188
+ transform: rotate(-45deg) scale(0);
189
+ }
190
+
191
+ .multiselect-item-checkbox input[type='checkbox']:checked + div:after {
192
+ content: '';
193
+ transform: rotate(-45deg) scale(1);
194
+ transition: transform 200ms ease-out;
195
+ }
196
+
197
+ .multiselect-item-checkbox input[type='checkbox']:checked + div:before {
198
+ animation: borderscale 200ms ease-in;
199
+ background: $base-color;
200
+ }
201
+
202
+ .multiselect-item-checkbox input[type='checkbox']:checked + div:after {
203
+ transform: rotate(-45deg) scale(1);
204
+ }
205
+
206
+ @keyframes borderscale {
207
+ 50% {
208
+ box-shadow: 0 0 0 2px $base-color;
209
+ }
210
+ }
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('moment'), require('@valtimo/choicefield'), require('@angular/router'), require('ngx-logger'), require('@valtimo/config'), require('rxjs'), require('@valtimo/document'), require('@valtimo/security'), require('@ng-bootstrap/ng-bootstrap'), require('@ngx-translate/core'), require('@angular/common/http'), require('@valtimo/context'), require('rxjs/operators'), require('@angular/platform-browser'), require('bpmn-js/dist/bpmn-navigated-viewer.production.min.js'), require('heatmap.js-fixed/build/heatmap.js'), require('@valtimo/resource'), require('angular-formio'), require('jwt-decode'), require('dropzone'), require('ngx-spinner')) :
3
- typeof define === 'function' && define.amd ? define('@valtimo/components', ['exports', '@angular/core', '@angular/common', '@angular/forms', 'moment', '@valtimo/choicefield', '@angular/router', 'ngx-logger', '@valtimo/config', 'rxjs', '@valtimo/document', '@valtimo/security', '@ng-bootstrap/ng-bootstrap', '@ngx-translate/core', '@angular/common/http', '@valtimo/context', 'rxjs/operators', '@angular/platform-browser', 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js', 'heatmap.js-fixed/build/heatmap.js', '@valtimo/resource', 'angular-formio', 'jwt-decode', 'dropzone', 'ngx-spinner'], factory) :
4
- (global = global || self, factory((global.valtimo = global.valtimo || {}, global.valtimo.components = {}), global.ng.core, global.ng.common, global.ng.forms, global.moment, global.choicefield, global.ng.router, global.ngxLogger, global.config, global.rxjs, global.document, global.security, global.ngBootstrap, global.core$1, global.ng.common.http, global.context, global.rxjs.operators, global.ng.platformBrowser, global.BpmnJS, global.heatmap, global.resource, global.angularFormio, global.jwt_decode, global.Dropzone, global.ngxSpinner));
5
- }(this, (function (exports, i0, common, forms, momentImported, choicefield, i1, i4, i1$1, rxjs, i2, i3, ngBootstrap, core, i1$2, context, operators, platformBrowser, BpmnJS, heatmap, resource, angularFormio, jwt_decode, Dropzone, ngxSpinner) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('moment'), require('@valtimo/choicefield'), require('@angular/router'), require('ngx-logger'), require('@valtimo/config'), require('rxjs'), require('@valtimo/document'), require('@valtimo/security'), require('@ng-bootstrap/ng-bootstrap'), require('@ngx-translate/core'), require('@angular/common/http'), require('@valtimo/context'), require('rxjs/operators'), require('@angular/platform-browser'), require('bpmn-js/dist/bpmn-navigated-viewer.production.min.js'), require('heatmap.js-fixed/build/heatmap.js'), require('@valtimo/resource'), require('angular-formio'), require('jwt-decode'), require('dropzone'), require('ngx-spinner'), require('ng-multiselect-dropdown')) :
3
+ typeof define === 'function' && define.amd ? define('@valtimo/components', ['exports', '@angular/core', '@angular/common', '@angular/forms', 'moment', '@valtimo/choicefield', '@angular/router', 'ngx-logger', '@valtimo/config', 'rxjs', '@valtimo/document', '@valtimo/security', '@ng-bootstrap/ng-bootstrap', '@ngx-translate/core', '@angular/common/http', '@valtimo/context', 'rxjs/operators', '@angular/platform-browser', 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js', 'heatmap.js-fixed/build/heatmap.js', '@valtimo/resource', 'angular-formio', 'jwt-decode', 'dropzone', 'ngx-spinner', 'ng-multiselect-dropdown'], factory) :
4
+ (global = global || self, factory((global.valtimo = global.valtimo || {}, global.valtimo.components = {}), global.ng.core, global.ng.common, global.ng.forms, global.moment, global.choicefield, global.ng.router, global.ngxLogger, global.config, global.rxjs, global.document, global.security, global.ngBootstrap, global.core$1, global.ng.common.http, global.context, global.rxjs.operators, global.ng.platformBrowser, global.BpmnJS, global.heatmap, global.resource, global.angularFormio, global.jwt_decode, global.Dropzone, global.ngxSpinner, global.ngMultiselectDropdown));
5
+ }(this, (function (exports, i0, common, forms, momentImported, choicefield, i1, i4, i1$1, rxjs, i2, i3, ngBootstrap, core, i1$2, context, operators, platformBrowser, BpmnJS, heatmap, resource, angularFormio, jwt_decode, Dropzone, ngxSpinner, ngMultiselectDropdown) { 'use strict';
6
6
 
7
7
  jwt_decode = jwt_decode && Object.prototype.hasOwnProperty.call(jwt_decode, 'default') ? jwt_decode['default'] : jwt_decode;
8
8
 
@@ -908,8 +908,8 @@
908
908
  TopbarComponent.decorators = [
909
909
  { type: i0.Component, args: [{
910
910
  selector: 'valtimo-topbar',
911
- template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<nav class=\"navbar navbar-expand fixed-top be-top-header\">\n <div class=\"container-fluid\">\n <div class=\"be-navbar-header\">\n <a class=\"navbar-brand\" [routerLink]=\"['/']\"></a>\n </div>\n <div class=\"be-right-navbar\">\n <!-- important empty div: in order to made float-right element works on mobile -->\n <div></div>\n <ul class=\"nav navbar-nav be-user-nav float-right be-icons-nav\">\n <li class=\"nav-item dropdown special\">\n <a class=\"nav-link be-toggle-right-sidebar\" href=\"#\" role=\"button\" aria-expanded=\"false\">\n <i class=\"fas fa-user-circle user-icon\"></i>\n </a>\n </li>\n </ul>\n </div>\n </div>\n</nav>\n",
912
- styles: [".user-icon{font-size:30px;padding-top:5px}"]
911
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<nav class=\"navbar navbar-expand fixed-top be-top-header\">\n <div class=\"container-fluid\">\n <div class=\"be-navbar-header\">\n <a class=\"navbar-brand\" [routerLink]=\"['/']\"></a>\n </div>\n <div class=\"be-right-navbar\">\n <!-- important empty div: in order to made float-right element works on mobile -->\n <div></div>\n <ul class=\"nav navbar-nav be-user-nav float-right be-icons-nav\">\n <li class=\"nav-item dropdown special\">\n <a class=\"nav-link be-toggle-right-sidebar\" href=\"#\" role=\"button\" aria-expanded=\"false\">\n <i class=\"mdi mdi-account-circle user-icon\"></i>\n </a>\n </li>\n </ul>\n </div>\n </div>\n</nav>\n",
912
+ styles: [".user-icon{font-size:30px}.be-toggle-right-sidebar{display:flex}"]
913
913
  },] }
914
914
  ];
915
915
  TopbarComponent.ctorParameters = function () { return []; };
@@ -2426,8 +2426,8 @@
2426
2426
  ListComponent.decorators = [
2427
2427
  { type: i0.Component, args: [{
2428
2428
  selector: 'valtimo-list',
2429
- template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div>\n <div *ngIf=\"(items?.length > 0 && fields?.length > 0) || header\">\n <div\n class=\"d-flex align-items-center search-holder bg-light\"\n [ngClass]=\"{'pb-4 pt-4': !header}\"\n *ngIf=\"isSearchable || viewMode || header\"\n >\n <div class=\"align-self-start\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div class=\"ml-auto row\">\n <input\n *ngIf=\"isSearchable\"\n class=\"form-control col-sm-8\"\n type=\"text\"\n placeholder=\"Search...\"\n #searchBox\n />\n\n <div\n class=\"switch-view-holder btn-group col-sm-4 mt-1 mt-sm-0\"\n role=\"group\"\n *ngIf=\"viewMode\"\n >\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'table' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('table')\"\n >\n <i class=\"mdi mdi-view-headline\"></i>\n </button>\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'tile' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('tile')\"\n >\n <i class=\"mdi mdi-view-module\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <div *ngIf=\"items?.length > 0 && fields?.length > 0\">\n <div class=\"table-responsive noSwipe\" *ngIf=\"!viewMode || viewListAs === 'table'\">\n <table class=\"table table-striped table-hover m-0\" *ngIf=\"sort$ | async as sort\">\n <thead>\n <tr>\n <th\n *ngFor=\"let field of fields\"\n (click)=\"handleFieldClick(field.key, field.sortable)\"\n [ngClass]=\"{\n sortable: field.sortable,\n 'is-being-sorted': field.key === sort.state.name && sort.isSorting,\n ascending: sort.state.direction === 'ASC'\n }\"\n >\n {{ field.label }}\n </th>\n <th *ngFor=\"let action of actions\">\n {{ action.columnName }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n [ngClass]=\"{'click-able': this.rowClicked.observers.length > 0}\"\n *ngFor=\"let item of items | listFilter: searchModel\"\n (click)=\"onClickRow(item)\"\n >\n <td class=\"align-top\" *ngFor=\"let listItemField of item.listItemFields\">\n {{ listItemField.value || '-' }}\n </td>\n <td class=\"align-top\" *ngFor=\"let action of actions\">\n <i\n style=\"cursor: pointer\"\n [ngClass]=\"action.iconClass\"\n (click)=\"action.callback(item)\"\n ></i>\n </td>\n </tr>\n <tr>\n <td *ngIf=\"(items | listFilter: searchModel).length === 0\" [colSpan]=\"fields.length\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"container-fluid\" *ngIf=\"viewMode && viewListAs === 'tile'\">\n <div class=\"row p-2\">\n <div\n class=\"col-12 col-sm-6 col-xl-4 p-2\"\n *ngFor=\"let item of items | listFilter: searchModel\"\n (click)=\"onClickRow(item)\"\n >\n <div class=\"click-able tile-holder p-4\">\n <dl class=\"row mb-0\" *ngFor=\"let listItemField of item.listItemFields\">\n <dt class=\"col-12 col-md-5 text-xl-right\">{{ listItemField.label }}</dt>\n <dd class=\"col-12 col-md-7\">{{ listItemField.value || '-' }}</dd>\n </dl>\n </div>\n </div>\n <div class=\"col-12\" *ngIf=\"(items | listFilter: searchModel).length === 0\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"pagination-holder bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && items?.length > 0 && fields?.length > 0\"\n >\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.page, total: getTotalPageCount()}\n }}</strong>\n <br />\n {{\n pagination.collectionSize === 1\n ? ('list.showingResult' | translate: {number: (items | listFilter: searchModel).length})\n : ('list.showingResults'\n | translate\n : {\n number: (items | listFilter: searchModel).length,\n total: pagination.collectionSize\n })\n }}\n </div>\n <div class=\"col-4 text-center\">\n {{ 'list.show' | translate }}\n <select [(ngModel)]=\"pagination.size\" (ngModelChange)=\"setPaginationSize($event)\">\n <option [ngValue]=\"10\">10</option>\n <option [ngValue]=\"25\">25</option>\n <option [ngValue]=\"50\">50</option>\n <option [ngValue]=\"100\">100</option>\n </select>\n {{ 'list.entries' | translate }}\n </div>\n <div class=\"col-4\">\n <ngb-pagination\n *ngIf=\"pagination.collectionSize > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.collectionSize\"\n [(page)]=\"pagination.page\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.maxPaginationItemSize\"\n [rotate]=\"true\"\n (pageChange)=\"onClickPagination(pagination.page)\"\n ></ngb-pagination>\n </div>\n </div>\n\n <div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\">\n {{ 'list.noResults' | translate }}\n </div>\n\n <div id=\"no-field-definitions\" class=\"p-5\" *ngIf=\"items?.length > 0 && fields?.length === 0\">\n {{ 'list.noFieldDefinitions' | translate }}\n </div>\n</div>\n",
2430
- styles: ["@charset \"UTF-8\";\n/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.table{table-layout:fixed}.click-able{cursor:pointer}.pagination-holder{border-top:1px solid #dee2e6}.search-holder{border-bottom:1px solid #dee2e6;height:80px;padding-left:18px;padding-right:18px}.switch-view-holder i{font-size:1.8rem;line-height:1.2rem;margin-top:9px}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}.page-count{margin-bottom:1rem}td:first-child,th:first-child{padding-left:25px}th.sortable{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:pointer;user-select:none}th.sortable:after{content:\" \uF0DD\";font-family:Font Awesome\\ 5 Free;margin:auto 0 auto 5px;opacity:0;position:absolute;transition:all .15s ease}th.sortable.is-being-sorted.ascending:after{transform:rotate(-180deg)}th.sortable:hover:after{opacity:.5}th.sortable.is-being-sorted:after{opacity:1}"]
2429
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div>\n <div *ngIf=\"(items?.length > 0 && fields?.length > 0) || header\">\n <div\n class=\"d-flex align-items-center search-holder bg-light\"\n [ngClass]=\"{'pb-4 pt-4': !header}\"\n *ngIf=\"isSearchable || viewMode || header\"\n >\n <div class=\"align-self-start\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div class=\"ml-auto row\">\n <input\n *ngIf=\"isSearchable\"\n class=\"form-control col-sm-8\"\n type=\"text\"\n placeholder=\"Search...\"\n #searchBox\n />\n\n <div\n class=\"switch-view-holder btn-group col-sm-4 mt-1 mt-sm-0\"\n role=\"group\"\n *ngIf=\"viewMode\"\n >\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'table' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('table')\"\n >\n <i class=\"mdi mdi-view-headline\"></i>\n </button>\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'tile' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('tile')\"\n >\n <i class=\"mdi mdi-view-module\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <div *ngIf=\"items?.length > 0 && fields?.length > 0\">\n <div class=\"table-responsive noSwipe\" *ngIf=\"!viewMode || viewListAs === 'table'\">\n <table class=\"table table-striped table-hover m-0\" *ngIf=\"sort$ | async as sort\">\n <thead>\n <tr>\n <th\n *ngFor=\"let field of fields\"\n (click)=\"handleFieldClick(field.key, field.sortable)\"\n [ngClass]=\"{\n sortable: field.sortable,\n 'is-being-sorted': field.key === sort.state.name && sort.isSorting,\n ascending: sort.state.direction === 'ASC'\n }\"\n >\n {{ field.label }}\n </th>\n <th *ngFor=\"let action of actions\">\n {{ action.columnName }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n [ngClass]=\"{'click-able': this.rowClicked.observers.length > 0}\"\n *ngFor=\"let item of items | listFilter: searchModel\"\n (click)=\"onClickRow(item)\"\n >\n <td class=\"align-top\" *ngFor=\"let listItemField of item.listItemFields\">\n {{ listItemField.value || '-' }}\n </td>\n <td class=\"align-top\" *ngFor=\"let action of actions\">\n <i\n class=\"action-icon\"\n style=\"cursor: pointer\"\n [ngClass]=\"action.iconClass\"\n (click)=\"action.callback(item)\"\n ></i>\n </td>\n </tr>\n <tr>\n <td *ngIf=\"(items | listFilter: searchModel).length === 0\" [colSpan]=\"fields.length\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"container-fluid\" *ngIf=\"viewMode && viewListAs === 'tile'\">\n <div class=\"row p-2\">\n <div\n class=\"col-12 col-sm-6 col-xl-4 p-2\"\n *ngFor=\"let item of items | listFilter: searchModel\"\n (click)=\"onClickRow(item)\"\n >\n <div class=\"click-able tile-holder p-4\">\n <dl class=\"row mb-0\" *ngFor=\"let listItemField of item.listItemFields\">\n <dt class=\"col-12 col-md-5 text-xl-right\">{{ listItemField.label }}</dt>\n <dd class=\"col-12 col-md-7\">{{ listItemField.value || '-' }}</dd>\n </dl>\n </div>\n </div>\n <div class=\"col-12\" *ngIf=\"(items | listFilter: searchModel).length === 0\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"pagination-holder bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && items?.length > 0 && fields?.length > 0\"\n >\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.page, total: getTotalPageCount()}\n }}</strong>\n <br />\n {{\n pagination.collectionSize === 1\n ? ('list.showingResult' | translate: {number: (items | listFilter: searchModel).length})\n : ('list.showingResults'\n | translate\n : {\n number: (items | listFilter: searchModel).length,\n total: pagination.collectionSize\n })\n }}\n </div>\n <div class=\"col-4 text-center\">\n {{ 'list.show' | translate }}\n <select [(ngModel)]=\"pagination.size\" (ngModelChange)=\"setPaginationSize($event)\">\n <option [ngValue]=\"10\">10</option>\n <option [ngValue]=\"25\">25</option>\n <option [ngValue]=\"50\">50</option>\n <option [ngValue]=\"100\">100</option>\n </select>\n {{ 'list.entries' | translate }}\n </div>\n <div class=\"col-4\">\n <ngb-pagination\n *ngIf=\"pagination.collectionSize > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.collectionSize\"\n [(page)]=\"pagination.page\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.maxPaginationItemSize\"\n [rotate]=\"true\"\n (pageChange)=\"onClickPagination(pagination.page)\"\n ></ngb-pagination>\n </div>\n </div>\n\n <div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\">\n {{ 'list.noResults' | translate }}\n </div>\n\n <div id=\"no-field-definitions\" class=\"p-5\" *ngIf=\"items?.length > 0 && fields?.length === 0\">\n {{ 'list.noFieldDefinitions' | translate }}\n </div>\n</div>\n",
2430
+ styles: ["@charset \"UTF-8\";\n/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.table{table-layout:fixed}.click-able{cursor:pointer}.pagination-holder{border-top:1px solid #dee2e6}.search-holder{border-bottom:1px solid #dee2e6;height:80px;padding-left:18px;padding-right:18px}.switch-view-holder i{font-size:1.8rem;line-height:1.2rem;margin-top:9px}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}.page-count{margin-bottom:1rem}td:first-child,th:first-child{padding-left:25px}th.sortable{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:pointer;user-select:none}th.sortable:after{content:\" \uF0DD\";font-family:Font Awesome\\ 5 Free;margin:auto 0 auto 5px;opacity:0;position:absolute;transition:all .15s ease}th.sortable.is-being-sorted.ascending:after{transform:rotate(-180deg)}th.sortable:hover:after{opacity:.5}th.sortable.is-being-sorted:after{opacity:1}.action-icon{font-size:16px}"]
2431
2431
  },] }
2432
2432
  ];
2433
2433
  ListComponent.ctorParameters = function () { return [
@@ -3328,7 +3328,7 @@
3328
3328
  UploaderComponent.decorators = [
3329
3329
  { type: i0.Component, args: [{
3330
3330
  selector: 'valtimo-uploader',
3331
- template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"upload-file-container p-5\"\n (click)=\"fileInput.click()\"\n valtimoUploaderDragDrop\n (fileDropped)=\"onFileFieldChange($event)\"\n>\n <span class=\"align-middle\"><i class=\"fa fa-cloud-upload fa-4x\"></i></span>\n <input hidden type=\"file\" #fileInput (change)=\"onFileFieldChange($event.target.files)\" multiple />\n</div>\n<div *ngIf=\"showFileList\">\n <div class=\"files-list px-3 py-2\" *ngFor=\"let resource of resources\">\n <p class=\"m-0\">\n <strong>{{ resource.name }}</strong\n ><br />\n {{ resource.sizeInBytes | filesize }}\n </p>\n <button class=\"delete-file\" (click)=\"deleteResource(resource)\">\n <i class=\"fa fa-trash text-danger\"></i>\n </button>\n </div>\n</div>\n",
3331
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"upload-file-container p-5\"\n (click)=\"fileInput.click()\"\n valtimoUploaderDragDrop\n (fileDropped)=\"onFileFieldChange($event)\"\n>\n <span class=\"align-middle\"><i class=\"mdi mdi-cloud-upload\"></i></span>\n <input hidden type=\"file\" #fileInput (change)=\"onFileFieldChange($event.target.files)\" multiple />\n</div>\n<div *ngIf=\"showFileList\">\n <div class=\"files-list px-3 py-2\" *ngFor=\"let resource of resources\">\n <p class=\"m-0\">\n <strong>{{ resource.name }}</strong\n ><br />\n {{ resource.sizeInBytes | filesize }}\n </p>\n <button class=\"delete-file\" (click)=\"deleteResource(resource)\">\n <i class=\"icon mdi mdi-delete text-danger\"></i>\n </button>\n </div>\n</div>\n",
3332
3332
  styles: [".upload-file-container{background-color:#fff;background-position:50%;background-repeat:no-repeat;background-size:100px;border:2px dashed #d5d8de;color:#d5d8de;margin:0 0 1rem;text-align:center}.upload-file-container i.mdi-cloud-upload{font-size:5em}.upload-file-container:hover{cursor:pointer;opacity:.8}.files-list{background:#fff;border:1px solid #bdc0c7;display:flex;font-size:1em;justify-content:space-between;margin:1rem auto;padding:5px}.files-list .delete-file{background:transparent;border:none;cursor:pointer}.files-list .delete-file i{font-size:1.5em}"]
3333
3333
  },] }
3334
3334
  ];
@@ -4120,7 +4120,7 @@
4120
4120
  FormIoUploaderComponent.decorators = [
4121
4121
  { type: i0.Component, args: [{
4122
4122
  selector: 'valtimo-formio-uploader',
4123
- template: "<valtimo-dropzone\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"null\"\n [disabled]=\"disabled\"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"hideTitle\"\n [maxFileSize]=\"maxFileSize\"\n [showMaxFileSize]=\"!hideMaxFileSize\"\n [subtitle]=\"subtitle\"\n [title]=\"title\"\n [camera]=\"camera\"\n [uploading]=\"uploading$ | async\"\n></valtimo-dropzone>\n\n<div class=\"file-preview\" *ngFor=\"let resource of _value\">\n <div class=\"file-preview-name\">\n <a href=\"#\" (click)=\"downloadFile(resource)\">\n {{ resource.originalName }}\n </a>\n </div>\n <div class=\"file-preview-size\">\n <span>\n {{ resource.size | filesize }}\n </span>\n </div>\n <div class=\"file-preview-delete\" *ngIf=\"!disabled\">\n <a (click)=\"deleteFile(resource.data.resourceId)\">\n <i class=\"icon fa fa-trash\"></i>\n </a>\n </div>\n</div>\n",
4123
+ template: "<valtimo-dropzone\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"null\"\n [disabled]=\"disabled\"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"hideTitle\"\n [maxFileSize]=\"maxFileSize\"\n [showMaxFileSize]=\"!hideMaxFileSize\"\n [subtitle]=\"subtitle\"\n [title]=\"title\"\n [camera]=\"camera\"\n [uploading]=\"uploading$ | async\"\n></valtimo-dropzone>\n\n<div class=\"file-preview\" *ngFor=\"let resource of _value\">\n <div class=\"file-preview-name\">\n <a href=\"#\" (click)=\"downloadFile(resource)\">\n {{ resource.originalName }}\n </a>\n </div>\n <div class=\"file-preview-size\">\n <span>\n {{ resource.size | filesize }}\n </span>\n </div>\n <div class=\"file-preview-delete\" *ngIf=\"!disabled\">\n <a (click)=\"deleteFile(resource.data.resourceId)\">\n <i class=\"icon mdi mdi-delete\"></i>\n </a>\n </div>\n</div>\n",
4124
4124
  styles: [".progress-bar-container{padding:15px 20px}::ng-deep .formio-component-valtimo-file .btn-secondary,::ng-deep .formio-component-valtimo-file .formio-button-add-another{display:none}::ng-deep .formio-component-valtimo-file td{border:none;padding:0!important}::ng-deep .formio-component-valtimo-file .table{border:none;border-collapse:collapse;margin:10px 0}.dropzone-container{margin-bottom:12px}.file-preview{border:1px solid #dee2e6;display:flex;margin-top:-1px}.file-preview div{padding:12px 10px}.file-preview .file-preview-name{width:65%}.file-preview .file-preview-size{width:35%}.file-preview .icon{color:#a1a1a1;cursor:pointer;font-size:1.3846rem;line-height:18px}.file-preview .icon:hover{color:grey}"]
4125
4125
  },] }
4126
4126
  ];
@@ -4228,7 +4228,6 @@
4228
4228
  this.dropzone.on('error', function (file, message) {
4229
4229
  _this.clearFile();
4230
4230
  _this.error$.next(message.toString());
4231
- _this.fileSelected.emit();
4232
4231
  });
4233
4232
  };
4234
4233
  DropzoneComponent.prototype.clearFile = function () {
@@ -4247,7 +4246,7 @@
4247
4246
  DropzoneComponent.decorators = [
4248
4247
  { type: i0.Component, args: [{
4249
4248
  selector: 'valtimo-dropzone',
4250
- template: "<form #dropzone [ngClass]=\"{disabled: disabled || uploading}\" class=\"dropzone dz-clickable\">\n <div class=\"dz-message\">\n <div class=\"icon\"><span class=\"mdi mdi-cloud-upload\"></span></div>\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n <ng-container *ngIf=\"uploading\">\n <ng-container *ngTemplateOutlet=\"progressBar\"></ng-container>\n </ng-container>\n <div class=\"dropzone-mobile-trigger needsclick\"></div>\n </div>\n <button\n (click)=\"showCamera()\"\n *ngIf=\"camera\"\n type=\"button\"\n class=\"btn btn-primary px-3 webcam-button\"\n >\n <i class=\"fa fa-camera\" aria-hidden=\"true\"></i>\n </button>\n <ng-container *ngIf=\"showingCamera$ | async\">\n <ng-container *ngTemplateOutlet=\"webcam\"></ng-container>\n </ng-container>\n</form>\n\n<ng-template #body>\n <h2 *ngIf=\"!hideTitle\" class=\"mb-4 mt-2\">{{ title || ('dropzone.drop' | translate) }}</h2>\n <span *ngIf=\"subtitle\" class=\"note mb-3\">{{ subtitle }}</span>\n <span *ngIf=\"showMaxFileSize\" class=\"note mb-3 small-font\"\n >{{ 'dropzone.maxFileSize' | translate }}<b>{{ maxFileSize }}mb</b></span\n >\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n</ng-template>\n\n<ng-template #preview>\n <ng-container\n *ngIf=\"{\n errorMessage: errorMessage$ | async,\n externalError: externalError$ | async,\n file: file$ | async\n } as obs\"\n >\n <ng-container *ngIf=\"obs.externalError || obs.errorMessage\">\n <div class=\"alert alert-danger mt-2 mb-0\">\n <div class=\"message\">\n {{ obs.externalError || obs.errorMessage }}\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!hideFilePreview && obs.file && !obs.externalError && !obs.errorMessage\">\n <div class=\"file\">\n <i class=\"icon mdi mdi-file-text mr-2\"></i>\n <span class=\"note\">{{ obs.file.name }}</span>\n <span class=\"note file-size\">- {{ obs.file.size | filesize: 2 }}</span>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #progressBar>\n <div class=\"progress-bar-container\">\n <valtimo-progress-bar></valtimo-progress-bar>\n </div>\n</ng-template>\n\n<ng-template #webcam>\n <valtimo-webcam (imageSaved)=\"webcamImageSaved($event)\"></valtimo-webcam>\n</ng-template>\n",
4249
+ template: "<form #dropzone [ngClass]=\"{disabled: disabled || uploading}\" class=\"dropzone dz-clickable\">\n <div class=\"dz-message\">\n <div class=\"icon\"><span class=\"mdi mdi-cloud-upload\"></span></div>\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n <ng-container *ngIf=\"uploading\">\n <ng-container *ngTemplateOutlet=\"progressBar\"></ng-container>\n </ng-container>\n <div class=\"dropzone-mobile-trigger needsclick\"></div>\n </div>\n <button\n (click)=\"showCamera()\"\n *ngIf=\"camera\"\n type=\"button\"\n class=\"btn btn-primary px-3 webcam-button\"\n >\n <i class=\"icon mdi mdi-camera\" aria-hidden=\"true\"></i>\n </button>\n <ng-container *ngIf=\"showingCamera$ | async\">\n <ng-container *ngTemplateOutlet=\"webcam\"></ng-container>\n </ng-container>\n</form>\n\n<ng-template #body>\n <h2 *ngIf=\"!hideTitle\" class=\"mb-4 mt-2\">{{ title || ('dropzone.drop' | translate) }}</h2>\n <span *ngIf=\"subtitle\" class=\"note mb-3\">{{ subtitle }}</span>\n <span *ngIf=\"showMaxFileSize\" class=\"note mb-3 small-font\"\n >{{ 'dropzone.maxFileSize' | translate }}<b>{{ maxFileSize }}mb</b></span\n >\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n</ng-template>\n\n<ng-template #preview>\n <ng-container\n *ngIf=\"{\n errorMessage: errorMessage$ | async,\n externalError: externalError$ | async,\n file: file$ | async\n } as obs\"\n >\n <ng-container *ngIf=\"obs.externalError || obs.errorMessage\">\n <div class=\"alert alert-danger mt-2 mb-0\">\n <div class=\"message\">\n {{ obs.externalError || obs.errorMessage }}\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!hideFilePreview && obs.file && !obs.externalError && !obs.errorMessage\">\n <div class=\"file\">\n <i class=\"icon mdi mdi-file-text mr-2\"></i>\n <span class=\"note\">{{ obs.file.name }}</span>\n <span class=\"note file-size\">- {{ obs.file.size | filesize: 2 }}</span>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #progressBar>\n <div class=\"progress-bar-container\">\n <valtimo-progress-bar></valtimo-progress-bar>\n </div>\n</ng-template>\n\n<ng-template #webcam>\n <valtimo-webcam (imageSaved)=\"webcamImageSaved($event)\"></valtimo-webcam>\n</ng-template>\n",
4251
4250
  styles: ["form.dropzone{padding:30px 20px}form.dropzone h2{font-size:2rem;text-align:center}form.dropzone.disabled{cursor:default;opacity:.7;pointer-events:none}form.dropzone.preview{border:none;padding:15px 20px}.dz-message{align-items:center;display:flex;flex-direction:column}.dropzone-mobile-trigger{cursor:pointer}.alert-light{align-items:center;display:flex}form.dropzone .mdi{background-color:transparent;border-radius:0;display:inline-block;height:auto;margin-bottom:0;padding:0;width:auto}form.dropzone .message{padding:1.385rem 2.1542rem}.file{align-items:center;display:flex;flex-direction:row;font-size:1.5rem}.small-font{color:#959595;font-size:1rem}.file-size{margin-left:5px}.progress-bar-container{bottom:0;height:auto;position:absolute;width:100%}.webcam-button{position:absolute;right:10px;top:10px}"]
4252
4251
  },] }
4253
4252
  ];
@@ -4422,8 +4421,8 @@
4422
4421
  WebcamComponent.decorators = [
4423
4422
  { type: i0.Component, args: [{
4424
4423
  selector: 'valtimo-webcam',
4425
- template: "<div\n (click)=\"close(false)\"\n *ngIf=\"{picture: picture$ | async, stream: stream$ | async} as obs\"\n [ngClass]=\"{showing: showing$ | async}\"\n class=\"webcam-overlay\"\n>\n <div (click)=\"(false); $event.stopPropagation()\" class=\"inner-container\">\n <div class=\"webcam-container modal-content\">\n <div class=\"video-container\">\n <video autoplay=\"true\" id=\"videoElement\"></video>\n <canvas id=\"canvas\"></canvas>\n <img *ngIf=\"obs.picture?.uri\" [src]=\"obs.picture?.uri\" />\n </div>\n <div class=\"button-container\">\n <div class=\"picture-btn\">\n <button\n (click)=\"captureImage()\"\n [disabled]=\"obs.picture?.file || !obs.stream\"\n class=\"btn btn-primary btn-lg\"\n >\n <i class=\"fa fa-camera\"></i>{{ 'webcam.takePicture' | translate }}\n </button>\n </div>\n <div class=\"new-btn\">\n <button (click)=\"clearImage()\" [disabled]=\"!obs.picture?.file\" class=\"btn btn-primary\">\n <i class=\"fa fa-undo\"></i>{{ 'webcam.redo' | translate }}\n </button>\n </div>\n <div class=\"save-btn\">\n <button (click)=\"close()\" [disabled]=\"!obs.picture?.file\" class=\"btn btn-primary\">\n <i class=\"fa fa-save\"></i>{{ 'webcam.save' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"modal-header\">\n <button (click)=\"close(false)\" aria-label=\"Close\" class=\"close\"><span>\u00D7</span></button>\n </div>\n </div>\n</div>\n",
4426
- styles: [".webcam-overlay{align-items:center;background-color:rgba(0,0,0,.65);display:flex;height:100%;justify-content:center;left:0;opacity:0;position:fixed;top:0;transition:opacity .15s linear;width:100%;z-index:9999}.showing{opacity:1}.webcam-container{padding:20px}.button-container{align-items:center;display:flex;height:30px;justify-content:space-evenly;margin-bottom:10px;margin-top:20px}.button-container i{margin-right:5px}.new-btn,.picture-btn,.save-btn{display:flex;justify-content:center;position:absolute}.new-btn,.save-btn{width:calc(50% - 65px)}.picture-btn{left:0;width:100%}.new-btn{left:0}.save-btn{right:0}.modal-header{color:grey;margin-top:35px;padding:0;position:absolute;right:-18px;top:0}.close{color:grey}.inner-container{position:relative}.video-container{height:495px;overflow:hidden}.video-container img,.video-container video{height:495px;position:absolute;width:660px}.video-container img{-o-object-fit:cover;object-fit:cover}#canvas{display:none}"]
4424
+ template: "<div\n (click)=\"close(false)\"\n *ngIf=\"{picture: picture$ | async, stream: stream$ | async} as obs\"\n [ngClass]=\"{showing: showing$ | async}\"\n class=\"webcam-overlay\"\n>\n <div (click)=\"(false); $event.stopPropagation()\" class=\"inner-container\">\n <div class=\"webcam-container modal-content\">\n <div class=\"video-container\">\n <video autoplay=\"true\" id=\"videoElement\"></video>\n <canvas id=\"canvas\"></canvas>\n <img *ngIf=\"obs.picture?.uri\" [src]=\"obs.picture?.uri\" />\n </div>\n <div class=\"button-container\">\n <div class=\"picture-btn\">\n <button\n (click)=\"captureImage()\"\n [disabled]=\"obs.picture?.file || !obs.stream\"\n class=\"btn btn-primary btn-lg\"\n >\n <i class=\"icon mdi mdi-camera mr-1\"></i>{{ 'webcam.takePicture' | translate }}\n </button>\n </div>\n <div class=\"new-btn\">\n <button (click)=\"clearImage()\" [disabled]=\"!obs.picture?.file\" class=\"btn btn-primary\">\n <i class=\"icon mdi mdi-redo mr-1\"></i>{{ 'webcam.redo' | translate }}\n </button>\n </div>\n <div class=\"save-btn\">\n <button (click)=\"close()\" [disabled]=\"!obs.picture?.file\" class=\"btn btn-primary\">\n <i class=\"icon mdi mdi-save mr-1\"></i>{{ 'webcam.save' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"modal-header\">\n <button (click)=\"close(false)\" aria-label=\"Close\" class=\"close\"><span>\u00D7</span></button>\n </div>\n </div>\n</div>\n",
4425
+ styles: [".webcam-overlay{align-items:center;background-color:rgba(0,0,0,.65);display:flex;height:100%;justify-content:center;left:0;opacity:0;position:fixed;top:0;transition:opacity .15s linear;width:100%;z-index:9999}.showing{opacity:1}.webcam-container{padding:20px}.button-container{align-items:center;display:flex;height:30px;justify-content:space-evenly;margin-bottom:10px;margin-top:20px}.button-container i{margin-right:5px}.new-btn,.picture-btn,.save-btn{display:flex;justify-content:center;position:absolute}.new-btn .icon,.picture-btn .icon,.save-btn .icon{background-color:unset;border-radius:unset;display:inline-block;height:unset;margin-bottom:0;padding:0;width:unset}.new-btn,.save-btn{width:calc(50% - 65px)}.picture-btn{left:0;width:100%}.new-btn{left:0}.save-btn{right:0}.modal-header{color:grey;margin-top:35px;padding:0;position:absolute;right:-18px;top:0}.close{color:grey}.inner-container{position:relative}.video-container{height:495px;overflow:hidden}.video-container img,.video-container video{height:495px;position:absolute;width:660px}.video-container img{-o-object-fit:cover;object-fit:cover}#canvas{display:none}"]
4427
4426
  },] }
4428
4427
  ];
4429
4428
  WebcamComponent.propDecorators = {
@@ -5029,8 +5028,8 @@
5029
5028
  SearchableDropdownSelectComponent.decorators = [
5030
5029
  { type: i0.Component, args: [{
5031
5030
  selector: 'valtimo-searchable-dropdown-select',
5032
- template: "<valtimo-searchable-dropdown\n *ngIf=\"!hasSelection; else selection\"\n [style]=\"style\"\n [items]=\"items\"\n [buttonText]=\"buttonText\"\n [searchText]=\"searchText\"\n [noResultsText]=\"noResultsText\"\n [disabled]=\"disabled\"\n [width]=\"width\"\n (itemSelected)=\"onSelect($event)\"\n>\n</valtimo-searchable-dropdown>\n\n<ng-template #selection>\n <div\n class=\"d-flex flex-row align-items-center\"\n [style.height.px]=\"style === 'button' ? 34 : null\"\n >\n <h5 class=\"selected-text\">\n {{ selectedText }} <b>{{ selectedTextValue }}</b>\n </h5>\n <button\n type=\"button\"\n class=\"close p-0 m-0 ml-2 d-flex text-danger\"\n aria-label=\"Close\"\n (click)=\"onClearSelection()\"\n [title]=\"clearSelectionButtonTitle\"\n >\n <i class=\"clear-icon fa fa-times text-danger\"></i>\n </button>\n </div>\n</ng-template>\n",
5033
- styles: [".selected-text{margin:0}.clear-icon{font-size:13px}"]
5031
+ template: "<valtimo-searchable-dropdown\n *ngIf=\"!hasSelection; else selection\"\n [style]=\"style\"\n [items]=\"items\"\n [buttonText]=\"buttonText\"\n [searchText]=\"searchText\"\n [noResultsText]=\"noResultsText\"\n [disabled]=\"disabled\"\n [width]=\"width\"\n (itemSelected)=\"onSelect($event)\"\n>\n</valtimo-searchable-dropdown>\n\n<ng-template #selection>\n <div\n class=\"d-flex flex-row align-items-center\"\n [style.height.px]=\"style === 'button' ? 34 : null\"\n >\n <h5 class=\"selected-text\">\n {{ selectedText }} <b>{{ selectedTextValue }}</b>\n </h5>\n <button\n type=\"button\"\n class=\"close p-0 m-0 ml-2 d-flex text-danger\"\n aria-label=\"Close\"\n (click)=\"onClearSelection()\"\n [title]=\"clearSelectionButtonTitle\"\n >\n <i class=\"clear-icon mdi mdi-close text-danger\"></i>\n </button>\n </div>\n</ng-template>\n",
5032
+ styles: [".selected-text{margin:0}.clear-icon{font-size:16px}"]
5034
5033
  },] }
5035
5034
  ];
5036
5035
  SearchableDropdownSelectComponent.propDecorators = {
@@ -5078,7 +5077,82 @@
5078
5077
  ];
5079
5078
 
5080
5079
  /*
5081
- * Copyright 2015-2020 Ritense BV, the Netherlands.
5080
+ * Copyright 2015-2022 Ritense BV, the Netherlands.
5081
+ *
5082
+ * Licensed under EUPL, Version 1.2 (the "License");
5083
+ * you may not use this file except in compliance with the License.
5084
+ * You may obtain a copy of the License at
5085
+ *
5086
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
5087
+ *
5088
+ * Unless required by applicable law or agreed to in writing, software
5089
+ * distributed under the License is distributed on an "AS IS" basis,
5090
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5091
+ * See the License for the specific language governing permissions and
5092
+ * limitations under the License.
5093
+ */
5094
+ var MultiselectDropdownComponent = /** @class */ (function () {
5095
+ function MultiselectDropdownComponent() {
5096
+ this.items = [];
5097
+ this.dropdownSettings = {
5098
+ singleSelection: false,
5099
+ selectAllText: 'Select All',
5100
+ unSelectAllText: 'UnSelect All',
5101
+ itemsShowLimit: 3,
5102
+ allowSearchFilter: true,
5103
+ };
5104
+ this.itemsSelected = new i0.EventEmitter();
5105
+ }
5106
+ MultiselectDropdownComponent.prototype.onItemsSelected = function () {
5107
+ this.itemsSelected.emit(this.selectedItems);
5108
+ };
5109
+ return MultiselectDropdownComponent;
5110
+ }());
5111
+ MultiselectDropdownComponent.decorators = [
5112
+ { type: i0.Component, args: [{
5113
+ selector: 'valtimo-multiselect-dropdown',
5114
+ template: "<!--\n ~ Copyright 2015-2022 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-multiselect-dropdown\n [placeholder]=\"placeHolder\"\n [data]=\"items\"\n [(ngModel)]=\"selectedItems\"\n [settings]=\"dropdownSettings\"\n (onDropDownClose)=\"onItemsSelected()\"\n></ng-multiselect-dropdown>\n",
5115
+ styles: [""]
5116
+ },] }
5117
+ ];
5118
+ MultiselectDropdownComponent.propDecorators = {
5119
+ selectedItems: [{ type: i0.Input }],
5120
+ items: [{ type: i0.Input }],
5121
+ placeHolder: [{ type: i0.Input }],
5122
+ dropdownSettings: [{ type: i0.Input }],
5123
+ itemsSelected: [{ type: i0.Output }]
5124
+ };
5125
+
5126
+ /*
5127
+ * Copyright 2015-2022 Ritense BV, the Netherlands.
5128
+ *
5129
+ * Licensed under EUPL, Version 1.2 (the "License");
5130
+ * you may not use this file except in compliance with the License.
5131
+ * You may obtain a copy of the License at
5132
+ *
5133
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
5134
+ *
5135
+ * Unless required by applicable law or agreed to in writing, software
5136
+ * distributed under the License is distributed on an "AS IS" basis,
5137
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5138
+ * See the License for the specific language governing permissions and
5139
+ * limitations under the License.
5140
+ */
5141
+ var MultiselectDropdownModule = /** @class */ (function () {
5142
+ function MultiselectDropdownModule() {
5143
+ }
5144
+ return MultiselectDropdownModule;
5145
+ }());
5146
+ MultiselectDropdownModule.decorators = [
5147
+ { type: i0.NgModule, args: [{
5148
+ declarations: [MultiselectDropdownComponent],
5149
+ imports: [common.CommonModule, forms.ReactiveFormsModule, ngMultiselectDropdown.NgMultiSelectDropDownModule, forms.FormsModule],
5150
+ exports: [MultiselectDropdownComponent],
5151
+ },] }
5152
+ ];
5153
+
5154
+ /*
5155
+ * Copyright 2015-2022 Ritense BV, the Netherlands.
5082
5156
  *
5083
5157
  * Licensed under EUPL, Version 1.2 (the "License");
5084
5158
  * you may not use this file except in compliance with the License.
@@ -5136,6 +5210,8 @@
5136
5210
  exports.MenuService = MenuService;
5137
5211
  exports.ModalComponent = ModalComponent;
5138
5212
  exports.ModalModule = ModalModule;
5213
+ exports.MultiselectDropdownComponent = MultiselectDropdownComponent;
5214
+ exports.MultiselectDropdownModule = MultiselectDropdownModule;
5139
5215
  exports.PageHeaderComponent = PageHeaderComponent;
5140
5216
  exports.PageHeaderModule = PageHeaderModule;
5141
5217
  exports.PageTitleComponent = PageTitleComponent;