@ifsworld/granite-components 12.1.2 → 12.3.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.
- package/esm2022/index.mjs +4 -1
- package/esm2022/lib/file-upload/directives/file-drag-and-drop.directive.mjs +102 -0
- package/esm2022/lib/file-upload/file-upload.component.mjs +168 -0
- package/esm2022/lib/file-upload/file-upload.constants.mjs +39 -0
- package/esm2022/lib/file-upload/file-upload.module.mjs +21 -0
- package/esm2022/lib/file-upload/file-upload.utils.mjs +13 -0
- package/esm2022/lib/progress-bar/progress-bar-legend/progress-bar-legend.component.mjs +19 -0
- package/esm2022/lib/progress-bar/progress-bar-legend-base.mjs +20 -0
- package/esm2022/lib/progress-bar/progress-bar-legend-trigger-for.directive.mjs +191 -0
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +18 -3
- package/esm2022/lib/progress-bar/progress-bar.model.mjs +2 -0
- package/esm2022/lib/progress-bar/progress-bar.module.mjs +29 -5
- package/fesm2022/ifsworld-granite-components.mjs +590 -23
- package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/lib/file-upload/directives/file-drag-and-drop.directive.d.ts +18 -0
- package/lib/file-upload/file-upload.component.d.ts +48 -0
- package/lib/file-upload/file-upload.constants.d.ts +35 -0
- package/lib/file-upload/file-upload.module.d.ts +11 -0
- package/lib/file-upload/file-upload.utils.d.ts +1 -0
- package/lib/progress-bar/progress-bar-legend/progress-bar-legend.component.d.ts +8 -0
- package/lib/progress-bar/progress-bar-legend-base.d.ts +17 -0
- package/lib/progress-bar/progress-bar-legend-trigger-for.directive.d.ts +41 -0
- package/lib/progress-bar/progress-bar.component.d.ts +5 -8
- package/lib/progress-bar/progress-bar.model.d.ts +11 -0
- package/lib/progress-bar/progress-bar.module.d.ts +8 -4
- package/package.json +1 -1
package/esm2022/index.mjs
CHANGED
|
@@ -53,6 +53,7 @@ export * from './lib/contacts/custom-profile.directive';
|
|
|
53
53
|
export * from './lib/contacts/contacts-types/contacts.component.public-types';
|
|
54
54
|
export * from './lib/progress-bar/progress-bar.module';
|
|
55
55
|
export * from './lib/progress-bar/progress-bar.component';
|
|
56
|
+
export * from './lib/progress-bar/progress-bar.model';
|
|
56
57
|
// Temporary
|
|
57
58
|
export * from './lib/core/client-environment';
|
|
58
59
|
export * from './lib/core/core.module';
|
|
@@ -76,8 +77,10 @@ export * from './lib/card-list/card/card-avatar.component';
|
|
|
76
77
|
export * from './lib/card-list/card/card-content/card-header-title.component';
|
|
77
78
|
export * from './lib/card-list/card/card-content/card-header-subtitle.component';
|
|
78
79
|
export * from './lib/card-list/card/card-content/card-footer.component';
|
|
80
|
+
export * from './lib/file-upload/file-upload.module';
|
|
81
|
+
export * from './lib/file-upload/file-upload.component';
|
|
79
82
|
export * from './lib/collapsible-group/collapsible-group.module';
|
|
80
83
|
export * from './lib/collapsible-group/collapsible-group.component';
|
|
81
84
|
export * from './lib/collapsible-group/collapsible-group-body.directive';
|
|
82
85
|
export * from './lib/collapsible-group/collapsible-group-header.directive';
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsMENBQTBDLENBQUM7QUFFekQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGNBQWMseUNBQXlDLENBQUM7QUFFeEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxrRkFBa0YsQ0FBQztBQUNqRyxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsK0RBQStELENBQUM7QUFFOUUsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsWUFBWTtBQUNaLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMseURBQXlELENBQUM7QUFFeEUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHlDQUF5QyxDQUFDO0FBRXhELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsNERBQTRELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHVpXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXJyYW5nZS1ncmlkL2FycmFuZ2UtZ3JpZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXJyYW5nZS1ncmlkL2FycmFuZ2UtZ3JpZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXJyYW5nZS1ncmlkL2FycmFuZ2UtZ3JpZC1pdGVtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2dyaWQvZ3JpZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3JpZC9ncmlkLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlL2JhZGdlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFkZ2UvdGVzdGluZy9iYWRnZS5oYXJuZXNzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L21lbnUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUvbWVudS1kZXNrdG9wLWFuaW1hdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LXRvdWNoLWFuaW1hdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUvbWVudS10cmlnZ2VyLWZvci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS90ZXN0aW5nL21lbnUuaGFybmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L2RpdmlkZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUvdGl0bGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUvbWVudS10b3VjaC1jbG9zZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LXRvdWNoLXRpdGxlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb24vaWNvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvZ2dsZS1zd2l0Y2gvdG9nZ2xlLXN3aXRjaC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9nZ2xlLXN3aXRjaC90b2dnbGUtc3dpdGNoLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8tYnV0dG9uL3JhZGlvLWdyb3VwLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGVja2JveC9jaGVja2JveC1ncm91cC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24vYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LWZpZWxkL2lucHV0LWZpZWxkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC1maWVsZC9pbnB1dC1maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGlwcy9jaGlwcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hpcHMvY2hpcC1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGlwcy9jaGlwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGlwcy9jaGlwLWlucHV0JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbGFiZWwvbGFiZWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3RzL2NvbnRhY3RzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250YWN0cy9jb250YWN0cy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udGFjdHMvY29udGFjdHMtdHlwZXMvY29udGFjdHMuY29tcG9uZW50LnB1YmxpYy10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250YWN0cy9jb250YWN0cy1wcm9maWxlL2NvbnRhY3RzLXByb2ZpbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3RzL2NvbnRhY3QtaXRlbS9jb250YWN0LWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3RzL2NvbnRhY3QtaXRlbS1kZWZhdWx0LXN0YXR1cy9jb250YWN0LWl0ZW0tZGVmYXVsdC1zdGF0dXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3RzL2NvbnRhY3QtaXRlbS10aXRsZS9jb250YWN0LWl0ZW0tdGl0bGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3RzL2NvbnRhY3RzLXRyaWdnZXIvY29udGFjdHMtdHJpZ2dlci1mb3IuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3RzL2N1c3RvbS1zdGF0dXMuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3RzL2N1c3RvbS1wcm9maWxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250YWN0cy9jb250YWN0cy10eXBlcy9jb250YWN0cy5jb21wb25lbnQucHVibGljLXR5cGVzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5tb2RlbCc7XG5cbi8vIFRlbXBvcmFyeVxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9jbGllbnQtZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9jb3JlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2RldmljZXMvY2xpZW50LW91dHB1dC10b3VjaC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9kZXZpY2VzL2NsaWVudC1vdXRwdXQtZGVza3RvcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9kZXZpY2VzL2NsaWVudC1pbnB1dC10b3VjaC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9kZXZpY2VzL2NsaWVudC1pbnB1dC1kZXNrdG9wLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2NvbW1vbi1iZWhhdmlvcnMvZGlzYWJsZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9oaWRlLW9uLW92ZXJmbG93LmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvcGlwZXMvcHVyZS1waXBlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9waXBlcy90aXRsZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLWxpc3QvY2FyZC1saXN0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLWxpc3QvY2FyZC1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLWxpc3QvY2FyZC9jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLWxpc3QvY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1jb250ZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLWxpc3QvY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1hY3Rpb25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLWxpc3QvY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1ib2R5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLWxpc3QvY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhcmQtbGlzdC9jYXJkL2NhcmQtYXZhdGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLWxpc3QvY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1oZWFkZXItdGl0bGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhcmQtbGlzdC9jYXJkL2NhcmQtY29udGVudC9jYXJkLWhlYWRlci1zdWJ0aXRsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FyZC1saXN0L2NhcmQvY2FyZC1jb250ZW50L2NhcmQtZm9vdGVyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2xsYXBzaWJsZS1ncm91cC9jb2xsYXBzaWJsZS1ncm91cC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29sbGFwc2libGUtZ3JvdXAvY29sbGFwc2libGUtZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbGxhcHNpYmxlLWdyb3VwL2NvbGxhcHNpYmxlLWdyb3VwLWJvZHkuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbGxhcHNpYmxlLWdyb3VwL2NvbGxhcHNpYmxlLWdyb3VwLWhlYWRlci5kaXJlY3RpdmUnO1xuIl19
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostBinding, HostListener, Input, Output, } from '@angular/core';
|
|
2
|
+
import { FilUploadErrorTypes } from '../file-upload.constants';
|
|
3
|
+
import { validFileTypes } from '../file-upload.utils';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class GraniteFileDragAndDropDirective {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.currentFiles = [];
|
|
8
|
+
this.droppedFiles = new EventEmitter();
|
|
9
|
+
this.isFileOver = new EventEmitter();
|
|
10
|
+
this.fileUploadValidation = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
onDragOver(event) {
|
|
13
|
+
event.preventDefault();
|
|
14
|
+
event.stopPropagation();
|
|
15
|
+
const transferFiles = event.dataTransfer?.items ?? [];
|
|
16
|
+
if (!validFileTypes(this.accept, Array.from(transferFiles))) {
|
|
17
|
+
this.fileBrowseError = true;
|
|
18
|
+
this.fileUploadValidation.emit({
|
|
19
|
+
isError: this.fileBrowseError,
|
|
20
|
+
type: FilUploadErrorTypes.ExtensionNotSupported,
|
|
21
|
+
});
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (!this.multiFileUploadEnabled &&
|
|
25
|
+
(transferFiles.length > 1 || this.currentFiles.length >= 1)) {
|
|
26
|
+
this.fileBrowseError = true;
|
|
27
|
+
this.fileUploadValidation.emit({
|
|
28
|
+
isError: this.fileBrowseError,
|
|
29
|
+
type: FilUploadErrorTypes.MultipleFilesNotSupported,
|
|
30
|
+
});
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.fileOver = true;
|
|
34
|
+
this.isFileOver.emit(this.fileOver);
|
|
35
|
+
}
|
|
36
|
+
onDragLeave(event) {
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
event.stopPropagation();
|
|
39
|
+
this.fileOver = false;
|
|
40
|
+
this.fileBrowseError = false;
|
|
41
|
+
this.fileUploadValidation.emit({ isError: false, type: null });
|
|
42
|
+
this.isFileOver.emit(this.fileOver);
|
|
43
|
+
}
|
|
44
|
+
onDrop(event) {
|
|
45
|
+
event.preventDefault();
|
|
46
|
+
event.stopPropagation();
|
|
47
|
+
if (this.fileBrowseError) {
|
|
48
|
+
this.fileBrowseError = false;
|
|
49
|
+
this.fileUploadValidation.emit({
|
|
50
|
+
isError: this.fileBrowseError,
|
|
51
|
+
type: null,
|
|
52
|
+
});
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.currentFiles = [
|
|
56
|
+
...this.currentFiles,
|
|
57
|
+
...Array.from(event.dataTransfer.files),
|
|
58
|
+
];
|
|
59
|
+
this.fileOver = false;
|
|
60
|
+
this.isFileOver.emit(this.fileOver);
|
|
61
|
+
if (this.currentFiles.length > 0) {
|
|
62
|
+
this.droppedFiles.emit(this.currentFiles);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteFileDragAndDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
66
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: GraniteFileDragAndDropDirective, selector: "[graniteFileDragAndDrop]", inputs: { multiFileUploadEnabled: "multiFileUploadEnabled", accept: "accept", currentFiles: "currentFiles" }, outputs: { droppedFiles: "droppedFiles", isFileOver: "isFileOver", fileUploadValidation: "fileUploadValidation" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "class.file-over": "this.fileOver", "class.file-error": "this.fileBrowseError" } }, exportAs: ["graniteFileDragAndDrop"], ngImport: i0 }); }
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteFileDragAndDropDirective, decorators: [{
|
|
69
|
+
type: Directive,
|
|
70
|
+
args: [{
|
|
71
|
+
selector: '[graniteFileDragAndDrop]',
|
|
72
|
+
exportAs: 'graniteFileDragAndDrop',
|
|
73
|
+
}]
|
|
74
|
+
}], propDecorators: { fileOver: [{
|
|
75
|
+
type: HostBinding,
|
|
76
|
+
args: ['class.file-over']
|
|
77
|
+
}], fileBrowseError: [{
|
|
78
|
+
type: HostBinding,
|
|
79
|
+
args: ['class.file-error']
|
|
80
|
+
}], multiFileUploadEnabled: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], accept: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], currentFiles: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], droppedFiles: [{
|
|
87
|
+
type: Output
|
|
88
|
+
}], isFileOver: [{
|
|
89
|
+
type: Output
|
|
90
|
+
}], fileUploadValidation: [{
|
|
91
|
+
type: Output
|
|
92
|
+
}], onDragOver: [{
|
|
93
|
+
type: HostListener,
|
|
94
|
+
args: ['dragover', ['$event']]
|
|
95
|
+
}], onDragLeave: [{
|
|
96
|
+
type: HostListener,
|
|
97
|
+
args: ['dragleave', ['$event']]
|
|
98
|
+
}], onDrop: [{
|
|
99
|
+
type: HostListener,
|
|
100
|
+
args: ['drop', ['$event']]
|
|
101
|
+
}] } });
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcmFnLWFuZC1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvZmlsZS11cGxvYWQvZGlyZWN0aXZlcy9maWxlLWRyYWctYW5kLWRyb3AuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU10RCxNQUFNLE9BQU8sK0JBQStCO0lBSjVDO1FBa0JFLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBRzFCLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFHaEUsZUFBVSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBR2hFLHlCQUFvQixHQUNsQixJQUFJLFlBQVksRUFBbUIsQ0FBQztLQXVFdkM7SUFwRUMsVUFBVSxDQUFDLEtBQWdCO1FBQ3pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1FBRXRELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO2dCQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQzdCLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxxQkFBcUI7YUFDaEQsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFFRCxJQUNFLENBQUMsSUFBSSxDQUFDLHNCQUFzQjtZQUM1QixDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUMzRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQztnQkFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUM3QixJQUFJLEVBQUUsbUJBQW1CLENBQUMseUJBQXlCO2FBQ3BELENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFHRCxXQUFXLENBQUMsS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUdELE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7Z0JBQzdCLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDN0IsSUFBSSxFQUFFLElBQUk7YUFDWCxDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsR0FBRyxJQUFJLENBQUMsWUFBWTtZQUNwQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7U0FDeEMsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQzs4R0E5RlUsK0JBQStCO2tHQUEvQiwrQkFBK0I7OzJGQUEvQiwrQkFBK0I7a0JBSjNDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsUUFBUSxFQUFFLHdCQUF3QjtpQkFDbkM7OEJBR0MsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFJOUIsZUFBZTtzQkFEZCxXQUFXO3VCQUFDLGtCQUFrQjtnQkFJL0Isc0JBQXNCO3NCQURyQixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQ3BDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWXJDLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3IsIEZpbFVwbG9hZEVycm9yVHlwZXMgfSBmcm9tICcuLi9maWxlLXVwbG9hZC5jb25zdGFudHMnO1xuaW1wb3J0IHsgdmFsaWRGaWxlVHlwZXMgfSBmcm9tICcuLi9maWxlLXVwbG9hZC51dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tncmFuaXRlRmlsZURyYWdBbmREcm9wXScsXG4gIGV4cG9ydEFzOiAnZ3Jhbml0ZUZpbGVEcmFnQW5kRHJvcCcsXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVGaWxlRHJhZ0FuZERyb3BEaXJlY3RpdmUge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZpbGUtb3ZlcicpXG4gIGZpbGVPdmVyOiBib29sZWFuO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmlsZS1lcnJvcicpXG4gIGZpbGVCcm93c2VFcnJvcjogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBtdWx0aUZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIGFjY2VwdDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGN1cnJlbnRGaWxlczogRmlsZVtdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIGRyb3BwZWRGaWxlczogRXZlbnRFbWl0dGVyPEZpbGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcblxuICBAT3V0cHV0KClcbiAgaXNGaWxlT3ZlcjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBPdXRwdXQoKVxuICBmaWxlVXBsb2FkVmFsaWRhdGlvbjogRXZlbnRFbWl0dGVyPEZpbGVVcGxvYWRFcnJvcj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RmlsZVVwbG9hZEVycm9yPigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHRyYW5zZmVyRmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXI/Lml0ZW1zID8/IFtdO1xuXG4gICAgaWYgKCF2YWxpZEZpbGVUeXBlcyh0aGlzLmFjY2VwdCwgQXJyYXkuZnJvbSh0cmFuc2ZlckZpbGVzKSkpIHtcbiAgICAgIHRoaXMuZmlsZUJyb3dzZUVycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmlsZVVwbG9hZFZhbGlkYXRpb24uZW1pdCh7XG4gICAgICAgIGlzRXJyb3I6IHRoaXMuZmlsZUJyb3dzZUVycm9yLFxuICAgICAgICB0eXBlOiBGaWxVcGxvYWRFcnJvclR5cGVzLkV4dGVuc2lvbk5vdFN1cHBvcnRlZCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICF0aGlzLm11bHRpRmlsZVVwbG9hZEVuYWJsZWQgJiZcbiAgICAgICh0cmFuc2ZlckZpbGVzLmxlbmd0aCA+IDEgfHwgdGhpcy5jdXJyZW50RmlsZXMubGVuZ3RoID49IDEpXG4gICAgKSB7XG4gICAgICB0aGlzLmZpbGVCcm93c2VFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLmZpbGVVcGxvYWRWYWxpZGF0aW9uLmVtaXQoe1xuICAgICAgICBpc0Vycm9yOiB0aGlzLmZpbGVCcm93c2VFcnJvcixcbiAgICAgICAgdHlwZTogRmlsVXBsb2FkRXJyb3JUeXBlcy5NdWx0aXBsZUZpbGVzTm90U3VwcG9ydGVkLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5maWxlT3ZlciA9IHRydWU7XG4gICAgdGhpcy5pc0ZpbGVPdmVyLmVtaXQodGhpcy5maWxlT3Zlcik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuZmlsZU92ZXIgPSBmYWxzZTtcbiAgICB0aGlzLmZpbGVCcm93c2VFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZVVwbG9hZFZhbGlkYXRpb24uZW1pdCh7IGlzRXJyb3I6IGZhbHNlLCB0eXBlOiBudWxsIH0pO1xuICAgIHRoaXMuaXNGaWxlT3Zlci5lbWl0KHRoaXMuZmlsZU92ZXIpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLmZpbGVCcm93c2VFcnJvcikge1xuICAgICAgdGhpcy5maWxlQnJvd3NlRXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsZVVwbG9hZFZhbGlkYXRpb24uZW1pdCh7XG4gICAgICAgIGlzRXJyb3I6IHRoaXMuZmlsZUJyb3dzZUVycm9yLFxuICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50RmlsZXMgPSBbXG4gICAgICAuLi50aGlzLmN1cnJlbnRGaWxlcyxcbiAgICAgIC4uLkFycmF5LmZyb20oZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSxcbiAgICBdO1xuXG4gICAgdGhpcy5maWxlT3ZlciA9IGZhbHNlO1xuICAgIHRoaXMuaXNGaWxlT3Zlci5lbWl0KHRoaXMuZmlsZU92ZXIpO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZHJvcHBlZEZpbGVzLmVtaXQodGhpcy5jdXJyZW50RmlsZXMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { DEFAULT_BROWSE_BUTTON_TEXT, DEFAULT_CANCEL_BUTTON_TEXT, DEFAULT_DROP_PLACEHOLDER_TEXT, DEFAULT_DROPZONE_HINT, DEFAULT_DROPZONE_TEXT, DEFAULT_FILE_BROWSE_BUTTON_ICON, DEFAULT_ACCEPT_TYPE, DEFAULT_MULTI_FILE_SUPPORT, DEFAULT_REMOVE_BUTTON_TEXT, DEFAULT_RETRY_BUTTON_TEXT, DEFAULT_UPLOAD_BUTTON_TEXT, DEFAULT_UPLOAD_FAILURE_ICON, DEFAULT_UPLOAD_ICON, DEFAULT_UPLOAD_TITLE, fileSizes, FileUploadStatus, FilUploadErrorTypes, } from './file-upload.constants';
|
|
3
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
4
|
+
import { validFileTypes } from './file-upload.utils';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "../button/button.component";
|
|
8
|
+
import * as i3 from "../icon/icon.component";
|
|
9
|
+
import * as i4 from "./directives/file-drag-and-drop.directive";
|
|
10
|
+
export class GraniteFileUploadComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.accept = DEFAULT_ACCEPT_TYPE;
|
|
13
|
+
this.uploadTitle = DEFAULT_UPLOAD_TITLE;
|
|
14
|
+
this.uploadIcon = DEFAULT_UPLOAD_ICON;
|
|
15
|
+
this.browseIcon = DEFAULT_FILE_BROWSE_BUTTON_ICON;
|
|
16
|
+
this.errorIcon = DEFAULT_UPLOAD_FAILURE_ICON;
|
|
17
|
+
this.dropZoneText = DEFAULT_DROPZONE_TEXT;
|
|
18
|
+
this.browseButtonText = DEFAULT_BROWSE_BUTTON_TEXT;
|
|
19
|
+
this.dropPlaceholderText = DEFAULT_DROP_PLACEHOLDER_TEXT;
|
|
20
|
+
this.dropZoneHint = DEFAULT_DROPZONE_HINT;
|
|
21
|
+
this.removeButtonText = DEFAULT_REMOVE_BUTTON_TEXT;
|
|
22
|
+
this.uploadButtonText = DEFAULT_UPLOAD_BUTTON_TEXT;
|
|
23
|
+
this.retryButtonText = DEFAULT_RETRY_BUTTON_TEXT;
|
|
24
|
+
this.cancelButtonText = DEFAULT_CANCEL_BUTTON_TEXT;
|
|
25
|
+
this.browseOrDragFiles = new EventEmitter();
|
|
26
|
+
this.removeFiles = new EventEmitter();
|
|
27
|
+
this.filesUpload = new EventEmitter();
|
|
28
|
+
this.fileUploadValidation = new EventEmitter();
|
|
29
|
+
this.selectedFiles = [];
|
|
30
|
+
this.previewReadyFiles = [];
|
|
31
|
+
this.isFileOnDropzone = false;
|
|
32
|
+
this.FileUploadStatus = FileUploadStatus;
|
|
33
|
+
this.fileError = false;
|
|
34
|
+
// TODO: this becomes input when multiple file upload support with carousel component was done.
|
|
35
|
+
this.supportMultiFileUpload = DEFAULT_MULTI_FILE_SUPPORT;
|
|
36
|
+
this._uploadStatus = FileUploadStatus.NotStarted;
|
|
37
|
+
this._autoUpload = true;
|
|
38
|
+
}
|
|
39
|
+
get uploadStatus() {
|
|
40
|
+
return this._uploadStatus;
|
|
41
|
+
}
|
|
42
|
+
set uploadStatus(status) {
|
|
43
|
+
this._uploadStatus = status;
|
|
44
|
+
}
|
|
45
|
+
get autoUpload() {
|
|
46
|
+
return this._autoUpload;
|
|
47
|
+
}
|
|
48
|
+
set autoUpload(value) {
|
|
49
|
+
this._autoUpload = coerceBooleanProperty(value);
|
|
50
|
+
}
|
|
51
|
+
fileBrowseHandler(event) {
|
|
52
|
+
const target = event.target;
|
|
53
|
+
const files = Array.from(target.files);
|
|
54
|
+
if (!validFileTypes(this.accept, files)) {
|
|
55
|
+
this.fileUploadValidation.emit({
|
|
56
|
+
isError: true,
|
|
57
|
+
type: FilUploadErrorTypes.ExtensionNotSupported,
|
|
58
|
+
});
|
|
59
|
+
this.fileDropRef.nativeElement.value = null;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.selectedFiles = [...this.selectedFiles, ...files];
|
|
63
|
+
this.previewReadyFiles = this.prepareSelectedFiles(this.selectedFiles);
|
|
64
|
+
this.browseOrDragFiles.emit(this.previewReadyFiles);
|
|
65
|
+
}
|
|
66
|
+
fileRemoveHandler(index) {
|
|
67
|
+
this.selectedFiles.splice(index, 1);
|
|
68
|
+
this.previewReadyFiles.splice(index, 1);
|
|
69
|
+
if (this.selectedFiles.length === 0 &&
|
|
70
|
+
this.previewReadyFiles.length === 0) {
|
|
71
|
+
this.fileDropRef.nativeElement.value = null;
|
|
72
|
+
this.uploadStatus = FileUploadStatus.NotStarted;
|
|
73
|
+
}
|
|
74
|
+
this.removeFiles.emit(this.previewReadyFiles);
|
|
75
|
+
}
|
|
76
|
+
onFilesDropHandler(files) {
|
|
77
|
+
if (!this.supportMultiFileUpload &&
|
|
78
|
+
(this.selectedFiles.length === 1 || files.length !== 1)) {
|
|
79
|
+
this.fileError = true;
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
this.selectedFiles = files;
|
|
83
|
+
this.previewReadyFiles = this.prepareSelectedFiles(this.selectedFiles);
|
|
84
|
+
this.browseOrDragFiles.emit(this.previewReadyFiles);
|
|
85
|
+
}
|
|
86
|
+
onFileOverDropzone(isFileOver) {
|
|
87
|
+
this.isFileOnDropzone = isFileOver;
|
|
88
|
+
}
|
|
89
|
+
onFileDropError(validation) {
|
|
90
|
+
this.fileError = validation.isError;
|
|
91
|
+
this.fileDropErrorType = validation.type;
|
|
92
|
+
}
|
|
93
|
+
prepareSelectedFiles(files) {
|
|
94
|
+
return files.map((file) => ({
|
|
95
|
+
file,
|
|
96
|
+
readableSize: this.formatBytesToReadableSize(file.size, 2),
|
|
97
|
+
imageUrl: URL.createObjectURL(file),
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
uploadFiles() {
|
|
101
|
+
this.filesUpload.emit();
|
|
102
|
+
}
|
|
103
|
+
retryUpload() {
|
|
104
|
+
this.filesUpload.emit();
|
|
105
|
+
}
|
|
106
|
+
cancelUpload() {
|
|
107
|
+
for (let i = 0; i < this.previewReadyFiles.length; i++) {
|
|
108
|
+
this.fileRemoveHandler(i);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
formatBytesToReadableSize(bytes, decimals) {
|
|
112
|
+
if (bytes === 0) {
|
|
113
|
+
return `0 ${fileSizes[0]}`;
|
|
114
|
+
}
|
|
115
|
+
const bytesPerKB = 1024;
|
|
116
|
+
const decimalPoints = decimals <= 0 ? 0 : decimals || 2;
|
|
117
|
+
const exp = Math.floor(Math.log(bytes) / Math.log(bytesPerKB));
|
|
118
|
+
return `${parseFloat((bytes / Math.pow(bytesPerKB, exp)).toFixed(decimalPoints))} ${fileSizes[exp]}`;
|
|
119
|
+
}
|
|
120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: GraniteFileUploadComponent, selector: "granite-file-upload", inputs: { accept: "accept", uploadTitle: "uploadTitle", uploadIcon: "uploadIcon", browseIcon: "browseIcon", errorIcon: "errorIcon", dropZoneText: "dropZoneText", browseButtonText: "browseButtonText", dropPlaceholderText: "dropPlaceholderText", dropZoneHint: "dropZoneHint", removeButtonText: "removeButtonText", uploadButtonText: "uploadButtonText", retryButtonText: "retryButtonText", cancelButtonText: "cancelButtonText", uploadStatus: "uploadStatus", autoUpload: "autoUpload" }, outputs: { browseOrDragFiles: "browseOrDragFiles", removeFiles: "removeFiles", filesUpload: "filesUpload", fileUploadValidation: "fileUploadValidation" }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"file-upload-wrapper\">\n <h2 class=\"file-upload-title\">{{ uploadTitle }}</h2>\n <div\n class=\"file-dropzone\"\n graniteFileDragAndDrop\n (droppedFiles)=\"onFilesDropHandler($event)\"\n (isFileOver)=\"onFileOverDropzone($event)\"\n (fileUploadValidation)=\"onFileDropError($event)\"\n [multiFileUploadEnabled]=\"supportMultiFileUpload\"\n [accept]=\"accept\"\n [currentFiles]=\"selectedFiles\"\n >\n <input\n class=\"file-input\"\n #fileDropRef\n type=\"file\"\n title=\"fileUpload\"\n (change)=\"fileBrowseHandler($event)\"\n [multiple]=\"supportMultiFileUpload\"\n [accept]=\"accept\"\n />\n <div class=\"file-upload-body\">\n <ng-template #dropPlaceholder>\n <p class=\"drop-area-placeholder\">\n {{ dropPlaceholderText }}\n </p>\n </ng-template>\n <ng-container\n *ngIf=\"!isFileOnDropzone && !fileError; else dropPlaceholder\"\n >\n <div\n class=\"file-upload-browse\"\n *ngIf=\"previewReadyFiles.length === 0; else filePreview\"\n >\n <granite-icon\n class=\"file-upload-icon\"\n [fontIcon]=\"uploadIcon\"\n ></granite-icon>\n <div class=\"file-selection\">\n <h2 class=\"file-upload-body-text\">{{ dropZoneText }}</h2>\n <button\n class=\"file-select-button\"\n graniteButton\n (click)=\"fileDropRef.click()\"\n >\n <granite-icon\n class=\"browse-button-icon\"\n [fontIcon]=\"browseIcon\"\n ></granite-icon>\n <div class=\"browse-button-text\">{{ browseButtonText }}</div>\n </button>\n </div>\n <p *ngIf=\"dropZoneHint\" class=\"file-upload-hint\">\n {{ dropZoneHint }}\n </p>\n </div>\n <ng-template #filePreview>\n <div\n class=\"file-preview-container\"\n *ngFor=\"let previewFile of previewReadyFiles; let i = index\"\n >\n <a\n class=\"file-preview-link\"\n [ngClass]=\"{\n 'uploading-in-progress':\n uploadStatus === FileUploadStatus.InProgress,\n 'upload-failed': uploadStatus === FileUploadStatus.Failed\n }\"\n [href]=\"previewFile?.imageUrl\"\n target=\"_blank\"\n >\n <div class=\"file-preview-holder\">\n <img\n role=\"presentation\"\n [src]=\"previewFile?.imageUrl\"\n [alt]=\"previewFile?.file?.name\"\n />\n </div>\n <p class=\"file-name\" [title]=\"previewFile?.file?.name\">\n {{ previewFile?.file?.name }}\n </p>\n <p class=\"file-size\">{{ previewFile?.readableSize }}</p>\n </a>\n <div\n class=\"loading-container\"\n *ngIf=\"uploadStatus === FileUploadStatus.InProgress\"\n >\n <div class=\"uploading-spinner\"></div>\n </div>\n <div\n class=\"failed-icon-container\"\n *ngIf=\"uploadStatus === FileUploadStatus.Failed\"\n >\n <granite-icon\n class=\"error-icon\"\n [fontIcon]=\"errorIcon\"\n ></granite-icon>\n </div>\n <button\n graniteButton\n *ngIf=\"\n [\n FileUploadStatus.Completed,\n FileUploadStatus.NotStarted\n ].includes(uploadStatus)\n \"\n (click)=\"fileRemoveHandler(i)\"\n >\n {{ removeButtonText }}\n </button>\n </div>\n </ng-template>\n </ng-container>\n </div>\n </div>\n <div class=\"file-upload-footer\">\n <div class=\"footer-container\" *ngIf=\"previewReadyFiles.length > 0\">\n <button\n *ngIf=\"!autoUpload && uploadStatus === FileUploadStatus.NotStarted\"\n granitePrimaryButton\n (click)=\"uploadFiles()\"\n >\n {{ uploadButtonText }}\n </button>\n <ng-container *ngIf=\"uploadStatus === FileUploadStatus.Failed\">\n <button graniteButton (click)=\"cancelUpload()\">\n {{ cancelButtonText }}\n </button>\n <button\n class=\"retry-upload-button\"\n granitePrimaryButton\n (click)=\"retryUpload()\"\n >\n {{ retryButtonText }}\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [":host{width:100%}.file-upload-wrapper{display:flex;flex-direction:column;background-color:var(--granite-color-background);box-shadow:var(--granite-shadow-s);height:100%;width:100%}.file-upload-wrapper .file-upload-title{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-medium);font-weight:var(--granite-font-weight-bold);line-height:var(--granite-line-height-base-rem);color:var(--granite-color-text-weak);margin:0;padding:var(--granite-spacing-8) calc(var(--granite-spacing-16) * .813)}.file-upload-wrapper .file-dropzone{display:flex;flex-direction:column;border-width:var(--granite-border-width-focus);border-style:dashed;border-color:var(--granite-color-background-selected);border-radius:var(--granite-radius-m);margin:var(--granite-spacing-8);height:100%}.file-upload-wrapper .file-dropzone.file-error{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;background-color:var(--granite-color-background-lobby-failure);border-color:var(--granite-color-state-error);transition:background .15s ease}.file-upload-wrapper .file-dropzone.file-error .drop-area-placeholder{margin:0}.file-upload-wrapper .file-dropzone.file-over{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;background-color:var(--granite-color-background-lobby-info);border-color:var(--granite-color-background-active);transition:background .15s ease}.file-upload-wrapper .file-dropzone.file-over .drop-area-placeholder{margin:0}.file-upload-wrapper .file-dropzone .file-input{opacity:0;position:absolute;width:0}.file-upload-wrapper .file-dropzone .file-upload-body{display:flex;align-items:center;justify-content:center;height:100%}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse{display:flex;flex-direction:column;gap:var(--granite-spacing-4);justify-content:center;align-items:center;padding:0 var(--granite-spacing-16)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-upload-icon{font-size:var(--granite-font-size-display-small);color:var(--granite-color-text)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection{display:flex;justify-content:space-between;align-items:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-upload-body-text{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;width:100%;margin-inline-end:var(--granite-spacing-4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button{display:flex;justify-content:space-between;align-items:center;color:var(--granite-color-text-link);padding-top:calc(var(--granite-spacing-24) / 4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button .browse-button-icon{font-size:var(--granite-font-size-body);color:var(--granite-color-text-link);margin-inline-end:var(--granite-spacing-4);padding:0}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button .browse-button-text{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-flowing) / 2);margin-top:var(--granite-spacing-4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button:hover .browse-button-icon,.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button:hover .browse-button-text{color:var(--granite-color-text-inverse)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-upload-hint{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:18px;text-align:center;color:var(--granite-color-text-hint);margin:10px 0 0}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container{display:flex;flex-direction:column;align-items:center;width:100%;max-height:100%;padding:6px}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link{display:flex;flex-direction:column;align-items:center;width:100%;text-decoration:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed{opacity:.6;pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link:hover .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link:hover .file-size{text-decoration:underline}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder{width:80px;height:114px;background-color:var(--granite-color-background-variant)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder img{max-width:100%;max-height:100%;aspect-ratio:2/1;object-fit:cover;object-position:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-name{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:10px;color:var(--granite-color-text-link);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:6px 0 0;width:100%;text-align:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-size{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:10px;color:var(--granite-color-text-link);margin:0 0 14px}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .loading-container,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .failed-icon-container{position:absolute;transform:translateY(100%)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .loading-container .uploading-spinner,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .failed-icon-container .uploading-spinner{width:50px;height:50px;border-radius:50%;border:6px solid;border-color:var(--granite-color-background-page);border-right-color:var(--granite-color-background-active);animation:loading-keyframe 1s infinite linear}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .loading-container .error-icon,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .failed-icon-container .error-icon{color:var(--granite-color-state-error);font-size:35px;padding:0}.file-upload-wrapper .file-upload-footer{margin-inline:var(--granite-spacing-8);margin-bottom:var(--granite-spacing-8)}.file-upload-wrapper .file-upload-footer .footer-container{display:flex;justify-content:flex-end;align-items:center}.file-upload-wrapper .file-upload-footer .footer-container .retry-upload-button{margin-inline-start:var(--granite-spacing-8)}@keyframes loading-keyframe{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GraniteButtonComponent, selector: "button[graniteButton],\n button[granitePrimaryButton],\n button[graniteFlatButton],\n button[graniteToolbarButton]\n ", inputs: ["disabled", "toggled"], exportAs: ["graniteButton"] }, { kind: "component", type: i3.GraniteIconComponent, selector: "granite-icon", inputs: ["fontIcon"] }, { kind: "directive", type: i4.GraniteFileDragAndDropDirective, selector: "[graniteFileDragAndDrop]", inputs: ["multiFileUploadEnabled", "accept", "currentFiles"], outputs: ["droppedFiles", "isFileOver", "fileUploadValidation"], exportAs: ["graniteFileDragAndDrop"] }] }); }
|
|
122
|
+
}
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteFileUploadComponent, decorators: [{
|
|
124
|
+
type: Component,
|
|
125
|
+
args: [{ selector: 'granite-file-upload', template: "<div class=\"file-upload-wrapper\">\n <h2 class=\"file-upload-title\">{{ uploadTitle }}</h2>\n <div\n class=\"file-dropzone\"\n graniteFileDragAndDrop\n (droppedFiles)=\"onFilesDropHandler($event)\"\n (isFileOver)=\"onFileOverDropzone($event)\"\n (fileUploadValidation)=\"onFileDropError($event)\"\n [multiFileUploadEnabled]=\"supportMultiFileUpload\"\n [accept]=\"accept\"\n [currentFiles]=\"selectedFiles\"\n >\n <input\n class=\"file-input\"\n #fileDropRef\n type=\"file\"\n title=\"fileUpload\"\n (change)=\"fileBrowseHandler($event)\"\n [multiple]=\"supportMultiFileUpload\"\n [accept]=\"accept\"\n />\n <div class=\"file-upload-body\">\n <ng-template #dropPlaceholder>\n <p class=\"drop-area-placeholder\">\n {{ dropPlaceholderText }}\n </p>\n </ng-template>\n <ng-container\n *ngIf=\"!isFileOnDropzone && !fileError; else dropPlaceholder\"\n >\n <div\n class=\"file-upload-browse\"\n *ngIf=\"previewReadyFiles.length === 0; else filePreview\"\n >\n <granite-icon\n class=\"file-upload-icon\"\n [fontIcon]=\"uploadIcon\"\n ></granite-icon>\n <div class=\"file-selection\">\n <h2 class=\"file-upload-body-text\">{{ dropZoneText }}</h2>\n <button\n class=\"file-select-button\"\n graniteButton\n (click)=\"fileDropRef.click()\"\n >\n <granite-icon\n class=\"browse-button-icon\"\n [fontIcon]=\"browseIcon\"\n ></granite-icon>\n <div class=\"browse-button-text\">{{ browseButtonText }}</div>\n </button>\n </div>\n <p *ngIf=\"dropZoneHint\" class=\"file-upload-hint\">\n {{ dropZoneHint }}\n </p>\n </div>\n <ng-template #filePreview>\n <div\n class=\"file-preview-container\"\n *ngFor=\"let previewFile of previewReadyFiles; let i = index\"\n >\n <a\n class=\"file-preview-link\"\n [ngClass]=\"{\n 'uploading-in-progress':\n uploadStatus === FileUploadStatus.InProgress,\n 'upload-failed': uploadStatus === FileUploadStatus.Failed\n }\"\n [href]=\"previewFile?.imageUrl\"\n target=\"_blank\"\n >\n <div class=\"file-preview-holder\">\n <img\n role=\"presentation\"\n [src]=\"previewFile?.imageUrl\"\n [alt]=\"previewFile?.file?.name\"\n />\n </div>\n <p class=\"file-name\" [title]=\"previewFile?.file?.name\">\n {{ previewFile?.file?.name }}\n </p>\n <p class=\"file-size\">{{ previewFile?.readableSize }}</p>\n </a>\n <div\n class=\"loading-container\"\n *ngIf=\"uploadStatus === FileUploadStatus.InProgress\"\n >\n <div class=\"uploading-spinner\"></div>\n </div>\n <div\n class=\"failed-icon-container\"\n *ngIf=\"uploadStatus === FileUploadStatus.Failed\"\n >\n <granite-icon\n class=\"error-icon\"\n [fontIcon]=\"errorIcon\"\n ></granite-icon>\n </div>\n <button\n graniteButton\n *ngIf=\"\n [\n FileUploadStatus.Completed,\n FileUploadStatus.NotStarted\n ].includes(uploadStatus)\n \"\n (click)=\"fileRemoveHandler(i)\"\n >\n {{ removeButtonText }}\n </button>\n </div>\n </ng-template>\n </ng-container>\n </div>\n </div>\n <div class=\"file-upload-footer\">\n <div class=\"footer-container\" *ngIf=\"previewReadyFiles.length > 0\">\n <button\n *ngIf=\"!autoUpload && uploadStatus === FileUploadStatus.NotStarted\"\n granitePrimaryButton\n (click)=\"uploadFiles()\"\n >\n {{ uploadButtonText }}\n </button>\n <ng-container *ngIf=\"uploadStatus === FileUploadStatus.Failed\">\n <button graniteButton (click)=\"cancelUpload()\">\n {{ cancelButtonText }}\n </button>\n <button\n class=\"retry-upload-button\"\n granitePrimaryButton\n (click)=\"retryUpload()\"\n >\n {{ retryButtonText }}\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [":host{width:100%}.file-upload-wrapper{display:flex;flex-direction:column;background-color:var(--granite-color-background);box-shadow:var(--granite-shadow-s);height:100%;width:100%}.file-upload-wrapper .file-upload-title{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-medium);font-weight:var(--granite-font-weight-bold);line-height:var(--granite-line-height-base-rem);color:var(--granite-color-text-weak);margin:0;padding:var(--granite-spacing-8) calc(var(--granite-spacing-16) * .813)}.file-upload-wrapper .file-dropzone{display:flex;flex-direction:column;border-width:var(--granite-border-width-focus);border-style:dashed;border-color:var(--granite-color-background-selected);border-radius:var(--granite-radius-m);margin:var(--granite-spacing-8);height:100%}.file-upload-wrapper .file-dropzone.file-error{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;background-color:var(--granite-color-background-lobby-failure);border-color:var(--granite-color-state-error);transition:background .15s ease}.file-upload-wrapper .file-dropzone.file-error .drop-area-placeholder{margin:0}.file-upload-wrapper .file-dropzone.file-over{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;background-color:var(--granite-color-background-lobby-info);border-color:var(--granite-color-background-active);transition:background .15s ease}.file-upload-wrapper .file-dropzone.file-over .drop-area-placeholder{margin:0}.file-upload-wrapper .file-dropzone .file-input{opacity:0;position:absolute;width:0}.file-upload-wrapper .file-dropzone .file-upload-body{display:flex;align-items:center;justify-content:center;height:100%}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse{display:flex;flex-direction:column;gap:var(--granite-spacing-4);justify-content:center;align-items:center;padding:0 var(--granite-spacing-16)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-upload-icon{font-size:var(--granite-font-size-display-small);color:var(--granite-color-text)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection{display:flex;justify-content:space-between;align-items:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-upload-body-text{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;width:100%;margin-inline-end:var(--granite-spacing-4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button{display:flex;justify-content:space-between;align-items:center;color:var(--granite-color-text-link);padding-top:calc(var(--granite-spacing-24) / 4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button .browse-button-icon{font-size:var(--granite-font-size-body);color:var(--granite-color-text-link);margin-inline-end:var(--granite-spacing-4);padding:0}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button .browse-button-text{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-flowing) / 2);margin-top:var(--granite-spacing-4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button:hover .browse-button-icon,.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button:hover .browse-button-text{color:var(--granite-color-text-inverse)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-upload-hint{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:18px;text-align:center;color:var(--granite-color-text-hint);margin:10px 0 0}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container{display:flex;flex-direction:column;align-items:center;width:100%;max-height:100%;padding:6px}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link{display:flex;flex-direction:column;align-items:center;width:100%;text-decoration:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed{opacity:.6;pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link:hover .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link:hover .file-size{text-decoration:underline}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder{width:80px;height:114px;background-color:var(--granite-color-background-variant)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder img{max-width:100%;max-height:100%;aspect-ratio:2/1;object-fit:cover;object-position:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-name{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:10px;color:var(--granite-color-text-link);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:6px 0 0;width:100%;text-align:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-size{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:10px;color:var(--granite-color-text-link);margin:0 0 14px}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .loading-container,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .failed-icon-container{position:absolute;transform:translateY(100%)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .loading-container .uploading-spinner,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .failed-icon-container .uploading-spinner{width:50px;height:50px;border-radius:50%;border:6px solid;border-color:var(--granite-color-background-page);border-right-color:var(--granite-color-background-active);animation:loading-keyframe 1s infinite linear}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .loading-container .error-icon,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .failed-icon-container .error-icon{color:var(--granite-color-state-error);font-size:35px;padding:0}.file-upload-wrapper .file-upload-footer{margin-inline:var(--granite-spacing-8);margin-bottom:var(--granite-spacing-8)}.file-upload-wrapper .file-upload-footer .footer-container{display:flex;justify-content:flex-end;align-items:center}.file-upload-wrapper .file-upload-footer .footer-container .retry-upload-button{margin-inline-start:var(--granite-spacing-8)}@keyframes loading-keyframe{to{transform:rotate(360deg)}}\n"] }]
|
|
126
|
+
}], propDecorators: { fileDropRef: [{
|
|
127
|
+
type: ViewChild,
|
|
128
|
+
args: ['fileDropRef', { read: ElementRef }]
|
|
129
|
+
}], accept: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], uploadTitle: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], uploadIcon: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], browseIcon: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], errorIcon: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], dropZoneText: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], browseButtonText: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], dropPlaceholderText: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], dropZoneHint: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], removeButtonText: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], uploadButtonText: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], retryButtonText: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], cancelButtonText: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], browseOrDragFiles: [{
|
|
156
|
+
type: Output
|
|
157
|
+
}], removeFiles: [{
|
|
158
|
+
type: Output
|
|
159
|
+
}], filesUpload: [{
|
|
160
|
+
type: Output
|
|
161
|
+
}], fileUploadValidation: [{
|
|
162
|
+
type: Output
|
|
163
|
+
}], uploadStatus: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], autoUpload: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}] } });
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQiw2QkFBNkIsRUFDN0IscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQiwrQkFBK0IsRUFDL0IsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixTQUFTLEVBRVQsZ0JBQWdCLEVBQ2hCLG1CQUFtQixHQUVwQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBT3JELE1BQU0sT0FBTywwQkFBMEI7SUFMdkM7UUFVRSxXQUFNLEdBQVcsbUJBQW1CLENBQUM7UUFHckMsZ0JBQVcsR0FBVyxvQkFBb0IsQ0FBQztRQUczQyxlQUFVLEdBQVcsbUJBQW1CLENBQUM7UUFHekMsZUFBVSxHQUFXLCtCQUErQixDQUFDO1FBR3JELGNBQVMsR0FBVywyQkFBMkIsQ0FBQztRQUdoRCxpQkFBWSxHQUFXLHFC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QkFBMEI7a0dBQTFCLDBCQUEwQiwrd0JBQ0gsVUFBVSw2QkN0QzlDLG1uSkEySUE7OzJGRHRHYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UscUJBQXFCOzhCQU0vQixXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJOUMsTUFBTTtzQkFETCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixNQUFNO2dCQU1QLFdBQVc7c0JBRFYsTUFBTTtnQkFNUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsb0JBQW9CO3NCQURuQixNQUFNO2dCQWdCSCxZQUFZO3NCQURmLEtBQUs7Z0JBWUYsVUFBVTtzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBERUZBVUxUX0JST1dTRV9CVVRUT05fVEVYVCxcbiAgREVGQVVMVF9DQU5DRUxfQlVUVE9OX1RFWFQsXG4gIERFRkFVTFRfRFJPUF9QTEFDRUhPTERFUl9URVhULFxuICBERUZBVUxUX0RST1BaT05FX0hJTlQsXG4gIERFRkFVTFRfRFJPUFpPTkVfVEVYVCxcbiAgREVGQVVMVF9GSUxFX0JST1dTRV9CVVRUT05fSUNPTixcbiAgREVGQVVMVF9BQ0NFUFRfVFlQRSxcbiAgREVGQVVMVF9NVUxUSV9GSUxFX1NVUFBPUlQsXG4gIERFRkFVTFRfUkVNT1ZFX0JVVFRPTl9URVhULFxuICBERUZBVUxUX1JFVFJZX0JVVFRPTl9URVhULFxuICBERUZBVUxUX1VQTE9BRF9CVVRUT05fVEVYVCxcbiAgREVGQVVMVF9VUExPQURfRkFJTFVSRV9JQ09OLFxuICBERUZBVUxUX1VQTE9BRF9JQ09OLFxuICBERUZBVUxUX1VQTE9BRF9USVRMRSxcbiAgZmlsZVNpemVzLFxuICBGaWxlVXBsb2FkRXJyb3IsXG4gIEZpbGVVcGxvYWRTdGF0dXMsXG4gIEZpbFVwbG9hZEVycm9yVHlwZXMsXG4gIFNlbGVjdGVkRmlsZSxcbn0gZnJvbSAnLi9maWxlLXVwbG9hZC5jb25zdGFudHMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IHZhbGlkRmlsZVR5cGVzIH0gZnJvbSAnLi9maWxlLXVwbG9hZC51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYW5pdGUtZmlsZS11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlRmlsZVVwbG9hZENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVEcm9wUmVmJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGZpbGVEcm9wUmVmITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBASW5wdXQoKVxuICBhY2NlcHQ6IHN0cmluZyA9IERFRkFVTFRfQUNDRVBUX1RZUEU7XG5cbiAgQElucHV0KClcbiAgdXBsb2FkVGl0bGU6IHN0cmluZyA9IERFRkFVTFRfVVBMT0FEX1RJVExFO1xuXG4gIEBJbnB1dCgpXG4gIHVwbG9hZEljb246IHN0cmluZyA9IERFRkFVTFRfVVBMT0FEX0lDT047XG5cbiAgQElucHV0KClcbiAgYnJvd3NlSWNvbjogc3RyaW5nID0gREVGQVVMVF9GSUxFX0JST1dTRV9CVVRUT05fSUNPTjtcblxuICBASW5wdXQoKVxuICBlcnJvckljb246IHN0cmluZyA9IERFRkFVTFRfVVBMT0FEX0ZBSUxVUkVfSUNPTjtcblxuICBASW5wdXQoKVxuICBkcm9wWm9uZVRleHQ6IHN0cmluZyA9IERFRkFVTFRfRFJPUFpPTkVfVEVYVDtcblxuICBASW5wdXQoKVxuICBicm93c2VCdXR0b25UZXh0OiBzdHJpbmcgPSBERUZBVUxUX0JST1dTRV9CVVRUT05fVEVYVDtcblxuICBASW5wdXQoKVxuICBkcm9wUGxhY2Vob2xkZXJUZXh0OiBzdHJpbmcgPSBERUZBVUxUX0RST1BfUExBQ0VIT0xERVJfVEVYVDtcblxuICBASW5wdXQoKVxuICBkcm9wWm9uZUhpbnQ6IHN0cmluZyA9IERFRkFVTFRfRFJPUFpPTkVfSElOVDtcblxuICBASW5wdXQoKVxuICByZW1vdmVCdXR0b25UZXh0OiBzdHJpbmcgPSBERUZBVUxUX1JFTU9WRV9CVVRUT05fVEVYVDtcblxuICBASW5wdXQoKVxuICB1cGxvYWRCdXR0b25UZXh0OiBzdHJpbmcgPSBERUZBVUxUX1VQTE9BRF9CVVRUT05fVEVYVDtcblxuICBASW5wdXQoKVxuICByZXRyeUJ1dHRvblRleHQ6IHN0cmluZyA9IERFRkFVTFRfUkVUUllfQlVUVE9OX1RFWFQ7XG5cbiAgQElucHV0KClcbiAgY2FuY2VsQnV0dG9uVGV4dDogc3RyaW5nID0gREVGQVVMVF9DQU5DRUxfQlVUVE9OX1RFWFQ7XG5cbiAgQE91dHB1dCgpXG4gIGJyb3dzZU9yRHJhZ0ZpbGVzOiBFdmVudEVtaXR0ZXI8U2VsZWN0ZWRGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBTZWxlY3RlZEZpbGVbXVxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlbW92ZUZpbGVzOiBFdmVudEVtaXR0ZXI8U2VsZWN0ZWRGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBTZWxlY3RlZEZpbGVbXVxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGZpbGVzVXBsb2FkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGZpbGVVcGxvYWRWYWxpZGF0aW9uOiBFdmVudEVtaXR0ZXI8RmlsZVVwbG9hZEVycm9yPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxGaWxlVXBsb2FkRXJyb3I+KCk7XG5cbiAgc2VsZWN0ZWRGaWxlczogRmlsZVtdID0gW107XG4gIHByZXZpZXdSZWFkeUZpbGVzOiBTZWxlY3RlZEZpbGVbXSA9IFtdO1xuICBpc0ZpbGVPbkRyb3B6b25lOiBib29sZWFuID0gZmFsc2U7XG4gIEZpbGVVcGxvYWRTdGF0dXMgPSBGaWxlVXBsb2FkU3RhdHVzO1xuICBmaWxlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsZURyb3BFcnJvclR5cGU6IHN0cmluZztcbiAgLy8gVE9ETzogdGhpcyBiZWNvbWVzIGlucHV0IHdoZW4gbXVsdGlwbGUgZmlsZSB1cGxvYWQgc3VwcG9ydCB3aXRoIGNhcm91c2VsIGNvbXBvbmVudCB3YXMgZG9uZS5cbiAgc3VwcG9ydE11bHRpRmlsZVVwbG9hZDogYm9vbGVhbiA9IERFRkFVTFRfTVVMVElfRklMRV9TVVBQT1JUO1xuXG4gIHByb3RlY3RlZCBfdXBsb2FkU3RhdHVzOiBGaWxlVXBsb2FkU3RhdHVzID0gRmlsZVVwbG9hZFN0YXR1cy5Ob3RTdGFydGVkO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB1cGxvYWRTdGF0dXMoKTogRmlsZVVwbG9hZFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuX3VwbG9hZFN0YXR1cztcbiAgfVxuXG4gIHNldCB1cGxvYWRTdGF0dXMoc3RhdHVzOiBGaWxlVXBsb2FkU3RhdHVzKSB7XG4gICAgdGhpcy5fdXBsb2FkU3RhdHVzID0gc3RhdHVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9hdXRvVXBsb2FkOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBnZXQgYXV0b1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0b1VwbG9hZDtcbiAgfVxuXG4gIHNldCBhdXRvVXBsb2FkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYXV0b1VwbG9hZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBmaWxlQnJvd3NlSGFuZGxlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlczogRmlsZVtdID0gQXJyYXkuZnJvbSh0YXJnZXQuZmlsZXMpO1xuXG4gICAgaWYgKCF2YWxpZEZpbGVUeXBlcyh0aGlzLmFjY2VwdCwgZmlsZXMpKSB7XG4gICAgICB0aGlzLmZpbGVVcGxvYWRWYWxpZGF0aW9uLmVtaXQoe1xuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICB0eXBlOiBGaWxVcGxvYWRFcnJvclR5cGVzLkV4dGVuc2lvbk5vdFN1cHBvcnRlZCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWxlRHJvcFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBbLi4udGhpcy5zZWxlY3RlZEZpbGVzLCAuLi5maWxlc107XG4gICAgdGhpcy5wcmV2aWV3UmVhZHlGaWxlcyA9IHRoaXMucHJlcGFyZVNlbGVjdGVkRmlsZXModGhpcy5zZWxlY3RlZEZpbGVzKTtcbiAgICB0aGlzLmJyb3dzZU9yRHJhZ0ZpbGVzLmVtaXQodGhpcy5wcmV2aWV3UmVhZHlGaWxlcyk7XG4gIH1cblxuICBmaWxlUmVtb3ZlSGFuZGxlcihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5wcmV2aWV3UmVhZHlGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgdGhpcy5wcmV2aWV3UmVhZHlGaWxlcy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHRoaXMuZmlsZURyb3BSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLnVwbG9hZFN0YXR1cyA9IEZpbGVVcGxvYWRTdGF0dXMuTm90U3RhcnRlZDtcbiAgICB9XG5cbiAgICB0aGlzLnJlbW92ZUZpbGVzLmVtaXQodGhpcy5wcmV2aWV3UmVhZHlGaWxlcyk7XG4gIH1cblxuICBvbkZpbGVzRHJvcEhhbmRsZXIoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICF0aGlzLnN1cHBvcnRNdWx0aUZpbGVVcGxvYWQgJiZcbiAgICAgICh0aGlzLnNlbGVjdGVkRmlsZXMubGVuZ3RoID09PSAxIHx8IGZpbGVzLmxlbmd0aCAhPT0gMSlcbiAgICApIHtcbiAgICAgIHRoaXMuZmlsZUVycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBmaWxlcztcblxuICAgIHRoaXMucHJldmlld1JlYWR5RmlsZXMgPSB0aGlzLnByZXBhcmVTZWxlY3RlZEZpbGVzKHRoaXMuc2VsZWN0ZWRGaWxlcyk7XG4gICAgdGhpcy5icm93c2VPckRyYWdGaWxlcy5lbWl0KHRoaXMucHJldmlld1JlYWR5RmlsZXMpO1xuICB9XG5cbiAgb25GaWxlT3ZlckRyb3B6b25lKGlzRmlsZU92ZXI6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRmlsZU9uRHJvcHpvbmUgPSBpc0ZpbGVPdmVyO1xuICB9XG5cbiAgb25GaWxlRHJvcEVycm9yKHZhbGlkYXRpb246IEZpbGVVcGxvYWRFcnJvcik6IHZvaWQge1xuICAgIHRoaXMuZmlsZUVycm9yID0gdmFsaWRhdGlvbi5pc0Vycm9yO1xuICAgIHRoaXMuZmlsZURyb3BFcnJvclR5cGUgPSB2YWxpZGF0aW9uLnR5cGU7XG4gIH1cblxuICBwcmVwYXJlU2VsZWN0ZWRGaWxlcyhmaWxlczogRmlsZVtdKTogU2VsZWN0ZWRGaWxlW10ge1xuICAgIHJldHVybiBmaWxlcy5tYXAoKGZpbGU6IEZpbGUpID0+ICh7XG4gICAgICBmaWxlLFxuICAgICAgcmVhZGFibGVTaXplOiB0aGlzLmZvcm1hdEJ5dGVzVG9SZWFkYWJsZVNpemUoZmlsZS5zaXplLCAyKSxcbiAgICAgIGltYWdlVXJsOiBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpLFxuICAgIH0pKTtcbiAgfVxuXG4gIHVwbG9hZEZpbGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZXNVcGxvYWQuZW1pdCgpO1xuICB9XG5cbiAgcmV0cnlVcGxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5maWxlc1VwbG9hZC5lbWl0KCk7XG4gIH1cblxuICBjYW5jZWxVcGxvYWQoKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByZXZpZXdSZWFkeUZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmZpbGVSZW1vdmVIYW5kbGVyKGkpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdEJ5dGVzVG9SZWFkYWJsZVNpemUoYnl0ZXM6IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgICByZXR1cm4gYDAgJHtmaWxlU2l6ZXNbMF19YDtcbiAgICB9XG5cbiAgICBjb25zdCBieXRlc1BlcktCID0gMTAyNDtcbiAgICBjb25zdCBkZWNpbWFsUG9pbnRzID0gZGVjaW1hbHMgPD0gMCA/IDAgOiBkZWNpbWFscyB8fCAyO1xuICAgIGNvbnN0IGV4cCA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coYnl0ZXNQZXJLQikpO1xuICAgIHJldHVybiBgJHtwYXJzZUZsb2F0KFxuICAgICAgKGJ5dGVzIC8gTWF0aC5wb3coYnl0ZXNQZXJLQiwgZXhwKSkudG9GaXhlZChkZWNpbWFsUG9pbnRzKVxuICAgICl9ICR7ZmlsZVNpemVzW2V4cF19YDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZpbGUtdXBsb2FkLXdyYXBwZXJcIj5cbiAgPGgyIGNsYXNzPVwiZmlsZS11cGxvYWQtdGl0bGVcIj57eyB1cGxvYWRUaXRsZSB9fTwvaDI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZpbGUtZHJvcHpvbmVcIlxuICAgIGdyYW5pdGVGaWxlRHJhZ0FuZERyb3BcbiAgICAoZHJvcHBlZEZpbGVzKT1cIm9uRmlsZXNEcm9wSGFuZGxlcigkZXZlbnQpXCJcbiAgICAoaXNGaWxlT3Zlcik9XCJvbkZpbGVPdmVyRHJvcHpvbmUoJGV2ZW50KVwiXG4gICAgKGZpbGVVcGxvYWRWYWxpZGF0aW9uKT1cIm9uRmlsZURyb3BFcnJvcigkZXZlbnQpXCJcbiAgICBbbXVsdGlGaWxlVXBsb2FkRW5hYmxlZF09XCJzdXBwb3J0TXVsdGlGaWxlVXBsb2FkXCJcbiAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgW2N1cnJlbnRGaWxlc109XCJzZWxlY3RlZEZpbGVzXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmaWxlLWlucHV0XCJcbiAgICAgICNmaWxlRHJvcFJlZlxuICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgdGl0bGU9XCJmaWxlVXBsb2FkXCJcbiAgICAgIChjaGFuZ2UpPVwiZmlsZUJyb3dzZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICBbbXVsdGlwbGVdPVwic3VwcG9ydE11bHRpRmlsZVVwbG9hZFwiXG4gICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS11cGxvYWQtYm9keVwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNkcm9wUGxhY2Vob2xkZXI+XG4gICAgICAgIDxwIGNsYXNzPVwiZHJvcC1hcmVhLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAge3sgZHJvcFBsYWNlaG9sZGVyVGV4dCB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIiFpc0ZpbGVPbkRyb3B6b25lICYmICFmaWxlRXJyb3I7IGVsc2UgZHJvcFBsYWNlaG9sZGVyXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZmlsZS11cGxvYWQtYnJvd3NlXCJcbiAgICAgICAgICAqbmdJZj1cInByZXZpZXdSZWFkeUZpbGVzLmxlbmd0aCA9PT0gMDsgZWxzZSBmaWxlUHJldmlld1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Z3Jhbml0ZS1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImZpbGUtdXBsb2FkLWljb25cIlxuICAgICAgICAgICAgW2ZvbnRJY29uXT1cInVwbG9hZEljb25cIlxuICAgICAgICAgID48L2dyYW5pdGUtaWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1zZWxlY3Rpb25cIj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cImZpbGUtdXBsb2FkLWJvZHktdGV4dFwiPnt7IGRyb3Bab25lVGV4dCB9fTwvaDI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmlsZS1zZWxlY3QtYnV0dG9uXCJcbiAgICAgICAgICAgICAgZ3Jhbml0ZUJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZURyb3BSZWYuY2xpY2soKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxncmFuaXRlLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJyb3dzZS1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgW2ZvbnRJY29uXT1cImJyb3dzZUljb25cIlxuICAgICAgICAgICAgICA+PC9ncmFuaXRlLWljb24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicm93c2UtYnV0dG9uLXRleHRcIj57eyBicm93c2VCdXR0b25UZXh0IH19PC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCAqbmdJZj1cImRyb3Bab25lSGludFwiIGNsYXNzPVwiZmlsZS11cGxvYWQtaGludFwiPlxuICAgICAgICAgICAge3sgZHJvcFpvbmVIaW50IH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlUHJldmlldz5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZpbGUtcHJldmlldy1jb250YWluZXJcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByZXZpZXdGaWxlIG9mIHByZXZpZXdSZWFkeUZpbGVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cImZpbGUtcHJldmlldy1saW5rXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICd1cGxvYWRpbmctaW4tcHJvZ3Jlc3MnOlxuICAgICAgICAgICAgICAgICAgdXBsb2FkU3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLkluUHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgJ3VwbG9hZC1mYWlsZWQnOiB1cGxvYWRTdGF0dXMgPT09IEZpbGVVcGxvYWRTdGF0dXMuRmFpbGVkXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbaHJlZl09XCJwcmV2aWV3RmlsZT8uaW1hZ2VVcmxcIlxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1wcmV2aWV3LWhvbGRlclwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgICAgICAgW3NyY109XCJwcmV2aWV3RmlsZT8uaW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgW2FsdF09XCJwcmV2aWV3RmlsZT8uZmlsZT8ubmFtZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiZmlsZS1uYW1lXCIgW3RpdGxlXT1cInByZXZpZXdGaWxlPy5maWxlPy5uYW1lXCI+XG4gICAgICAgICAgICAgICAge3sgcHJldmlld0ZpbGU/LmZpbGU/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImZpbGUtc2l6ZVwiPnt7IHByZXZpZXdGaWxlPy5yZWFkYWJsZVNpemUgfX08L3A+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInVwbG9hZFN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5JblByb2dyZXNzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGluZy1zcGlubmVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYWlsZWQtaWNvbi1jb250YWluZXJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInVwbG9hZFN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5GYWlsZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Z3Jhbml0ZS1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1pY29uXCJcbiAgICAgICAgICAgICAgICBbZm9udEljb25dPVwiZXJyb3JJY29uXCJcbiAgICAgICAgICAgICAgPjwvZ3Jhbml0ZS1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGdyYW5pdGVCdXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBGaWxlVXBsb2FkU3RhdHVzLkNvbXBsZXRlZCxcbiAgICAgICAgICAgICAgICAgIEZpbGVVcGxvYWRTdGF0dXMuTm90U3RhcnRlZFxuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXModXBsb2FkU3RhdHVzKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZVJlbW92ZUhhbmRsZXIoaSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyByZW1vdmVCdXR0b25UZXh0IH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZpbGUtdXBsb2FkLWZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb290ZXItY29udGFpbmVyXCIgKm5nSWY9XCJwcmV2aWV3UmVhZHlGaWxlcy5sZW5ndGggPiAwXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWF1dG9VcGxvYWQgJiYgdXBsb2FkU3RhdHVzID09PSBGaWxlVXBsb2FkU3RhdHVzLk5vdFN0YXJ0ZWRcIlxuICAgICAgICBncmFuaXRlUHJpbWFyeUJ1dHRvblxuICAgICAgICAoY2xpY2spPVwidXBsb2FkRmlsZXMoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHVwbG9hZEJ1dHRvblRleHQgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVwbG9hZFN0YXR1cyA9PT0gRmlsZVVwbG9hZFN0YXR1cy5GYWlsZWRcIj5cbiAgICAgICAgPGJ1dHRvbiBncmFuaXRlQnV0dG9uIChjbGljayk9XCJjYW5jZWxVcGxvYWQoKVwiPlxuICAgICAgICAgIHt7IGNhbmNlbEJ1dHRvblRleHQgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInJldHJ5LXVwbG9hZC1idXR0b25cIlxuICAgICAgICAgIGdyYW5pdGVQcmltYXJ5QnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInJldHJ5VXBsb2FkKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcmV0cnlCdXR0b25UZXh0IH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export const fileSizes = [
|
|
2
|
+
'Bytes',
|
|
3
|
+
'KB',
|
|
4
|
+
'MB',
|
|
5
|
+
'GB',
|
|
6
|
+
'TB',
|
|
7
|
+
'PB',
|
|
8
|
+
'EB',
|
|
9
|
+
'ZB',
|
|
10
|
+
'YB',
|
|
11
|
+
];
|
|
12
|
+
export var FileUploadStatus;
|
|
13
|
+
(function (FileUploadStatus) {
|
|
14
|
+
FileUploadStatus["NotStarted"] = "NotStarted";
|
|
15
|
+
FileUploadStatus["InProgress"] = "InProgress";
|
|
16
|
+
FileUploadStatus["Completed"] = "Completed";
|
|
17
|
+
FileUploadStatus["Failed"] = "Failed";
|
|
18
|
+
FileUploadStatus["Cancelled"] = "Cancelled";
|
|
19
|
+
})(FileUploadStatus || (FileUploadStatus = {}));
|
|
20
|
+
export var FilUploadErrorTypes;
|
|
21
|
+
(function (FilUploadErrorTypes) {
|
|
22
|
+
FilUploadErrorTypes["ExtensionNotSupported"] = "ExtensionNotSupported";
|
|
23
|
+
FilUploadErrorTypes["MultipleFilesNotSupported"] = "MultipleFilesNotSupported";
|
|
24
|
+
})(FilUploadErrorTypes || (FilUploadErrorTypes = {}));
|
|
25
|
+
export const DEFAULT_MULTI_FILE_SUPPORT = false;
|
|
26
|
+
export const DEFAULT_ACCEPT_TYPE = '*.*';
|
|
27
|
+
export const DEFAULT_UPLOAD_TITLE = 'Upload Files';
|
|
28
|
+
export const DEFAULT_UPLOAD_ICON = 'icon-upload';
|
|
29
|
+
export const DEFAULT_FILE_BROWSE_BUTTON_ICON = 'icon-folder-alt';
|
|
30
|
+
export const DEFAULT_UPLOAD_FAILURE_ICON = 'icon-error';
|
|
31
|
+
export const DEFAULT_DROPZONE_TEXT = 'Drop here or';
|
|
32
|
+
export const DEFAULT_BROWSE_BUTTON_TEXT = 'Browse';
|
|
33
|
+
export const DEFAULT_DROP_PLACEHOLDER_TEXT = 'Drop files here';
|
|
34
|
+
export const DEFAULT_DROPZONE_HINT = '';
|
|
35
|
+
export const DEFAULT_REMOVE_BUTTON_TEXT = 'Remove';
|
|
36
|
+
export const DEFAULT_UPLOAD_BUTTON_TEXT = 'Upload';
|
|
37
|
+
export const DEFAULT_RETRY_BUTTON_TEXT = 'Retry';
|
|
38
|
+
export const DEFAULT_CANCEL_BUTTON_TEXT = 'Cancel';
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFhO0lBQ2pDLE9BQU87SUFDUCxJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtDQUNMLENBQUM7QUFFRixNQUFNLENBQU4sSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQzFCLDZDQUF5QixDQUFBO0lBQ3pCLDZDQUF5QixDQUFBO0lBQ3pCLDJDQUF1QixDQUFBO0lBQ3ZCLHFDQUFpQixDQUFBO0lBQ2pCLDJDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFOVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBTTNCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBR1g7QUFIRCxXQUFZLG1CQUFtQjtJQUM3QixzRUFBK0MsQ0FBQTtJQUMvQyw4RUFBdUQsQ0FBQTtBQUN6RCxDQUFDLEVBSFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUc5QjtBQUVELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUNoRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBVyxLQUFLLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQVcsY0FBYyxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFXLGFBQWEsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBVyxpQkFBaUIsQ0FBQztBQUN6RSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBVyxZQUFZLENBQUM7QUFDaEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQVcsY0FBYyxDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFXLFFBQVEsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBVyxpQkFBaUIsQ0FBQztBQUN2RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBVyxFQUFFLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQVcsUUFBUSxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFXLFFBQVEsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBVyxPQUFPLENBQUM7QUFDekQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQVcsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTZWxlY3RlZEZpbGUge1xuICBmaWxlOiBGaWxlO1xuICByZWFkYWJsZVNpemU/OiBzdHJpbmc7XG4gIGltYWdlVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVVcGxvYWRFcnJvciB7XG4gIGlzRXJyb3I6IGJvb2xlYW47XG4gIHR5cGU6IEZpbFVwbG9hZEVycm9yVHlwZXM7XG59XG5cbmV4cG9ydCBjb25zdCBmaWxlU2l6ZXM6IHN0cmluZ1tdID0gW1xuICAnQnl0ZXMnLFxuICAnS0InLFxuICAnTUInLFxuICAnR0InLFxuICAnVEInLFxuICAnUEInLFxuICAnRUInLFxuICAnWkInLFxuICAnWUInLFxuXTtcblxuZXhwb3J0IGVudW0gRmlsZVVwbG9hZFN0YXR1cyB7XG4gIE5vdFN0YXJ0ZWQgPSAnTm90U3RhcnRlZCcsXG4gIEluUHJvZ3Jlc3MgPSAnSW5Qcm9ncmVzcycsXG4gIENvbXBsZXRlZCA9ICdDb21wbGV0ZWQnLFxuICBGYWlsZWQgPSAnRmFpbGVkJyxcbiAgQ2FuY2VsbGVkID0gJ0NhbmNlbGxlZCcsXG59XG5cbmV4cG9ydCBlbnVtIEZpbFVwbG9hZEVycm9yVHlwZXMge1xuICBFeHRlbnNpb25Ob3RTdXBwb3J0ZWQgPSAnRXh0ZW5zaW9uTm90U3VwcG9ydGVkJyxcbiAgTXVsdGlwbGVGaWxlc05vdFN1cHBvcnRlZCA9ICdNdWx0aXBsZUZpbGVzTm90U3VwcG9ydGVkJyxcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTVVMVElfRklMRV9TVVBQT1JUID0gZmFsc2U7XG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ0NFUFRfVFlQRTogc3RyaW5nID0gJyouKic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9VUExPQURfVElUTEU6IHN0cmluZyA9ICdVcGxvYWQgRmlsZXMnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVBMT0FEX0lDT046IHN0cmluZyA9ICdpY29uLXVwbG9hZCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9GSUxFX0JST1dTRV9CVVRUT05fSUNPTjogc3RyaW5nID0gJ2ljb24tZm9sZGVyLWFsdCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9VUExPQURfRkFJTFVSRV9JQ09OOiBzdHJpbmcgPSAnaWNvbi1lcnJvcic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9EUk9QWk9ORV9URVhUOiBzdHJpbmcgPSAnRHJvcCBoZXJlIG9yJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0JST1dTRV9CVVRUT05fVEVYVDogc3RyaW5nID0gJ0Jyb3dzZSc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9EUk9QX1BMQUNFSE9MREVSX1RFWFQ6IHN0cmluZyA9ICdEcm9wIGZpbGVzIGhlcmUnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRFJPUFpPTkVfSElOVDogc3RyaW5nID0gJyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9SRU1PVkVfQlVUVE9OX1RFWFQ6IHN0cmluZyA9ICdSZW1vdmUnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVBMT0FEX0JVVFRPTl9URVhUOiBzdHJpbmcgPSAnVXBsb2FkJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFVFJZX0JVVFRPTl9URVhUOiBzdHJpbmcgPSAnUmV0cnknO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ0FOQ0VMX0JVVFRPTl9URVhUOiBzdHJpbmcgPSAnQ2FuY2VsJztcbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { GraniteFileUploadComponent } from './file-upload.component';
|
|
4
|
+
import { GraniteButtonModule } from '../button/button.module';
|
|
5
|
+
import { GraniteFileDragAndDropDirective } from './directives/file-drag-and-drop.directive';
|
|
6
|
+
import { GraniteIconModule } from '../icon/icon.module';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class GraniteFileUploadModule {
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteFileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: GraniteFileUploadModule, declarations: [GraniteFileUploadComponent, GraniteFileDragAndDropDirective], imports: [CommonModule, GraniteButtonModule, GraniteIconModule], exports: [GraniteFileUploadComponent] }); }
|
|
11
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteFileUploadModule, imports: [CommonModule, GraniteButtonModule, GraniteIconModule] }); }
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteFileUploadModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
declarations: [GraniteFileUploadComponent, GraniteFileDragAndDropDirective],
|
|
17
|
+
exports: [GraniteFileUploadComponent],
|
|
18
|
+
imports: [CommonModule, GraniteButtonModule, GraniteIconModule],
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBT3hELE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjsrR0FBdkIsdUJBQXVCLGlCQUpuQiwwQkFBMEIsRUFBRSwrQkFBK0IsYUFFaEUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixhQURwRCwwQkFBMEI7K0dBR3pCLHVCQUF1QixZQUZ4QixZQUFZLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCOzsyRkFFbkQsdUJBQXVCO2tCQUxuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDBCQUEwQixFQUFFLCtCQUErQixDQUFDO29CQUMzRSxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDO2lCQUNoRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgR3Jhbml0ZUZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5tb2R1bGUnO1xuaW1wb3J0IHsgR3Jhbml0ZUZpbGVEcmFnQW5kRHJvcERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLWRyYWctYW5kLWRyb3AuZGlyZWN0aXZlJztcbmltcG9ydCB7IEdyYW5pdGVJY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0dyYW5pdGVGaWxlVXBsb2FkQ29tcG9uZW50LCBHcmFuaXRlRmlsZURyYWdBbmREcm9wRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0dyYW5pdGVGaWxlVXBsb2FkQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgR3Jhbml0ZUJ1dHRvbk1vZHVsZSwgR3Jhbml0ZUljb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlRmlsZVVwbG9hZE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function validFileTypes(mimeTypesStringToCheck, files) {
|
|
2
|
+
const supportedFileMimeTypes = mimeTypesStringToCheck
|
|
3
|
+
.split(',')
|
|
4
|
+
.map((ext) => ext.trim());
|
|
5
|
+
if (!files || files.length === 0) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
return files.every((file) => {
|
|
9
|
+
const fileType = file['type'];
|
|
10
|
+
return fileType && supportedFileMimeTypes.includes(fileType);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxjQUFjLENBQzVCLHNCQUE4QixFQUM5QixLQUFVO0lBRVYsTUFBTSxzQkFBc0IsR0FBRyxzQkFBc0I7U0FDbEQsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFNUIsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixPQUFPLFFBQVEsSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHZhbGlkRmlsZVR5cGVzPFQ+KFxuICBtaW1lVHlwZXNTdHJpbmdUb0NoZWNrOiBzdHJpbmcsXG4gIGZpbGVzOiBUW11cbik6IGJvb2xlYW4ge1xuICBjb25zdCBzdXBwb3J0ZWRGaWxlTWltZVR5cGVzID0gbWltZVR5cGVzU3RyaW5nVG9DaGVja1xuICAgIC5zcGxpdCgnLCcpXG4gICAgLm1hcCgoZXh0KSA9PiBleHQudHJpbSgpKTtcblxuICBpZiAoIWZpbGVzIHx8IGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBmaWxlcy5ldmVyeSgoZmlsZTogVCkgPT4ge1xuICAgIGNvbnN0IGZpbGVUeXBlID0gZmlsZVsndHlwZSddO1xuICAgIHJldHVybiBmaWxlVHlwZSAmJiBzdXBwb3J0ZWRGaWxlTWltZVR5cGVzLmluY2x1ZGVzKGZpbGVUeXBlKTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { LegendBaseComponent } from '../progress-bar-legend-base';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class GraniteProgressBarLegendComponent extends LegendBaseComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.legendItems = [];
|
|
9
|
+
}
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteProgressBarLegendComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: GraniteProgressBarLegendComponent, selector: "granite-progress-bar-legend", inputs: { legendItems: "legendItems" }, usesInheritance: true, ngImport: i0, template: "<ng-template>\n <div class=\"legend\" data-fnd=\"legend\">\n <div\n *ngFor=\"let item of legendItems\"\n class=\"legend-item\"\n data-fnd=\"legend-item\"\n >\n <div class=\"legend-label-text\">{{ item.label }}</div>\n <div\n [style.background-color]=\"item.backgroundColor\"\n class=\"color-box\"\n ></div>\n </div>\n </div>\n</ng-template>\n", styles: [".legend{display:flex;flex-direction:column;align-items:flex-start;padding:var(--granite-spacing-8);margin-top:var(--granite-spacing-4);gap:var(--granite-spacing-8);background-color:var(--granite-color-background-page);border:solid var(--granite-border-width-regular) var(--granite-color-border-contrast);border-radius:var(--granite-radius-s)}.legend-item{display:flex;align-items:center;justify-content:space-between;align-self:stretch;flex-wrap:wrap;padding:0 var(--granite-spacing-4);gap:var(--granite-spacing-8)}.legend-label-text{font-size:var(--granite-font-size-body-small);line-height:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);color:var(--granite-color-text);width:max-content}.color-box{width:8px;height:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteProgressBarLegendComponent, decorators: [{
|
|
14
|
+
type: Component,
|
|
15
|
+
args: [{ selector: 'granite-progress-bar-legend', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template>\n <div class=\"legend\" data-fnd=\"legend\">\n <div\n *ngFor=\"let item of legendItems\"\n class=\"legend-item\"\n data-fnd=\"legend-item\"\n >\n <div class=\"legend-label-text\">{{ item.label }}</div>\n <div\n [style.background-color]=\"item.backgroundColor\"\n class=\"color-box\"\n ></div>\n </div>\n </div>\n</ng-template>\n", styles: [".legend{display:flex;flex-direction:column;align-items:flex-start;padding:var(--granite-spacing-8);margin-top:var(--granite-spacing-4);gap:var(--granite-spacing-8);background-color:var(--granite-color-background-page);border:solid var(--granite-border-width-regular) var(--granite-color-border-contrast);border-radius:var(--granite-radius-s)}.legend-item{display:flex;align-items:center;justify-content:space-between;align-self:stretch;flex-wrap:wrap;padding:0 var(--granite-spacing-4);gap:var(--granite-spacing-8)}.legend-label-text{font-size:var(--granite-font-size-body-small);line-height:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);color:var(--granite-color-text);width:max-content}.color-box{width:8px;height:8px}\n"] }]
|
|
16
|
+
}], propDecorators: { legendItems: [{
|
|
17
|
+
type: Input
|
|
18
|
+
}] } });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLWxlZ2VuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXItbGVnZW5kL3Byb2dyZXNzLWJhci1sZWdlbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLWxlZ2VuZC9wcm9ncmVzcy1iYXItbGVnZW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFTbEUsTUFBTSxPQUFPLGlDQUFrQyxTQUFRLG1CQUFtQjtJQU4xRTs7UUFRRSxnQkFBVyxHQUFxQyxFQUFFLENBQUM7S0FDcEQ7OEdBSFksaUNBQWlDO2tHQUFqQyxpQ0FBaUMsa0lDVjlDLCtZQWVBOzsyRkRMYSxpQ0FBaUM7a0JBTjdDLFNBQVM7K0JBQ0UsNkJBQTZCLG1CQUd0Qix1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxXQUFXO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGVnZW5kQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL3Byb2dyZXNzLWJhci1sZWdlbmQtYmFzZSc7XG5pbXBvcnQgeyBHcmFuaXRlUHJvZ3Jlc3NMZWdlbmRJbnRlcmZhY2UgfSBmcm9tICcuLi9wcm9ncmVzcy1iYXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdncmFuaXRlLXByb2dyZXNzLWJhci1sZWdlbmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MtYmFyLWxlZ2VuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcm9ncmVzcy1iYXItbGVnZW5kLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVQcm9ncmVzc0JhckxlZ2VuZENvbXBvbmVudCBleHRlbmRzIExlZ2VuZEJhc2VDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBsZWdlbmRJdGVtczogR3Jhbml0ZVByb2dyZXNzTGVnZW5kSW50ZXJmYWNlW10gPSBbXTtcbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImxlZ2VuZFwiIGRhdGEtZm5kPVwibGVnZW5kXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGVnZW5kSXRlbXNcIlxuICAgICAgY2xhc3M9XCJsZWdlbmQtaXRlbVwiXG4gICAgICBkYXRhLWZuZD1cImxlZ2VuZC1pdGVtXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWxhYmVsLXRleHRcIj57eyBpdGVtLmxhYmVsIH19PC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIml0ZW0uYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgY2xhc3M9XCJjb2xvci1ib3hcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Directive, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
let legendPanelUid = 0;
|
|
4
|
+
export class LegendBaseComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.xPosition = 'after';
|
|
7
|
+
this.yPosition = 'below';
|
|
8
|
+
this.panelId = `granite-progress-bar-legend-panel-${legendPanelUid++}`;
|
|
9
|
+
}
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: LegendBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
11
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: LegendBaseComponent, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 }); }
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: LegendBaseComponent, decorators: [{
|
|
14
|
+
type: Directive,
|
|
15
|
+
args: [{}]
|
|
16
|
+
}], propDecorators: { templateRef: [{
|
|
17
|
+
type: ViewChild,
|
|
18
|
+
args: [TemplateRef]
|
|
19
|
+
}] } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLWxlZ2VuZC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLWxlZ2VuZC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTbEUsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBR3ZCLE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFJRSxjQUFTLEdBQWMsT0FBTyxDQUFDO1FBRS9CLGNBQVMsR0FBYyxPQUFPLENBQUM7UUFJdEIsWUFBTyxHQUFHLHFDQUFxQyxjQUFjLEVBQUUsRUFBRSxDQUFDO0tBSzVFOzhHQWRZLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHVFQUNuQixXQUFXOzsyRkFEWCxtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRTs4QkFFYSxXQUFXO3NCQUFsQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENsaWVudElucHV0SW50ZXJmYWNlLFxuICBDbGllbnRPdXRwdXRJbnRlcmZhY2UsXG59IGZyb20gJy4uL2NvcmUvY2xpZW50LWVudmlyb25tZW50JztcblxuZXhwb3J0IHR5cGUgUG9zaXRpb25YID0gJ2JlZm9yZScgfCAnYWZ0ZXInO1xuZXhwb3J0IHR5cGUgUG9zaXRpb25ZID0gJ2Fib3ZlJyB8ICdiZWxvdyc7XG5cbmxldCBsZWdlbmRQYW5lbFVpZCA9IDA7XG5cbkBEaXJlY3RpdmUoe30pXG5leHBvcnQgY2xhc3MgTGVnZW5kQmFzZUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHhQb3NpdGlvbjogUG9zaXRpb25YID0gJ2FmdGVyJztcblxuICB5UG9zaXRpb246IFBvc2l0aW9uWSA9ICdiZWxvdyc7XG5cbiAgZGlyZWN0aW9uOiBEaXJlY3Rpb247XG5cbiAgcmVhZG9ubHkgcGFuZWxJZCA9IGBncmFuaXRlLXByb2dyZXNzLWJhci1sZWdlbmQtcGFuZWwtJHtsZWdlbmRQYW5lbFVpZCsrfWA7XG5cbiAgY2xpZW50SW5wdXQ6IENsaWVudElucHV0SW50ZXJmYWNlO1xuXG4gIGNsaWVudE91dHB1dDogQ2xpZW50T3V0cHV0SW50ZXJmYWNlO1xufVxuIl19
|