@3kles/kles-material-dynamicforms 18.0.4 → 18.1.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.
@@ -0,0 +1,5 @@
1
+ export function isDestroyable(value) {
2
+ return value !== null && typeof value === 'object' &&
3
+ typeof value.destroy === 'function';
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveWFibGUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy9zcmMvbGliL3V0aWxzL2Rlc3Ryb3lhYmxlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYztJQUN4QyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUM5QyxPQUFRLEtBQXFCLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEZXN0cm95YWJsZSB7XG4gICAgZGVzdHJveSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZXN0cm95YWJsZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIERlc3Ryb3lhYmxlIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB0eXBlb2YgKHZhbHVlIGFzIERlc3Ryb3lhYmxlKS5kZXN0cm95ID09PSAnZnVuY3Rpb24nO1xufSJdfQ==
@@ -12,6 +12,7 @@ export * from './lib/forms/button-control-base';
12
12
  export * from './lib/forms/button-control.component';
13
13
  export * from './lib/forms/buttonchecker-control.component';
14
14
  export * from './lib/forms/buttonfile-control.component';
15
+ export * from './lib/forms/file-control.component';
15
16
  export * from './lib/forms/fab-control.component';
16
17
  export * from './lib/forms/mini-fab-control.component';
17
18
  export * from './lib/forms/icon-button-control.component';
@@ -28,6 +29,7 @@ export * from './lib/fields/date.component';
28
29
  export * from './lib/fields/field.abstract';
29
30
  export * from './lib/fields/input.component';
30
31
  export * from './lib/fields/input.clearable.component';
32
+ export * from './lib/fields/file.component';
31
33
  export * from './lib/fields/label.component';
32
34
  export * from './lib/fields/list-field.component';
33
35
  export * from './lib/fields/radio.component';
@@ -85,4 +87,6 @@ export * from './lib/controls/range.control';
85
87
  export * from './lib/controls/control.abstract';
86
88
  /**SELECTION */
87
89
  export * from './lib/selection/selection-model';
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxlQUFlO0FBQ2YsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxTQUFTO0FBQ1QsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELFlBQVk7QUFDWixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxXQUFXO0FBQ1gsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGdCQUFnQjtBQUNoQixjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxhQUFhO0FBQ2IsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxnQkFBZ0I7QUFDaEIsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxVQUFVO0FBQ1YsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxXQUFXO0FBQ1gsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLGdCQUFnQjtBQUNoQixjQUFjLHNDQUFzQyxDQUFDO0FBRXJELGVBQWU7QUFDZixjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWM7QUFDZCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxlQUFlO0FBQ2YsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Yga2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy5tb2R1bGUnO1xuXG4vKipESVJFQ1RJVkUgKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9keW5hbWljLWZpZWxkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvZHluYW1pYy1jb21wb25lbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9tYXQtZXJyb3ItbWVzc2FnZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL21hdC1lcnJvci1mb3JtLmRpcmVjdGl2ZSc7XG5cbi8qRk9STVMqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvYnV0dG9uLWNvbnRyb2wtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9idXR0b24tY29udHJvbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvYnV0dG9uY2hlY2tlci1jb250cm9sLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9idXR0b25maWxlLWNvbnRyb2wuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zL2ZhYi1jb250cm9sLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9taW5pLWZhYi1jb250cm9sLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9pY29uLWJ1dHRvbi1jb250cm9sLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9pbmRldGVybWluYXRlLWNoZWNrYm94JztcblxuLyoqRklFTERTICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvYmFkZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9idXR0b24tZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2J1dHRvbmNoZWNrZXItZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2J1dHRvbmZpbGUtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2NoZWNrYm94LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2NvbG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvZGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2ZpZWxkLmFic3RyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2lucHV0LmNsZWFyYWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2xhYmVsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvbGlzdC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL3JhZGlvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvdGV4dGFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy90ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvY2hpcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2dyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL3NlbGVjdC5zZWFyY2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9saW5lLWJyZWFrLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvbGluay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL3NsaWRlLXRvZ2dsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL3NlbGVjdGlvbi1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvYnV0dG9uLXRvb2dsZS1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2FycmF5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvcmFuZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9jbGVhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL3NlbGVjdC5sYXp5LXNlYXJjaC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2RhdGUtdGltZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2J1dHRvbi1mYWIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9idXR0b24tbWluaS1mYWIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9idXR0b24taWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL3NlbGVjdGlvbi1saXN0LnNlYXJjaC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2NvcHkuY29tcG9uZW50JztcblxuLyoqRU5VTVMgKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2VudW1zL3R5cGUuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnVtcy9idXR0b24tYXR0cmlidXRlLmVudW0nO1xuXG4vKipJTlRFUkZBQ0VTICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL2NvbXBvbmVudC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9maWVsZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9maWVsZC5jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvdmFsaWRhdG9yLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL2RpcmVjdGl2ZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9jbGVhci1jb250cm9sLmludGVyZmFjZSc7XG5cbi8qKk1BVENIRVIgKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL21hdGNoZXIvZm9ybS1lcnJvci5tYXRjaGVyJztcblxuLyoqVkFMSURBVE9SUyAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmFsaWRhdG9ycy9hdXRvY29tcGxldGUudmFsaWRhdG9yJztcblxuLyoqRk9STSAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XG5cbi8qKlBJUEVTICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlL2FycmF5LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZS90cmFuc2Zvcm0ucGlwZSc7XG5cbi8qKkRFQ09SQVRPUlMgKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2RlY29yYXRvcnMvY29tcG9uZW50LmRlY29yYXRvcic7XG5cbi8qKkZBQ1RPUklFUyAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmFjdG9yaWVzL2ZpZWxkLmZhY3RvcnknO1xuXG4vKipDT05UUk9MUyAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvYXJyYXkuY29udHJvbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9jb250cm9sLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9kZWZhdWx0LmNvbnRyb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvZ3JvdXAuY29udHJvbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9yYW5nZS5jb250cm9sJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL2NvbnRyb2wuYWJzdHJhY3QnO1xuXG4vKipTRUxFQ1RJT04gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwnO1xuXG4iXX0=
90
+ /**UTILS */
91
+ export * from './lib/utils/destroyable.guard';
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxlQUFlO0FBQ2YsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxTQUFTO0FBQ1QsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsWUFBWTtBQUNaLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsNkJBQTZCLENBQUM7QUFFNUMsV0FBVztBQUNYLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxnQkFBZ0I7QUFDaEIsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMENBQTBDLENBQUM7QUFFekQsYUFBYTtBQUNiLGNBQWMsa0NBQWtDLENBQUM7QUFFakQsZ0JBQWdCO0FBQ2hCLGNBQWMseUNBQXlDLENBQUM7QUFFeEQsVUFBVTtBQUNWLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsV0FBVztBQUNYLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxnQkFBZ0I7QUFDaEIsY0FBYyxzQ0FBc0MsQ0FBQztBQUVyRCxlQUFlO0FBQ2YsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjO0FBQ2QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsZUFBZTtBQUNmLGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsV0FBVztBQUNYLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGtsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMubW9kdWxlJztcblxuLyoqRElSRUNUSVZFICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvZHluYW1pYy1maWVsZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL2R5bmFtaWMtY29tcG9uZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvbWF0LWVycm9yLW1lc3NhZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9tYXQtZXJyb3ItZm9ybS5kaXJlY3RpdmUnO1xuXG4vKkZPUk1TKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zL2J1dHRvbi1jb250cm9sLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvYnV0dG9uLWNvbnRyb2wuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zL2J1dHRvbmNoZWNrZXItY29udHJvbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvYnV0dG9uZmlsZS1jb250cm9sLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9maWxlLWNvbnRyb2wuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zL2ZhYi1jb250cm9sLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9taW5pLWZhYi1jb250cm9sLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9pY29uLWJ1dHRvbi1jb250cm9sLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9pbmRldGVybWluYXRlLWNoZWNrYm94JztcblxuLyoqRklFTERTICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvYmFkZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9idXR0b24tZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2J1dHRvbmNoZWNrZXItZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2J1dHRvbmZpbGUtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2NoZWNrYm94LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2NvbG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvZGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2ZpZWxkLmFic3RyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2lucHV0LmNsZWFyYWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2ZpbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9sYWJlbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2xpc3QtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9yYWRpby5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL3NlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL3RleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2NoaXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9zZWxlY3Quc2VhcmNoLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvbGluZS1icmVhay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2xpbmsuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9zbGlkZS10b2dnbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9zZWxlY3Rpb24tbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL2J1dHRvbi10b29nbGUtZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9hcnJheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGRzL3JhbmdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvY2xlYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9zZWxlY3QubGF6eS1zZWFyY2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9kYXRlLXRpbWUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9idXR0b24tZmFiLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvYnV0dG9uLW1pbmktZmFiLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZHMvYnV0dG9uLWljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9zZWxlY3Rpb24tbGlzdC5zZWFyY2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkcy9jb3B5LmNvbXBvbmVudCc7XG5cbi8qKkVOVU1TICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnVtcy90eXBlLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW51bXMvYnV0dG9uLWF0dHJpYnV0ZS5lbnVtJztcblxuLyoqSU5URVJGQUNFUyAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9jb21wb25lbnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvZmllbGQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvZmllbGQuY29uZmlnLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL3ZhbGlkYXRvci5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9kaXJlY3RpdmUuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvY2xlYXItY29udHJvbC5pbnRlcmZhY2UnO1xuXG4vKipNQVRDSEVSICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXRjaGVyL2Zvcm0tZXJyb3IubWF0Y2hlcic7XG5cbi8qKlZBTElEQVRPUlMgKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRvcnMvYXV0b2NvbXBsZXRlLnZhbGlkYXRvcic7XG5cbi8qKkZPUk0gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2R5bmFtaWMtZm9ybS5jb21wb25lbnQnO1xuXG4vKipQSVBFUyAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZS9hcnJheS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGUvdHJhbnNmb3JtLnBpcGUnO1xuXG4vKipERUNPUkFUT1JTICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZWNvcmF0b3JzL2NvbXBvbmVudC5kZWNvcmF0b3InO1xuXG4vKipGQUNUT1JJRVMgKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZhY3Rvcmllcy9maWVsZC5mYWN0b3J5JztcblxuLyoqQ09OVFJPTFMgKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL2FycmF5LmNvbnRyb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvY29udHJvbC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvZGVmYXVsdC5jb250cm9sJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL2dyb3VwLmNvbnRyb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvcmFuZ2UuY29udHJvbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9jb250cm9sLmFic3RyYWN0JztcblxuLyoqU0VMRUNUSU9OICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3Rpb24vc2VsZWN0aW9uLW1vZGVsJztcblxuLyoqVVRJTFMgKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2Rlc3Ryb3lhYmxlLmd1YXJkJztcbiJdfQ==
@@ -65,6 +65,7 @@ import { MatButtonToggleModule } from '@angular/material/button-toggle';
65
65
  import { PortalModule } from '@angular/cdk/portal';
66
66
  import { __decorate } from 'tslib';
67
67
  import { v4 } from 'uuid';
68
+ import { cloneDeep } from 'lodash';
68
69
  import * as i5$2 from '@angular/cdk/text-field';
69
70
  import * as i10 from 'ngx-mat-select-search';
70
71
  import { NgxMatSelectSearchModule } from 'ngx-mat-select-search';
@@ -153,6 +154,7 @@ var EnumType;
153
154
  EnumType["input"] = "input";
154
155
  EnumType["select"] = "select";
155
156
  EnumType["text"] = "text";
157
+ EnumType["file"] = "file";
156
158
  EnumType["button"] = "button";
157
159
  EnumType["checkbox"] = "checkbox";
158
160
  EnumType["number"] = "number";
@@ -199,6 +201,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
199
201
  }]
200
202
  }] });
201
203
 
204
+ function isDestroyable(value) {
205
+ return value !== null && typeof value === 'object' &&
206
+ typeof value.destroy === 'function';
207
+ }
208
+
202
209
  class KlesDynamicFieldDirective {
203
210
  constructor(container, injector) {
204
211
  this.container = container;
@@ -229,29 +236,37 @@ class KlesDynamicFieldDirective {
229
236
  this.componentRef.destroy();
230
237
  }
231
238
  const options = {
232
- providers: this.field.dateOptions ? [
233
- ...(this.field.dateOptions.adapter ? [{
234
- provide: DateAdapter,
235
- useClass: this.field.dateOptions.adapter.class,
236
- deps: this.field.dateOptions.adapter.deps || [],
237
- }] : []),
238
- { provide: MAT_DATE_LOCALE, useValue: this.field.dateOptions.language },
239
- { provide: MAT_DATE_FORMATS, useValue: this.field.dateOptions.dateFormat },
240
- ] : [],
239
+ providers: [
240
+ ...(this.field.providers || []),
241
+ ...(this.field.dateOptions ? [
242
+ ...(this.field.dateOptions.adapter ? [{
243
+ provide: DateAdapter,
244
+ useClass: this.field.dateOptions.adapter.class,
245
+ deps: this.field.dateOptions.adapter.deps || [],
246
+ }] : []),
247
+ { provide: MAT_DATE_LOCALE, useValue: this.field.dateOptions.language },
248
+ { provide: MAT_DATE_FORMATS, useValue: this.field.dateOptions.dateFormat },
249
+ ] : [])
250
+ ],
241
251
  parent: this.injector
242
252
  };
243
253
  const injector = Injector.create(options);
244
254
  if (this.field.clearable) {
245
- const composant = this.createSubComponent(this.field.clearableComponent || KlesFormClearComponent);
255
+ const composant = this.createSubComponent(this.field.clearableComponent || KlesFormClearComponent, options);
246
256
  this.subComponents.push(composant);
247
257
  }
248
258
  if (this.field.subComponents) {
249
- this.subComponents.push(...this.field.subComponents.map((subComponent) => this.createSubComponent(subComponent)));
259
+ this.subComponents.push(...this.field.subComponents.map((subComponent) => this.createSubComponent(subComponent, options)));
250
260
  }
251
261
  this.componentRef = this.createComponentRef(injector);
252
262
  this.componentRef.instance.field = this.field;
253
263
  this.componentRef.instance.group = this.group;
254
264
  this.componentRef.instance.siblingFields = this.siblingFields;
265
+ this.componentRef.onDestroy(() => {
266
+ if (isDestroyable(injector)) {
267
+ injector.destroy();
268
+ }
269
+ });
255
270
  }
256
271
  createComponentRef(injector) {
257
272
  const componentRef = this.container.createComponent(componentMapper.find(element => element.type === this.field.type)?.component || this.field.component, { injector, projectableNodes: [this.subComponents.map(sub => sub.location.nativeElement)] });
@@ -265,11 +280,17 @@ class KlesDynamicFieldDirective {
265
280
  }
266
281
  return componentRef;
267
282
  }
268
- createSubComponent(componentType) {
269
- const component = this.container.createComponent(componentType);
283
+ createSubComponent(componentType, options) {
284
+ const injector = Injector.create(options);
285
+ const component = this.container.createComponent(componentType, { injector });
270
286
  component.instance.field = this.field;
271
287
  component.instance.group = this.group;
272
288
  component.instance.siblingFields = this.siblingFields;
289
+ component.onDestroy(() => {
290
+ if (isDestroyable(injector)) {
291
+ injector.destroy();
292
+ }
293
+ });
273
294
  return component;
274
295
  }
275
296
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KlesDynamicFieldDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -1772,9 +1793,13 @@ let KlesFormListFieldComponent = class KlesFormListFieldComponent extends KlesFi
1772
1793
  super(viewRef);
1773
1794
  this.fb = fb;
1774
1795
  this.viewRef = viewRef;
1796
+ this.collections = [];
1775
1797
  }
1776
1798
  ngOnInit() {
1777
1799
  this.formArray = this.group.controls[this.field.name];
1800
+ this.collections = this.formArray?.controls?.map(() => {
1801
+ return this.field.collections ? cloneDeep(this.field.collections) : [];
1802
+ });
1778
1803
  super.ngOnInit();
1779
1804
  }
1780
1805
  createFormGroup() {
@@ -1786,9 +1811,11 @@ let KlesFormListFieldComponent = class KlesFormListFieldComponent extends KlesFi
1786
1811
  return group;
1787
1812
  }
1788
1813
  deleteField(index) {
1814
+ this.collections.splice(index, 1);
1789
1815
  this.formArray.removeAt(index);
1790
1816
  }
1791
1817
  addField() {
1818
+ this.collections.push(this.field.collections ? cloneDeep(this.field.collections) : []);
1792
1819
  this.formArray.push(this.createFormGroup());
1793
1820
  }
1794
1821
  bindValidations(validations) {
@@ -1825,14 +1852,14 @@ let KlesFormListFieldComponent = class KlesFormListFieldComponent extends KlesFi
1825
1852
  </div>
1826
1853
 
1827
1854
  <div class="dynamic-form" [formGroupName]="field.name">
1828
- @for (subGroup of formArray.controls; track subGroup.value._id) {
1855
+ @for (subGroup of formArray.controls; track subGroup.value._id; let idx = $index;) {
1829
1856
  <div class="subfields">
1830
- @for (subfield of field.collections; track subfield.name) {
1831
- <ng-container klesDynamicField [field]="subfield" [group]="subGroup">
1857
+ @for (subfield of collections[idx]; track subfield.name) {
1858
+ <ng-container klesDynamicField [field]="subfield" [group]="subGroup" [siblingFields]="collections[idx]">
1832
1859
  </ng-container>
1833
1860
  }
1834
- @if(field.collections){
1835
- <button mat-icon-button (click)="deleteField($index)" color="primary">
1861
+ @if(collections[idx]){
1862
+ <button mat-icon-button (click)="deleteField(idx)" color="primary">
1836
1863
  <mat-icon>delete_outlined</mat-icon>
1837
1864
  </button>
1838
1865
  }
@@ -1871,14 +1898,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1871
1898
  </div>
1872
1899
 
1873
1900
  <div class="dynamic-form" [formGroupName]="field.name">
1874
- @for (subGroup of formArray.controls; track subGroup.value._id) {
1901
+ @for (subGroup of formArray.controls; track subGroup.value._id; let idx = $index;) {
1875
1902
  <div class="subfields">
1876
- @for (subfield of field.collections; track subfield.name) {
1877
- <ng-container klesDynamicField [field]="subfield" [group]="subGroup">
1903
+ @for (subfield of collections[idx]; track subfield.name) {
1904
+ <ng-container klesDynamicField [field]="subfield" [group]="subGroup" [siblingFields]="collections[idx]">
1878
1905
  </ng-container>
1879
1906
  }
1880
- @if(field.collections){
1881
- <button mat-icon-button (click)="deleteField($index)" color="primary">
1907
+ @if(collections[idx]){
1908
+ <button mat-icon-button (click)="deleteField(idx)" color="primary">
1882
1909
  <mat-icon>delete_outlined</mat-icon>
1883
1910
  </button>
1884
1911
  }
@@ -2605,25 +2632,28 @@ let KlesFormTextComponent = class KlesFormTextComponent extends KlesFieldAbstrac
2605
2632
  super.ngOnDestroy();
2606
2633
  }
2607
2634
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KlesFormTextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2608
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: KlesFormTextComponent, selector: "kles-form-text", usesInheritance: true, ngImport: i0, template: `
2609
- <span matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [ngStyle]="field.ngStyle">
2610
- {{((field.property && group.controls[field.name].value) ? group.controls[field.name].value[field.property] : group.controls[field.name].value) | klesTransform:field.pipeTransform}}
2611
- </span>
2612
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: KlesTransformPipe, name: "klesTransform" }] }); }
2635
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: KlesFormTextComponent, selector: "kles-form-text", usesInheritance: true, ngImport: i0, template: `
2636
+ <span matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [ngStyle]="field.ngStyle">
2637
+ {{((field.property && group.controls[field.name].value) ? group.controls[field.name].value[field.property] : group.controls[field.name].value) | klesTransform:field.pipeTransform}}
2638
+ </span>
2639
+ @if (field.subComponents || isPending()) {
2640
+ <ng-content></ng-content>
2641
+ }
2642
+ `, isInline: true, styles: [":host{display:flex;align-items:center;flex-direction:row;justify-content:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: KlesTransformPipe, name: "klesTransform" }] }); }
2613
2643
  };
2614
2644
  KlesFormTextComponent = __decorate([
2615
2645
  FieldMapper({ type: EnumType.text })
2616
2646
  ], KlesFormTextComponent);
2617
2647
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KlesFormTextComponent, decorators: [{
2618
2648
  type: Component,
2619
- args: [{
2620
- selector: 'kles-form-text',
2621
- template: `
2622
- <span matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [ngStyle]="field.ngStyle">
2623
- {{((field.property && group.controls[field.name].value) ? group.controls[field.name].value[field.property] : group.controls[field.name].value) | klesTransform:field.pipeTransform}}
2624
- </span>
2625
- `
2626
- }]
2649
+ args: [{ selector: 'kles-form-text', template: `
2650
+ <span matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [ngStyle]="field.ngStyle">
2651
+ {{((field.property && group.controls[field.name].value) ? group.controls[field.name].value[field.property] : group.controls[field.name].value) | klesTransform:field.pipeTransform}}
2652
+ </span>
2653
+ @if (field.subComponents || isPending()) {
2654
+ <ng-content></ng-content>
2655
+ }
2656
+ `, styles: [":host{display:flex;align-items:center;flex-direction:row;justify-content:inherit}\n"] }]
2627
2657
  }] });
2628
2658
 
2629
2659
  class KlesFormChipComponent extends KlesFieldAbstract {
@@ -4977,12 +5007,115 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
4977
5007
  args: ["tooltip"]
4978
5008
  }] } });
4979
5009
 
5010
+ class KlesFileControlComponent {
5011
+ constructor() {
5012
+ this.disabled = false;
5013
+ this.accept = '*.*';
5014
+ this.multiple = false;
5015
+ this.onChange = () => { };
5016
+ this.onTouched = () => { };
5017
+ }
5018
+ writeValue(obj) {
5019
+ }
5020
+ async onFileSelected(input) {
5021
+ if (input.files.length > 0) {
5022
+ const file = input.files;
5023
+ let files = [];
5024
+ for (let i = 0; i < file.length; i++) {
5025
+ const currentFile = file.item(i);
5026
+ files[i] = { name: currentFile.name, content: await currentFile.arrayBuffer() };
5027
+ }
5028
+ this.value = files;
5029
+ this.onChange(this.value);
5030
+ }
5031
+ else {
5032
+ this.value = null;
5033
+ this.onChange(this.value);
5034
+ }
5035
+ }
5036
+ registerOnChange(fn) {
5037
+ this.onChange = fn;
5038
+ }
5039
+ registerOnTouched(fn) {
5040
+ this.onTouched = fn;
5041
+ }
5042
+ setDisabledState(isDisabled) {
5043
+ this.disabled = isDisabled;
5044
+ }
5045
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KlesFileControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5046
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: KlesFileControlComponent, selector: "kles-file-control", inputs: { disabled: "disabled", accept: "accept", multiple: "multiple" }, providers: [
5047
+ {
5048
+ provide: NG_VALUE_ACCESSOR,
5049
+ useExisting: forwardRef(() => KlesFileControlComponent),
5050
+ multi: true
5051
+ }
5052
+ ], ngImport: i0, template: `
5053
+ <input [accept]="accept" [multiple]="multiple" (change)="onFileSelected($event.target)" type="file">
5054
+ `, isInline: true }); }
5055
+ }
5056
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KlesFileControlComponent, decorators: [{
5057
+ type: Component,
5058
+ args: [{
5059
+ selector: 'kles-file-control',
5060
+ template: `
5061
+ <input [accept]="accept" [multiple]="multiple" (change)="onFileSelected($event.target)" type="file">
5062
+ `,
5063
+ providers: [
5064
+ {
5065
+ provide: NG_VALUE_ACCESSOR,
5066
+ useExisting: forwardRef(() => KlesFileControlComponent),
5067
+ multi: true
5068
+ }
5069
+ ]
5070
+ }]
5071
+ }], propDecorators: { disabled: [{
5072
+ type: Input
5073
+ }], accept: [{
5074
+ type: Input
5075
+ }], multiple: [{
5076
+ type: Input
5077
+ }] } });
5078
+
5079
+ let KlesFormFileComponent = class KlesFormFileComponent extends KlesFieldAbstract {
5080
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KlesFormFileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5081
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: KlesFormFileComponent, selector: "kles-form-file", usesInheritance: true, ngImport: i0, template: `
5082
+ <div [formGroup]="group">
5083
+ <kles-file-control
5084
+ [attr.id]="field.id"
5085
+ [formControlName]="field.name"
5086
+ [accept]="field.accept"
5087
+ [disabled]="field.disabled"
5088
+ [multiple]="field.multiple"
5089
+ ></kles-file-control>
5090
+ </div>
5091
+ `, isInline: true, styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: KlesFileControlComponent, selector: "kles-file-control", inputs: ["disabled", "accept", "multiple"] }] }); }
5092
+ };
5093
+ KlesFormFileComponent = __decorate([
5094
+ FieldMapper({ type: EnumType.file })
5095
+ ], KlesFormFileComponent);
5096
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KlesFormFileComponent, decorators: [{
5097
+ type: Component,
5098
+ args: [{ selector: 'kles-form-file', template: `
5099
+ <div [formGroup]="group">
5100
+ <kles-file-control
5101
+ [attr.id]="field.id"
5102
+ [formControlName]="field.name"
5103
+ [accept]="field.accept"
5104
+ [disabled]="field.disabled"
5105
+ [multiple]="field.multiple"
5106
+ ></kles-file-control>
5107
+ </div>
5108
+ `, styles: ["mat-form-field{width:100%}\n"] }]
5109
+ }] });
5110
+
4980
5111
  const components = [
4981
5112
  KlesDynamicFormComponent,
4982
5113
  KlesFormLabelComponent,
4983
5114
  KlesFormInputComponent,
4984
5115
  KlesFormInputClearableComponent,
4985
5116
  KlesFormBadgeComponent,
5117
+ KlesFormFileComponent,
5118
+ KlesFileControlComponent,
4986
5119
  KlesButtonComponent,
4987
5120
  KlesFormButtonComponent,
4988
5121
  KlesButtonCheckerComponent,
@@ -5036,6 +5169,8 @@ class KlesMaterialDynamicformsModule {
5036
5169
  KlesFormInputComponent,
5037
5170
  KlesFormInputClearableComponent,
5038
5171
  KlesFormBadgeComponent,
5172
+ KlesFormFileComponent,
5173
+ KlesFileControlComponent,
5039
5174
  KlesButtonComponent,
5040
5175
  KlesFormButtonComponent,
5041
5176
  KlesButtonCheckerComponent,
@@ -5085,6 +5220,8 @@ class KlesMaterialDynamicformsModule {
5085
5220
  KlesFormInputComponent,
5086
5221
  KlesFormInputClearableComponent,
5087
5222
  KlesFormBadgeComponent,
5223
+ KlesFormFileComponent,
5224
+ KlesFileControlComponent,
5088
5225
  KlesButtonComponent,
5089
5226
  KlesFormButtonComponent,
5090
5227
  KlesButtonCheckerComponent,
@@ -5201,5 +5338,5 @@ function autocompleteStringValidator(validOptions, optional) {
5201
5338
  * Generated bundle index. Do not edit.
5202
5339
  */
5203
5340
 
5204
- export { ArrayFormatPipe, EnumButtonAttribute, EnumType, FieldMapper, KlesAbstractFormControl, KlesButtonBase, KlesButtonCheckerComponent, KlesButtonComponent, KlesButtonFileComponent, KlesComponentDirective, KlesDynamicFieldDirective, KlesDynamicFormComponent, KlesFabComponent, KlesFieldAbstract, KlesFormArray, KlesFormArrayComponent, KlesFormBadgeComponent, KlesFormButtonCheckerComponent, KlesFormButtonComponent, KlesFormButtonFileComponent, KlesFormButtonToogleGroupComponent, KlesFormCheckboxComponent, KlesFormCheckboxIndeterminateComponent, KlesFormChipComponent, KlesFormClearComponent, KlesFormColorComponent, KlesFormControl, KlesFormCopyComponent, KlesFormDateComponent, KlesFormDateTimeComponent, KlesFormErrorStateMatcher, KlesFormFabComponent, KlesFormGroup, KlesFormGroupComponent, KlesFormIconButtonComponent, KlesFormIconComponent, KlesFormInputClearableComponent, KlesFormInputComponent, KlesFormLabelComponent, KlesFormLineBreakComponent, KlesFormLinkComponent, KlesFormListFieldComponent, KlesFormMiniFabComponent, KlesFormRadioComponent, KlesFormRange, KlesFormRangeComponent, KlesFormSelectComponent, KlesFormSelectLazySearchComponent, KlesFormSelectSearchComponent, KlesFormSelectionListComponent, KlesFormSelectionListSearchComponent, KlesFormSlideToggleComponent, KlesFormTextComponent, KlesFormTextareaComponent, KlesIconButtonComponent, KlesIndeterminateCheckboxComponent, KlesMaterialDynamicformsModule, KlesMiniFabComponent, KlesSelectionModel, KlesTransformPipe, MatErrorFormDirective, MatErrorMessageDirective, autocompleteObjectValidator, autocompleteStringValidator, componentMapper, klesFieldControlFactory };
5341
+ export { ArrayFormatPipe, EnumButtonAttribute, EnumType, FieldMapper, KlesAbstractFormControl, KlesButtonBase, KlesButtonCheckerComponent, KlesButtonComponent, KlesButtonFileComponent, KlesComponentDirective, KlesDynamicFieldDirective, KlesDynamicFormComponent, KlesFabComponent, KlesFieldAbstract, KlesFileControlComponent, KlesFormArray, KlesFormArrayComponent, KlesFormBadgeComponent, KlesFormButtonCheckerComponent, KlesFormButtonComponent, KlesFormButtonFileComponent, KlesFormButtonToogleGroupComponent, KlesFormCheckboxComponent, KlesFormCheckboxIndeterminateComponent, KlesFormChipComponent, KlesFormClearComponent, KlesFormColorComponent, KlesFormControl, KlesFormCopyComponent, KlesFormDateComponent, KlesFormDateTimeComponent, KlesFormErrorStateMatcher, KlesFormFabComponent, KlesFormFileComponent, KlesFormGroup, KlesFormGroupComponent, KlesFormIconButtonComponent, KlesFormIconComponent, KlesFormInputClearableComponent, KlesFormInputComponent, KlesFormLabelComponent, KlesFormLineBreakComponent, KlesFormLinkComponent, KlesFormListFieldComponent, KlesFormMiniFabComponent, KlesFormRadioComponent, KlesFormRange, KlesFormRangeComponent, KlesFormSelectComponent, KlesFormSelectLazySearchComponent, KlesFormSelectSearchComponent, KlesFormSelectionListComponent, KlesFormSelectionListSearchComponent, KlesFormSlideToggleComponent, KlesFormTextComponent, KlesFormTextareaComponent, KlesIconButtonComponent, KlesIndeterminateCheckboxComponent, KlesMaterialDynamicformsModule, KlesMiniFabComponent, KlesSelectionModel, KlesTransformPipe, MatErrorFormDirective, MatErrorMessageDirective, autocompleteObjectValidator, autocompleteStringValidator, componentMapper, isDestroyable, klesFieldControlFactory };
5205
5342
  //# sourceMappingURL=3kles-kles-material-dynamicforms.mjs.map