ngx-bimplus-components 0.0.160 → 0.0.162
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/assets/images/default/Attachment_18_gray.svg +1 -0
- package/assets/images/default/Attachment_18_maincolor.svg +3 -0
- package/assets/images/default/Attachmentlink_18_gray.svg +7 -0
- package/assets/images/default/Attachmentlink_18_maincolor.svg +7 -0
- package/assets/images/default/Calendar_18.svg +4 -0
- package/assets/images/default/Calendar_18_disabled.svg +1 -0
- package/assets/images/default/Calendar_18_gray.svg +1 -0
- package/assets/images/default/Comments_18_gray.svg +1 -0
- package/assets/images/default/Comments_18_maincolor.svg +4 -0
- package/assets/images/default/Links_18_gray.svg +1 -0
- package/assets/images/default/Links_18_maincolor.svg +4 -0
- package/assets/images/default/Refresh_18_gray.svg +1 -0
- package/assets/images/default/bimplus_WebIcons_Cross_Disabled.svg +1 -0
- package/assets/images/default/ic_models.svg +3 -0
- package/assets/images/default/ic_models_maincolor.svg +3 -0
- package/assets/images/default/icn_grid_attachments.png +0 -0
- package/assets/images/default/icn_grid_hyperlinks.png +0 -0
- package/assets/images/default/progress-spinner.svg +1 -0
- package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +114 -0
- package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +38 -0
- package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +95 -0
- package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +32 -0
- package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +40 -5
- package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +5 -2
- package/esm2022/lib/components/bimplus-comment/IComment.mjs +2 -0
- package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +118 -0
- package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +5 -5
- package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +115 -7
- package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
- package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +1 -1
- package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.mjs +1 -1
- package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.mjs +64 -0
- package/esm2022/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.mjs +161 -0
- package/esm2022/lib/components/bimplus-input-date/bimplus-input-date.component.mjs +271 -0
- package/esm2022/lib/components/bimplus-input-number/bimplus-input-number.component.mjs +85 -0
- package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +92 -0
- package/esm2022/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.mjs +78 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +388 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.mjs +3 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.mjs +104 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +2 -0
- package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +6 -3
- package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
- package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +42 -4
- package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.interface.mjs +4 -2
- package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +77 -0
- package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +83 -0
- package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +31 -8
- package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +34 -8
- package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +1 -1
- package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.component.mjs +35 -0
- package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.service.mjs +35 -0
- package/esm2022/lib/components/bimplus-status-bar/statusBar.mjs +2 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +38 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +10 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +89 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +33 -0
- package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +83 -0
- package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +128 -0
- package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +376 -0
- package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +145 -0
- package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +36 -0
- package/esm2022/lib/components/object-preview/object-preview.component.mjs +284 -0
- package/esm2022/lib/components/object-preview/object-preview.interface.mjs +2 -0
- package/esm2022/lib/components/object-properties/object-properties.component.mjs +545 -0
- package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
- package/esm2022/lib/components/object-properties/object-properties.service.mjs +26 -0
- package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +129 -0
- package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +55 -0
- package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +48 -6
- package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
- package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +54 -10
- package/esm2022/lib/pipes/bit-converter.pipe.mjs +46 -0
- package/esm2022/lib/pipes/get-attribute-value-as-string.pipe.mjs +173 -0
- package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +156 -0
- package/esm2022/lib/pipes/round.pipe.mjs +20 -0
- package/esm2022/lib/services/decorators.service.mjs +65 -0
- package/esm2022/lib/utils/objectProperties.mjs +9 -0
- package/esm2022/lib/validators/double-enum.validator.mjs +20 -0
- package/esm2022/lib/validators/double.validator.mjs +23 -0
- package/esm2022/lib/validators/guid-enum.validator.mjs +20 -0
- package/esm2022/lib/validators/guid.validator.mjs +14 -0
- package/esm2022/lib/validators/integer.validator.mjs +23 -0
- package/esm2022/lib/validators/string-combobox.validator.mjs +20 -0
- package/esm2022/lib/validators/string-enum.validator.mjs +20 -0
- package/esm2022/public-api.mjs +22 -1
- package/fesm2022/ngx-bimplus-components.mjs +4618 -80
- package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
- package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +39 -0
- package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +33 -0
- package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +30 -0
- package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +8 -0
- package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +14 -3
- package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +7 -1
- package/lib/components/bimplus-comment/IComment.d.ts +4 -0
- package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +39 -0
- package/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.d.ts +16 -3
- package/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.d.ts +4 -0
- package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
- package/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.d.ts +3 -3
- package/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.d.ts +18 -0
- package/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.d.ts +41 -0
- package/lib/components/bimplus-input-date/bimplus-input-date.component.d.ts +46 -0
- package/lib/components/bimplus-input-number/bimplus-input-number.component.d.ts +26 -0
- package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +28 -0
- package/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.d.ts +22 -0
- package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +88 -0
- package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.d.ts +10 -0
- package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.d.ts +20 -0
- package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +11 -0
- package/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.d.ts +2 -1
- package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +12 -12
- package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
- package/lib/components/bimplus-object-structure/bimplus-object-structure.component.d.ts +5 -1
- package/lib/components/bimplus-object-structure/bimplus-object-structure.interface.d.ts +2 -0
- package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +29 -0
- package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +24 -0
- package/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.d.ts +8 -1
- package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +11 -1
- package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
- package/lib/components/bimplus-status-bar/bimplus-status-bar.component.d.ts +14 -0
- package/lib/components/bimplus-status-bar/bimplus-status-bar.service.d.ts +14 -0
- package/lib/components/bimplus-status-bar/statusBar.d.ts +4 -0
- package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +16 -0
- package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +18 -0
- package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +36 -0
- package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +15 -0
- package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +24 -0
- package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +42 -0
- package/lib/components/links-to-documents/links-to-documents.component.d.ts +69 -0
- package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +32 -0
- package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +15 -0
- package/lib/components/object-preview/object-preview.component.d.ts +45 -0
- package/lib/components/object-preview/object-preview.interface.d.ts +5 -0
- package/lib/components/object-properties/object-properties.component.d.ts +79 -0
- package/lib/components/object-properties/object-properties.interface.d.ts +22 -0
- package/lib/components/object-properties/object-properties.service.d.ts +12 -0
- package/lib/components/object-properties-group/object-properties-group.component.d.ts +30 -0
- package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +14 -0
- package/lib/components/object-properties-header/object-properties-header.component.d.ts +13 -4
- package/lib/components/object-properties-header/object-properties-header.interface.d.ts +8 -0
- package/lib/components/resizable-panel/resizable-panel.component.d.ts +12 -3
- package/lib/pipes/bit-converter.pipe.d.ts +17 -0
- package/lib/pipes/get-attribute-value-as-string.pipe.d.ts +35 -0
- package/lib/pipes/get-attribute-value.pipe.d.ts +35 -0
- package/lib/pipes/round.pipe.d.ts +7 -0
- package/lib/services/decorators.service.d.ts +12 -0
- package/lib/utils/objectProperties.d.ts +2 -0
- package/lib/validators/double-enum.validator.d.ts +2 -0
- package/lib/validators/double.validator.d.ts +2 -0
- package/lib/validators/guid-enum.validator.d.ts +2 -0
- package/lib/validators/guid.validator.d.ts +2 -0
- package/lib/validators/integer.validator.d.ts +2 -0
- package/lib/validators/string-combobox.validator.d.ts +2 -0
- package/lib/validators/string-enum.validator.d.ts +2 -0
- package/package.json +14 -4
- package/public-api.d.ts +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"><path d="M12 3v12H6V3h2v10h2V2.4C10 1.6 9.4 1 8.6 1H5.4C4.6 1 4 1.6 4 2.4v13.3c0 .7.6 1.3 1.4 1.3h7.3c.8 0 1.4-.6 1.4-1.4V3H12z" fill="#444"/></svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M4 8H8V6H4V8Z" fill="#444444"/>
|
|
3
|
+
<path d="M4 3V5H12V3H4Z" fill="#444444"/>
|
|
4
|
+
<path d="M4 11H8V9H4V11Z" fill="#444444"/>
|
|
5
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M1 0H15V10H13V2H3V16H10V18H1V0Z" fill="#444444"/>
|
|
6
|
+
<path d="M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z" fill="#444444"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M4 8H8V6H4V8Z" fill="#0066CC"/>
|
|
3
|
+
<path d="M4 3V5H12V3H4Z" fill="#0066CC"/>
|
|
4
|
+
<path d="M4 11H8V9H4V11Z" fill="#0066CC"/>
|
|
5
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M1 0H15V10H13V2H3V16H10V18H1V0Z" fill="#0066CC"/>
|
|
6
|
+
<path d="M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z" fill="#0066CC"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.0005 3V1H11.0005V4H13.0005V3ZM7.70049 13H9.00049L11.0005 8H7.00049V9H9.30049L7.70049 13ZM7.00049 3V1H5.00049V4H7.00049V3Z" fill="#0066CC"/>
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.0005 3V5H10.0005V3H8.00049V5H4.00049V3H2.00049V16H16.0005V3H14.0005ZM14.0005 14H4.00049V7H14.0005V14Z" fill="#0066CC"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 18 18" xml:space="preserve"><style>.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#bababa}</style><path class="st0" d="M13 3V1h-2v3h2zM7.7 13H9l2-5H7v1h2.3zM7 3V1H5v3h2z"/><path class="st0" d="M14 3v2h-4V3H8v2H4V3H2v13h14V3h-2zm0 11H4V7h10v7z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 18 18" xml:space="preserve"><style>.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#444}</style><path class="st0" d="M13 3V1h-2v3h2zM7.7 13H9l2-5H7v1h2.3zM7 3V1H5v3h2z"/><path class="st0" d="M14 3v2h-4V3H8v2H4V3H2v13h14V3h-2zm0 11H4V7h10v7z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 18 18" xml:space="preserve"><style>.st0{fill:#444}</style><path class="st0" d="M1 1v12h2v5l4-5h10V1H1zm14 10H3V3h12v8z"/><path class="st0" d="M5 7h2v2H5zm3 0h2v2H8zm3 0h2v2h-2z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 18 18" xml:space="preserve"><style>.st0{fill:#444}</style><path class="st0" d="M16.7 4.2l-1.3-1.3c-1.2-1.2-3.2-1.2-4.4 0l-.6.6 1.1 1.1.7-.6c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-4.1 4.1c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.5-.6-1.4-.1-2L6.9 7.1c-1.1 1.2-1.1 3.1.1 4.3l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l4.1-4.1c1.1-1.2 1.1-3.2-.1-4.4z"/><path class="st0" d="M5.8 13c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.6-.6-1.5 0-2.1l4.1-4.1c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-.6.6 1.1 1.1.6-.6c1.2-1.2 1.2-3.2 0-4.4L9.8 4.3c-1.2-1.2-3.2-1.2-4.4 0L1.3 8.4c-1.2 1.2-1.2 3.2 0 4.4l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l.6-.6-1.1-1.1-.7.6z"/></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M16.7 4.2L15.4 2.9C14.2 1.7 12.2 1.7 11 2.9L10.4 3.5L11.5 4.6L12.2 4C12.8 3.4 13.7 3.4 14.3 4L15.6 5.3C16.2 5.9 16.2 6.8 15.6 7.4L11.5 11.5C10.9 12.1 10 12.1 9.4 11.5L8.1 10.2C7.5 9.7 7.5 8.8 8 8.2L6.9 7.1C5.8 8.3 5.8 10.2 7 11.4L8.3 12.7C9.5 13.9 11.5 13.9 12.7 12.7L16.8 8.6C17.9 7.4 17.9 5.4 16.7 4.2Z" fill="#0066CC"/>
|
|
3
|
+
<path d="M5.8 13C5.2 13.6 4.3 13.6 3.7 13L2.4 11.7C1.8 11.1 1.8 10.2 2.4 9.60002L6.5 5.50002C7.1 4.90002 8 4.90002 8.6 5.50002L9.9 6.80002C10.5 7.40002 10.5 8.30002 9.9 8.90002L9.3 9.50002L10.4 10.6L11 10C12.2 8.80002 12.2 6.80002 11 5.60002L9.8 4.30002C8.6 3.10002 6.6 3.10002 5.4 4.30002L1.3 8.40002C0.1 9.60002 0.1 11.6 1.3 12.8L2.6 14.1C3.8 15.3 5.8 15.3 7 14.1L7.6 13.5L6.5 12.4L5.8 13Z" fill="#0066CC"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"><path d="M8.9 14.3c-1.8 0-3.5-.9-4.5-2.4L6.3 10H2v4.2l1.3-1.1C4.5 14.9 6.6 16 9 16c3.6 0 6.7-2.5 7-5.9h-1.8c-.3 2.3-2.7 4.2-5.3 4.2zM14.8 5C13.6 3.1 11.4 2 9 2 5.4 2 2.4 4.6 2.1 8h1.7C4.3 5.6 6.5 3.7 9 3.7c1.8 0 3.6 1 4.6 2.4l-2 1.9H16V3.7L14.8 5z" fill="#444"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="18" height="18" xml:space="preserve"><path fill-rule="evenodd" clip-rule="evenodd" fill="#d3d3d3" d="M13.5 5.4L12.1 4 8.5 7.6 4.9 4 3.5 5.4 7.1 9l-3.6 3.6L4.9 14l3.6-3.6 3.6 3.6 1.4-1.4L9.9 9z"/></svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.5 18L16 13.2V4.89999L8.5 0L1 4.89999V13.2L8.5 18ZM14 7.2L9.4375 10V14.9L14 12V7.2ZM3 12L7.5625 14.9V10L3 7.2V12ZM3.77007 5.28469L8.5 2.39999L13.2299 5.28469L8.5 8.29999L3.77007 5.28469Z" fill="#444444"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.5 18L16 13.2V4.89999L8.5 0L1 4.89999V13.2L8.5 18ZM14 7.2L9.4375 10V14.9L14 12V7.2ZM3 12L7.5625 14.9V10L3 7.2V12ZM3.77007 5.28469L8.5 2.39999L13.2299 5.28469L8.5 8.29999L3.77007 5.28469Z" fill="#0066CC"/>
|
|
3
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg class="lds-spinner" width="200" height="200" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" style="background:0 0"><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.9166666666666666s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(30 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.8333333333333334s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(60 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.75s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(90 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.6666666666666666s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(120 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.5833333333333334s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(150 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.5s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(180 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.4166666666666667s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(210 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.3333333333333333s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(240 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.25s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(270 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.16666666666666666s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(300 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.08333333333333333s" repeatCount="indefinite"/></rect><rect x="47" y="17.5" rx="9.4" ry="3.5" width="6" height="25" fill="#fff" transform="rotate(330 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="0s" repeatCount="indefinite"/></rect></svg>
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output, signal, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { BimplusButtonsRowComponent } from '../bimplus-buttons-row/bimplus-buttons-row.component';
|
|
5
|
+
import { BimplusAttachmentItemComponent } from './components/bimplus-attachment-item/bimplus-attachment-item.component';
|
|
6
|
+
import { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component';
|
|
7
|
+
import { BIMPLUS_ATTACHMENTS_CONFIG, } from './bimplus-attachments.interface';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ngx-translate/core";
|
|
10
|
+
export class BimplusAttachmentsComponent extends BimplusLocalizedWidgetComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.api = null;
|
|
14
|
+
/** Attribute for attachments which were saved to server. */
|
|
15
|
+
this.attachments = [];
|
|
16
|
+
/** Attribute to set if should button display or no. */
|
|
17
|
+
this.listOnly = false;
|
|
18
|
+
this.deleteAttachment = new EventEmitter();
|
|
19
|
+
this.addAttachment = new EventEmitter();
|
|
20
|
+
this.getAttachment = new EventEmitter();
|
|
21
|
+
/** Configuration token. */
|
|
22
|
+
this.config = inject(BIMPLUS_ATTACHMENTS_CONFIG, {
|
|
23
|
+
optional: true,
|
|
24
|
+
});
|
|
25
|
+
/** Attachments buttons. */
|
|
26
|
+
this.buttons = [
|
|
27
|
+
{
|
|
28
|
+
id: 'add-attachment',
|
|
29
|
+
title: this.translateService.instant('_Add attachment'),
|
|
30
|
+
tooltip: this.translateService.instant('_Add attachment'),
|
|
31
|
+
disabled: false,
|
|
32
|
+
buttonStyle: 'primary',
|
|
33
|
+
type: 'file',
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
/** Width size of file name line. */
|
|
37
|
+
this.attachmentListWidth = signal(undefined);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Will open window to select File.
|
|
41
|
+
* @return void
|
|
42
|
+
* @public
|
|
43
|
+
*/
|
|
44
|
+
open() {
|
|
45
|
+
this.fileInput.nativeElement.click();
|
|
46
|
+
}
|
|
47
|
+
ngAfterViewInit() {
|
|
48
|
+
this.createResizeObserver();
|
|
49
|
+
this.resizeObserver.observe(this.attachmentListRef.nativeElement);
|
|
50
|
+
}
|
|
51
|
+
ngOnDestroy() {
|
|
52
|
+
this.resizeObserver.unobserve(this.attachmentListRef.nativeElement);
|
|
53
|
+
}
|
|
54
|
+
onFileChanged(files, inputElement) {
|
|
55
|
+
let filesArray = [];
|
|
56
|
+
if (files instanceof FileList) {
|
|
57
|
+
filesArray = Array.from(files);
|
|
58
|
+
}
|
|
59
|
+
else if (files instanceof Event) {
|
|
60
|
+
const input = files.target;
|
|
61
|
+
if (input?.files) {
|
|
62
|
+
filesArray = Array.from(input.files);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
for (const file of filesArray) {
|
|
66
|
+
if (file instanceof File) {
|
|
67
|
+
this.addAttachment.emit(file);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// reset value to be able select same value again
|
|
71
|
+
if (inputElement) {
|
|
72
|
+
inputElement.value = '';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
createResizeObserver() {
|
|
76
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
77
|
+
const { width } = entries[0].contentRect;
|
|
78
|
+
this.attachmentListWidth.set(width);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusAttachmentsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BimplusAttachmentsComponent, isStandalone: true, selector: "lib-bimplus-attachments", inputs: { api: "api", attachments: "attachments", closeIconTemplate: "closeIconTemplate", listOnly: ["listOnly", "listOnly", booleanAttribute] }, outputs: { deleteAttachment: "deleteAttachment", addAttachment: "addAttachment", getAttachment: "getAttachment" }, viewQueries: [{ propertyName: "attachmentListRef", first: true, predicate: ["attachmentListRef"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"bim-attachments\">\r\n @if (listOnly) {\r\n <input #fileInput hidden type=\"file\" (change)=\"onFileChanged($event, fileInput)\" multiple>\r\n } @else {\r\n <lib-bimplus-buttons-row [items]=\"config?.buttons ?? buttons\" (fileChanged)=\"onFileChanged($event)\" [isMultiple]=\"true\"/>\r\n }\r\n\r\n @if (listOnly) {\r\n <section #attachmentListRef class=\"bim-attachments-list\">\r\n @if (!attachments.length) {\r\n @if (config?.showNoAttachmentsFound) {\r\n <div\r\n data-test=\"no-attachments\"\r\n class=\"bim-attachments-list-empty\"\r\n >{{ '_No attachments found' | translate }}</div>\r\n }\r\n } @else {\r\n @for (attachment of attachments; track attachment.id) {\r\n <lib-bimplus-attachment-item\r\n [closeIconTemplate]=\"closeIconTemplate\"\r\n [attr.data-test]=\"attachment.id\"\r\n (deleteAttachment)=\"deleteAttachment.emit($event)\"\r\n (getAttachment)=\"getAttachment.emit($event)\"\r\n [parentWidth]=\"attachmentListWidth()\"\r\n [attachment]=\"attachment\"\r\n />\r\n }\r\n }\r\n </section>\r\n } @else {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <section #attachmentListRef class=\"bim-attachments-list\">\r\n @if (!attachments.length) {\r\n @if (config?.showNoAttachmentsFound) {\r\n <div\r\n data-test=\"no-attachments\"\r\n class=\"bim-attachments-list-empty\"\r\n >{{ '_No attachments found' | translate }}</div>\r\n }\r\n } @else {\r\n @for (attachment of attachments; track attachment.id) {\r\n <lib-bimplus-attachment-item\r\n [closeIconTemplate]=\"closeIconTemplate\"\r\n [attr.data-test]=\"attachment.id\"\r\n (deleteAttachment)=\"deleteAttachment.emit($event)\"\r\n (getAttachment)=\"getAttachment.emit($event)\"\r\n [parentWidth]=\"attachmentListWidth()\"\r\n [attachment]=\"attachment\"\r\n />\r\n }\r\n }\r\n </section>\r\n </lib-bimplus-scrollable-container>\r\n </div> \r\n }\r\n</div>\r\n", styles: ["lib-bimplus-buttons-row{--button-row-margin-top: 0;--button-row-margin-right: 0;--button-row-margin-bottom: 1.4rem;--button-row-margin-left: 0}lib-bimplus-scrollable-container{--scrollable-container-paddin-right: 0}.bim-attachments{display:flex;flex:1;flex-direction:column}.bim-attachments .scrollable-content-container{position:relative;flex:1}.bim-attachments .scrollable-content-container lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;width:100%}.bim-attachments-list{color:#84888c;cursor:pointer}.bim-attachments-list-empty{padding:2.5rem .5rem;color:var(--details-controls-details-not-found-text-color);text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BimplusButtonsRowComponent, selector: "lib-bimplus-buttons-row", inputs: ["items", "isMultiple", "canUpdateObject"], outputs: ["fileChanged", "buttonClicked"] }, { kind: "component", type: BimplusAttachmentItemComponent, selector: "lib-bimplus-attachment-item", inputs: ["closeIconTemplate", "attachment", "parentWidth"], outputs: ["deleteAttachment", "getAttachment"] }, { kind: "component", type: BimplusScrollableContainerComponent, selector: "lib-bimplus-scrollable-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusAttachmentsComponent, decorators: [{
|
|
85
|
+
type: Component,
|
|
86
|
+
args: [{ selector: 'lib-bimplus-attachments', standalone: true, imports: [
|
|
87
|
+
TranslateModule,
|
|
88
|
+
BimplusButtonsRowComponent,
|
|
89
|
+
BimplusAttachmentItemComponent,
|
|
90
|
+
BimplusScrollableContainerComponent
|
|
91
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, template: "<div class=\"bim-attachments\">\r\n @if (listOnly) {\r\n <input #fileInput hidden type=\"file\" (change)=\"onFileChanged($event, fileInput)\" multiple>\r\n } @else {\r\n <lib-bimplus-buttons-row [items]=\"config?.buttons ?? buttons\" (fileChanged)=\"onFileChanged($event)\" [isMultiple]=\"true\"/>\r\n }\r\n\r\n @if (listOnly) {\r\n <section #attachmentListRef class=\"bim-attachments-list\">\r\n @if (!attachments.length) {\r\n @if (config?.showNoAttachmentsFound) {\r\n <div\r\n data-test=\"no-attachments\"\r\n class=\"bim-attachments-list-empty\"\r\n >{{ '_No attachments found' | translate }}</div>\r\n }\r\n } @else {\r\n @for (attachment of attachments; track attachment.id) {\r\n <lib-bimplus-attachment-item\r\n [closeIconTemplate]=\"closeIconTemplate\"\r\n [attr.data-test]=\"attachment.id\"\r\n (deleteAttachment)=\"deleteAttachment.emit($event)\"\r\n (getAttachment)=\"getAttachment.emit($event)\"\r\n [parentWidth]=\"attachmentListWidth()\"\r\n [attachment]=\"attachment\"\r\n />\r\n }\r\n }\r\n </section>\r\n } @else {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <section #attachmentListRef class=\"bim-attachments-list\">\r\n @if (!attachments.length) {\r\n @if (config?.showNoAttachmentsFound) {\r\n <div\r\n data-test=\"no-attachments\"\r\n class=\"bim-attachments-list-empty\"\r\n >{{ '_No attachments found' | translate }}</div>\r\n }\r\n } @else {\r\n @for (attachment of attachments; track attachment.id) {\r\n <lib-bimplus-attachment-item\r\n [closeIconTemplate]=\"closeIconTemplate\"\r\n [attr.data-test]=\"attachment.id\"\r\n (deleteAttachment)=\"deleteAttachment.emit($event)\"\r\n (getAttachment)=\"getAttachment.emit($event)\"\r\n [parentWidth]=\"attachmentListWidth()\"\r\n [attachment]=\"attachment\"\r\n />\r\n }\r\n }\r\n </section>\r\n </lib-bimplus-scrollable-container>\r\n </div> \r\n }\r\n</div>\r\n", styles: ["lib-bimplus-buttons-row{--button-row-margin-top: 0;--button-row-margin-right: 0;--button-row-margin-bottom: 1.4rem;--button-row-margin-left: 0}lib-bimplus-scrollable-container{--scrollable-container-paddin-right: 0}.bim-attachments{display:flex;flex:1;flex-direction:column}.bim-attachments .scrollable-content-container{position:relative;flex:1}.bim-attachments .scrollable-content-container lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;width:100%}.bim-attachments-list{color:#84888c;cursor:pointer}.bim-attachments-list-empty{padding:2.5rem .5rem;color:var(--details-controls-details-not-found-text-color);text-align:center}\n"] }]
|
|
92
|
+
}], propDecorators: { api: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], attachments: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], closeIconTemplate: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], listOnly: [{
|
|
99
|
+
type: Input,
|
|
100
|
+
args: [{ transform: booleanAttribute }]
|
|
101
|
+
}], attachmentListRef: [{
|
|
102
|
+
type: ViewChild,
|
|
103
|
+
args: ['attachmentListRef']
|
|
104
|
+
}], fileInput: [{
|
|
105
|
+
type: ViewChild,
|
|
106
|
+
args: ['fileInput']
|
|
107
|
+
}], deleteAttachment: [{
|
|
108
|
+
type: Output
|
|
109
|
+
}], addAttachment: [{
|
|
110
|
+
type: Output
|
|
111
|
+
}], getAttachment: [{
|
|
112
|
+
type: Output
|
|
113
|
+
}] } });
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1hdHRhY2htZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iaW1wbHVzLWF0dGFjaG1lbnRzL2JpbXBsdXMtYXR0YWNobWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1hdHRhY2htZW50cy9iaW1wbHVzLWF0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDakgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRWxHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHdFQUF3RSxDQUFBO0FBQzVILE9BQU8sRUFFTCwwQkFBMEIsR0FDM0IsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBZ0J6QyxNQUFNLE9BQU8sMkJBQ1gsU0FBUSwrQkFBK0I7SUFmekM7O1FBa0JXLFFBQUcsR0FBdUIsSUFBSSxDQUFDO1FBQ3hDLDREQUE0RDtRQUNuRCxnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFFeEMsdURBQXVEO1FBQ2YsYUFBUSxH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QVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLDBCQUEwQjt3QkFDMUIsOEJBQThCO3dCQUM5QixtQ0FBbUM7cUJBQ3BDLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxTQUFTOzhCQU1qQyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRWtDLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ04saUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDTixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1osZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBib29sZWFuQXR0cmlidXRlLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0L2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQmltcGx1c0J1dHRvbnNSb3dDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLWJ1dHRvbnMtcm93L2JpbXBsdXMtYnV0dG9ucy1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0J1dHRvblJvd0l0ZW0gfSBmcm9tICcuLi9iaW1wbHVzLWJ1dHRvbnMtcm93L2JpbXBsdXMtYnV0dG9ucy1yb3cuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmltcGx1c0F0dGFjaG1lbnRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JpbXBsdXMtYXR0YWNobWVudC1pdGVtL2JpbXBsdXMtYXR0YWNobWVudC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNTY3JvbGxhYmxlQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lci9iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyLmNvbXBvbmVudCdcclxuaW1wb3J0IHtcclxuICBBdHRhY2htZW50LFxyXG4gIEJJTVBMVVNfQVRUQUNITUVOVFNfQ09ORklHLFxyXG59IGZyb20gJy4vYmltcGx1cy1hdHRhY2htZW50cy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgKiBhcyBXZWJTZGsgZnJvbSAnYmltcGx1cy13ZWJzZGsnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaW1wbHVzLWF0dGFjaG1lbnRzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEJpbXBsdXNCdXR0b25zUm93Q29tcG9uZW50LFxyXG4gICAgQmltcGx1c0F0dGFjaG1lbnRJdGVtQ29tcG9uZW50LFxyXG4gICAgQmltcGx1c1Njcm9sbGFibGVDb250YWluZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaW1wbHVzLWF0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmltcGx1cy1hdHRhY2htZW50cy5jb21wb25lbnQubGVzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c0F0dGFjaG1lbnRzQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gIEBJbnB1dCgpIGFwaSA6IFdlYlNkay5BcGkgfCBudWxsID0gbnVsbDtcclxuICAvKiogQXR0cmlidXRlIGZvciBhdHRhY2htZW50cyB3aGljaCB3ZXJlIHNhdmVkIHRvIHNlcnZlci4gKi9cclxuICBASW5wdXQoKSBhdHRhY2htZW50czogQXR0YWNobWVudFtdID0gW107XHJcbiAgQElucHV0KCkgY2xvc2VJY29uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICAvKiogQXR0cmlidXRlIHRvIHNldCBpZiBzaG91bGQgYnV0dG9uIGRpc3BsYXkgb3Igbm8uICovXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGxpc3RPbmx5ID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnYXR0YWNobWVudExpc3RSZWYnKSBhdHRhY2htZW50TGlzdFJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgQE91dHB1dCgpIGRlbGV0ZUF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEF0dGFjaG1lbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGFkZEF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XHJcbiAgQE91dHB1dCgpIGdldEF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEF0dGFjaG1lbnQ+KCk7XHJcblxyXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcclxuICAvKiogQ29uZmlndXJhdGlvbiB0b2tlbi4gKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEJJTVBMVVNfQVRUQUNITUVOVFNfQ09ORklHLCB7XHJcbiAgICBvcHRpb25hbDogdHJ1ZSxcclxuICB9KTtcclxuICAvKiogQXR0YWNobWVudHMgYnV0dG9ucy4gKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYnV0dG9uczogQmltcGx1c0J1dHRvblJvd0l0ZW1bXSA9IFtcclxuICAgIHtcclxuICAgICAgaWQ6ICdhZGQtYXR0YWNobWVudCcsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0FkZCBhdHRhY2htZW50JyksXHJcbiAgICAgIHRvb2x0aXA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQWRkIGF0dGFjaG1lbnQnKSxcclxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBidXR0b25TdHlsZTogJ3ByaW1hcnknLFxyXG4gICAgICB0eXBlOiAnZmlsZScsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgLyoqIFdpZHRoIHNpemUgb2YgZmlsZSBuYW1lIGxpbmUuICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGF0dGFjaG1lbnRMaXN0V2lkdGggPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPihcclxuICAgIHVuZGVmaW5lZFxyXG4gICk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdpbGwgb3BlbiB3aW5kb3cgdG8gc2VsZWN0IEZpbGUuXHJcbiAgICogQHJldHVybiB2b2lkXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlUmVzaXplT2JzZXJ2ZXIoKTtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmF0dGFjaG1lbnRMaXN0UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy5hdHRhY2htZW50TGlzdFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkZpbGVDaGFuZ2VkKGZpbGVzOiBGaWxlW10gfCBFdmVudCwgaW5wdXRFbGVtZW50PzogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xyXG4gICAgbGV0IGZpbGVzQXJyYXk6IEZpbGVbXSA9IFtdO1xyXG4gICAgaWYoZmlsZXMgaW5zdGFuY2VvZiBGaWxlTGlzdCl7XHJcbiAgICAgIGZpbGVzQXJyYXkgPSBBcnJheS5mcm9tKGZpbGVzKTtcclxuICAgIH0gZWxzZSBpZihmaWxlcyBpbnN0YW5jZW9mIEV2ZW50KXtcclxuICAgICAgY29uc3QgaW5wdXQgPSBmaWxlcy50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgaWYgKGlucHV0Py5maWxlcykgeyAgICAgICAgXHJcbiAgICAgICAgZmlsZXNBcnJheSA9IEFycmF5LmZyb20oaW5wdXQuZmlsZXMpOyBcclxuICAgICAgfVxyXG4gICAgfSAgICAgIFxyXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzQXJyYXkpIHtcclxuICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZEF0dGFjaG1lbnQuZW1pdChmaWxlKTtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfSAgICAgIFxyXG4gICAgLy8gcmVzZXQgdmFsdWUgdG8gYmUgYWJsZSBzZWxlY3Qgc2FtZSB2YWx1ZSBhZ2FpblxyXG4gICAgaWYgKGlucHV0RWxlbWVudCkge1xyXG4gICAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSAnJ1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVSZXNpemVPYnNlcnZlcigpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgICAgY29uc3QgeyB3aWR0aCB9OiBET01SZWN0UmVhZE9ubHkgPSBlbnRyaWVzWzBdLmNvbnRlbnRSZWN0O1xyXG4gICAgICB0aGlzLmF0dGFjaG1lbnRMaXN0V2lkdGguc2V0KHdpZHRoKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYmltLWF0dGFjaG1lbnRzXCI+XHJcbiAgQGlmIChsaXN0T25seSkge1xyXG4gICAgPGlucHV0ICNmaWxlSW5wdXQgaGlkZGVuIHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2VkKCRldmVudCwgZmlsZUlucHV0KVwiIG11bHRpcGxlPlxyXG4gIH0gQGVsc2Uge1xyXG4gICAgPGxpYi1iaW1wbHVzLWJ1dHRvbnMtcm93IFtpdGVtc109XCJjb25maWc/LmJ1dHRvbnMgPz8gYnV0dG9uc1wiIChmaWxlQ2hhbmdlZCk9XCJvbkZpbGVDaGFuZ2VkKCRldmVudClcIiBbaXNNdWx0aXBsZV09XCJ0cnVlXCIvPlxyXG4gIH1cclxuXHJcbiAgQGlmIChsaXN0T25seSkge1xyXG4gICAgPHNlY3Rpb24gI2F0dGFjaG1lbnRMaXN0UmVmIGNsYXNzPVwiYmltLWF0dGFjaG1lbnRzLWxpc3RcIj5cclxuICAgICAgQGlmICghYXR0YWNobWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgQGlmIChjb25maWc/LnNob3dOb0F0dGFjaG1lbnRzRm91bmQpIHtcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgZGF0YS10ZXN0PVwibm8tYXR0YWNobWVudHNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJpbS1hdHRhY2htZW50cy1saXN0LWVtcHR5XCJcclxuICAgICAgICAgID57eyAnX05vIGF0dGFjaG1lbnRzIGZvdW5kJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgQGZvciAoYXR0YWNobWVudCBvZiBhdHRhY2htZW50czsgdHJhY2sgYXR0YWNobWVudC5pZCkge1xyXG4gICAgICAgICAgPGxpYi1iaW1wbHVzLWF0dGFjaG1lbnQtaXRlbVxyXG4gICAgICAgICAgICBbY2xvc2VJY29uVGVtcGxhdGVdPVwiY2xvc2VJY29uVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RdPVwiYXR0YWNobWVudC5pZFwiXHJcbiAgICAgICAgICAgIChkZWxldGVBdHRhY2htZW50KT1cImRlbGV0ZUF0dGFjaG1lbnQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGdldEF0dGFjaG1lbnQpPVwiZ2V0QXR0YWNobWVudC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICBbcGFyZW50V2lkdGhdPVwiYXR0YWNobWVudExpc3RXaWR0aCgpXCJcclxuICAgICAgICAgICAgW2F0dGFjaG1lbnRdPVwiYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9zZWN0aW9uPlxyXG4gIH0gQGVsc2Uge1xyXG4gICAgPGRpdiBjbGFzcz1cInNjcm9sbGFibGUtY29udGVudC1jb250YWluZXJcIj5cclxuICAgICAgPGxpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgICAgIDxzZWN0aW9uICNhdHRhY2htZW50TGlzdFJlZiBjbGFzcz1cImJpbS1hdHRhY2htZW50cy1saXN0XCI+XHJcbiAgICAgICAgICBAaWYgKCFhdHRhY2htZW50cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgQGlmIChjb25maWc/LnNob3dOb0F0dGFjaG1lbnRzRm91bmQpIHtcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3Q9XCJuby1hdHRhY2htZW50c1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJpbS1hdHRhY2htZW50cy1saXN0LWVtcHR5XCJcclxuICAgICAgICAgICAgICA+e3sgJ19ObyBhdHRhY2htZW50cyBmb3VuZCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIEBmb3IgKGF0dGFjaG1lbnQgb2YgYXR0YWNobWVudHM7IHRyYWNrIGF0dGFjaG1lbnQuaWQpIHtcclxuICAgICAgICAgICAgICA8bGliLWJpbXBsdXMtYXR0YWNobWVudC1pdGVtXHJcbiAgICAgICAgICAgICAgICBbY2xvc2VJY29uVGVtcGxhdGVdPVwiY2xvc2VJY29uVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0XT1cImF0dGFjaG1lbnQuaWRcIlxyXG4gICAgICAgICAgICAgICAgKGRlbGV0ZUF0dGFjaG1lbnQpPVwiZGVsZXRlQXR0YWNobWVudC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGdldEF0dGFjaG1lbnQpPVwiZ2V0QXR0YWNobWVudC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW3BhcmVudFdpZHRoXT1cImF0dGFjaG1lbnRMaXN0V2lkdGgoKVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0YWNobWVudF09XCJhdHRhY2htZW50XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8L2xpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgPC9kaXY+ICAgIFxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const BIMPLUS_ATTACHMENTS_CONFIG = new InjectionToken('bimplus-attachments-config');
|
|
3
|
+
export class Attachment {
|
|
4
|
+
constructor(data) {
|
|
5
|
+
this.id = data.id ?? '';
|
|
6
|
+
this.fileName = data.fileName ?? '';
|
|
7
|
+
this.size = data.size ?? 0;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export class AttachmentBuilder {
|
|
11
|
+
static { this.attachment = new Attachment({}); }
|
|
12
|
+
static create(value) {
|
|
13
|
+
this.attachment = new Attachment(value);
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
static setId(id) {
|
|
17
|
+
this.attachment.id = id;
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
static setFileName(name) {
|
|
21
|
+
this.attachment.fileName = name;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
static setSize(size) {
|
|
25
|
+
this.attachment.size = size;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
static setFile(file) {
|
|
29
|
+
this.attachment.file = file;
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
static build() {
|
|
33
|
+
const attachmentToReturn = structuredClone(this.attachment);
|
|
34
|
+
this.attachment = new Attachment({});
|
|
35
|
+
return attachmentToReturn;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1hdHRhY2htZW50cy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iaW1wbHVzLWF0dGFjaG1lbnRzL2JpbXBsdXMtYXR0YWNobWVudHMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTL0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQ3JDLElBQUksY0FBYyxDQUEyQiw0QkFBNEIsQ0FBQyxDQUFDO0FBUzdFLE1BQU0sT0FBTyxVQUFVO0lBTXJCLFlBQVksSUFBMEI7UUFDcEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBSUQsTUFBTSxPQUFnQixpQkFBaUI7YUFDdEIsZUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBaUI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQVU7UUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBWTtRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFZO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQVU7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLO1FBQ2pCLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJpbXBsdXNCdXR0b25Sb3dJdGVtIH0gZnJvbSAnLi4vYmltcGx1cy1idXR0b25zLXJvdy9iaW1wbHVzLWJ1dHRvbnMtcm93LmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgdHlwZSBCaW1wbHVzQXR0YWNobWVudHNDb25maWcgPSB7XHJcbiAgYnV0dG9ucz86IEJpbXBsdXNCdXR0b25Sb3dJdGVtW107XHJcbiAgaGlkZURlbGV0ZUF0dGFjaG1lbnRCdXR0b24/OiBib29sZWFuO1xyXG4gIHNob3dOb0F0dGFjaG1lbnRzRm91bmQ/OiBib29sZWFuO1xyXG4gIGhpZGVBdHRhY2htZW50U2l6ZT86IGJvb2xlYW47XHJcbn07XHJcbmV4cG9ydCBjb25zdCBCSU1QTFVTX0FUVEFDSE1FTlRTX0NPTkZJRyA9XHJcbiAgbmV3IEluamVjdGlvblRva2VuPEJpbXBsdXNBdHRhY2htZW50c0NvbmZpZz4oJ2JpbXBsdXMtYXR0YWNobWVudHMtY29uZmlnJyk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBdHRhY2htZW50IHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgc2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIGZpbGU/OiBGaWxlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudCBpbXBsZW1lbnRzIFBhcnRpYWw8SUF0dGFjaG1lbnQ+IHtcclxuICBwdWJsaWMgaWQ6IHN0cmluZztcclxuICBwdWJsaWMgZmlsZU5hbWU6IHN0cmluZztcclxuICBwdWJsaWMgc2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBmaWxlPzogRmlsZTtcclxuXHJcbiAgY29uc3RydWN0b3IoZGF0YTogUGFydGlhbDxJQXR0YWNobWVudD4pIHtcclxuICAgIHRoaXMuaWQgPSBkYXRhLmlkID8/ICcnO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IGRhdGEuZmlsZU5hbWUgPz8gJyc7XHJcbiAgICB0aGlzLnNpemUgPSBkYXRhLnNpemUgPz8gMDtcclxuICB9XHJcbn1cclxuXHJcbnR5cGUgQnVpbGRlciA9IHR5cGVvZiBBdHRhY2htZW50QnVpbGRlcjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdHRhY2htZW50QnVpbGRlciB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXR0YWNobWVudCA9IG5ldyBBdHRhY2htZW50KHt9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGUodmFsdWU6IEF0dGFjaG1lbnQpOiBCdWlsZGVyIHtcclxuICAgIHRoaXMuYXR0YWNobWVudCA9IG5ldyBBdHRhY2htZW50KHZhbHVlKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzZXRJZChpZDogc3RyaW5nKTogQnVpbGRlciB7XHJcbiAgICB0aGlzLmF0dGFjaG1lbnQuaWQgPSBpZDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzZXRGaWxlTmFtZShuYW1lOiBzdHJpbmcpOiBCdWlsZGVyIHtcclxuICAgIHRoaXMuYXR0YWNobWVudC5maWxlTmFtZSA9IG5hbWU7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgc2V0U2l6ZShzaXplOiBudW1iZXIpOiBCdWlsZGVyIHtcclxuICAgIHRoaXMuYXR0YWNobWVudC5zaXplID0gc2l6ZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzZXRGaWxlKGZpbGU6IEZpbGUpOiBCdWlsZGVyIHtcclxuICAgIHRoaXMuYXR0YWNobWVudC5maWxlID0gZmlsZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBidWlsZCgpOiBBdHRhY2htZW50IHtcclxuICAgIGNvbnN0IGF0dGFjaG1lbnRUb1JldHVybiA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmF0dGFjaG1lbnQpO1xyXG4gICAgdGhpcy5hdHRhY2htZW50ID0gbmV3IEF0dGFjaG1lbnQoe30pO1xyXG5cclxuICAgIHJldHVybiBhdHRhY2htZW50VG9SZXR1cm47XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Component, computed, EventEmitter, inject, Input, Output, signal, ViewChild, } from '@angular/core';
|
|
2
|
+
import { BitConverterPipe } from '../../../../pipes/bit-converter.pipe';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { BIMPLUS_ATTACHMENTS_CONFIG, } from '../../bimplus-attachments.interface';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ngx-translate/core";
|
|
7
|
+
const BIM_ATTACHMENT_DELETE_BUTTON_WIDTH = 30;
|
|
8
|
+
const BIM_ATTACHMENT_ITEM_PADDING_LEFT = 28;
|
|
9
|
+
export class BimplusAttachmentItemComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.deleteAttachment = new EventEmitter();
|
|
12
|
+
this.getAttachment = new EventEmitter();
|
|
13
|
+
/** Parent element width. */
|
|
14
|
+
this.parentWidthSignal = signal(undefined);
|
|
15
|
+
/** Attachment size text width. */
|
|
16
|
+
this.attachmentSizeWidth = signal(0);
|
|
17
|
+
/** Wheter name is fully visible or not based on parent width. */
|
|
18
|
+
this.nameIsFullyVisible = signal(false);
|
|
19
|
+
this.config = inject(BIMPLUS_ATTACHMENTS_CONFIG, {
|
|
20
|
+
optional: true,
|
|
21
|
+
});
|
|
22
|
+
/** Attribute to indicate if show/hide size of File. */
|
|
23
|
+
this.hideSize = !!this.config?.hideAttachmentSize;
|
|
24
|
+
/** Width size of file name line. */
|
|
25
|
+
this.nameInfoLineWidth = computed(() => {
|
|
26
|
+
const parentWidth = this.parentWidthSignal();
|
|
27
|
+
const attachmentSizeWidth = this.attachmentSizeWidth();
|
|
28
|
+
const nameIsFullyVisible = this.nameIsFullyVisible();
|
|
29
|
+
if (!parentWidth) {
|
|
30
|
+
return 0;
|
|
31
|
+
}
|
|
32
|
+
if (nameIsFullyVisible) {
|
|
33
|
+
return parentWidth - BIM_ATTACHMENT_DELETE_BUTTON_WIDTH;
|
|
34
|
+
}
|
|
35
|
+
return (parentWidth -
|
|
36
|
+
attachmentSizeWidth -
|
|
37
|
+
(BIM_ATTACHMENT_DELETE_BUTTON_WIDTH + BIM_ATTACHMENT_ITEM_PADDING_LEFT));
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
set parentWidth(value) {
|
|
41
|
+
if (!value) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.parentWidthSignal.set(value);
|
|
45
|
+
}
|
|
46
|
+
get type() {
|
|
47
|
+
return `.${this.attachment.fileName.split('.').at(-1)}`;
|
|
48
|
+
}
|
|
49
|
+
ngAfterViewInit() {
|
|
50
|
+
if (this.attachmentSizeRef) {
|
|
51
|
+
this.attachmentSizeWidth.set(+this.attachmentSizeRef.nativeElement.clientWidth);
|
|
52
|
+
this.createIntersectionObserver();
|
|
53
|
+
this.intersectionObserver.observe(this.attachmentNameRef.nativeElement);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
ngOnDestroy() {
|
|
57
|
+
this.intersectionObserver?.unobserve(this.attachmentNameRef.nativeElement);
|
|
58
|
+
}
|
|
59
|
+
createIntersectionObserver() {
|
|
60
|
+
const options = {
|
|
61
|
+
root: null,
|
|
62
|
+
rootMargin: '0px',
|
|
63
|
+
threshold: 1.0,
|
|
64
|
+
};
|
|
65
|
+
const callback = (entries) => entries.forEach(({ intersectionRect, boundingClientRect }) => {
|
|
66
|
+
const isWidthFullyVisible = intersectionRect.width === boundingClientRect.width;
|
|
67
|
+
this.nameIsFullyVisible.set(isWidthFullyVisible);
|
|
68
|
+
});
|
|
69
|
+
this.intersectionObserver = new IntersectionObserver(callback, options);
|
|
70
|
+
}
|
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusAttachmentItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
72
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BimplusAttachmentItemComponent, isStandalone: true, selector: "lib-bimplus-attachment-item", inputs: { closeIconTemplate: "closeIconTemplate", attachment: "attachment", parentWidth: "parentWidth" }, outputs: { deleteAttachment: "deleteAttachment", getAttachment: "getAttachment" }, viewQueries: [{ propertyName: "attachmentSizeRef", first: true, predicate: ["attachmentSizeRef"], descendants: true }, { propertyName: "attachmentNameRef", first: true, predicate: ["attachmentNameRef"], descendants: true }], ngImport: i0, template: "<div class=\"bim-attachment-item\">\r\n <div\r\n data-test=\"bim-attachment\"\r\n (click)=\"getAttachment.emit(attachment)\"\r\n (keypress)=\"$event.preventDefault()\"\r\n title=\"{{ attachment.fileName }}\"\r\n class=\"bim-attachment-name\"\r\n [style.width.px]=\"nameInfoLineWidth()\"\r\n >\r\n <span #attachmentNameRef>{{ attachment.fileName }}</span>\r\n @if (nameIsFullyVisible() && !hideSize) {\r\n <span class=\"bim-attachment-size\">{{ attachment.size | bitConverter:'kB':'1.2-2' }}</span>\r\n }\r\n </div>\r\n @if(!nameIsFullyVisible() && !hideSize) {\r\n <span>{{ type }} </span>\r\n <div #attachmentSizeRef class=\"bim-attachment-size\">\r\n {{ attachment.size | bitConverter:'kB':'1.2-2' }}\r\n </div>\r\n }\r\n @if (!config?.hideDeleteAttachmentButton) {\r\n <span\r\n data-test=\"delete-attachment-btn\"\r\n class=\"bim-attachment-delete-button\"\r\n title=\"{{ '_Delete attachment' | translate }}\"\r\n (click)=\"deleteAttachment.emit(attachment)\"\r\n (keypress)=\"$event.preventDefault()\"\r\n >\r\n <span class=\"icon\">\u2715\uFE0E</span>\r\n </span>\r\n }\r\n</div>\r\n", styles: [".bim-attachment-item{border-bottom:var(--bim-attachment-item-border-bottom, .1rem solid var(--bim-attachment-item-border-bottom-color, #B8BBBF));line-height:2.5rem;display:flex;align-items:center;justify-content:space-between;color:#46494d;padding-left:var(--bim-attachment-item-padding-left, 2.6rem);background-image:var(--bim-attachment-item-background-image, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAATCAYAAACZZ43PAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAaRJREFUeNqM002IjXEUBvDfvXORlcRK8rEgEYlYKCZSYjGkWcyGQmwmRT5KzUY2JqakTO5OoykxNYloJCUrC181LEZkkhIjH4tbitg8t163meue1fue03nOc57/c0rValWLsRm9WIc3OIHhcovNXbiPH+jGKIbQXmmheQsGUE3zH/RjEL3/Y7AKw3iO3VhdqA1gfTOA+biD9/kew6tCfRG+TwUwC3fxEzPxDTvzD2vQh8uTAUwP7bmoBWA7vqa+OMweoacRoIQrWBvqC7ED46nPCbNPeIm2RoCz6MSzCNYZAYXJTczAZxzEvCJAN06GXjsO4V5qbbiKZXiBjejAuzrALlyMu5bjQlapR19WGYmYe/EQykEdxCWcxxLcLjQfw+E4ryssr9WLZZzGUxxNbhQHsuu+gF6PHv04VxStgm3Z93dyx3Er00qZvDXqH2l880pMM17IjWBFrm8iE8ewpzDkH4CPWInHhfxrfIhQvyJcbTLLlnEDpzC7wY1DWBAXTkx1MJWI2IEneYka9mNpTvlts3Ot4As2ZNczmIYH2BTTNI2/AwAogV/IJljQBwAAAABJRU5ErkJggg==));background-size:var(--bim-attachment-item-background-size, auto);background-repeat:no-repeat;background-position:var(--bim-attachment-item-background-position, .8rem center)}.bim-attachment-item .bim-attachment-name{padding-left:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bim-attachment-item .bim-attachment-size{padding-left:.5rem;white-space:nowrap;margin-right:.4rem}.bim-attachment-item .bim-attachment-delete-button{width:2.5rem;cursor:pointer;margin-left:auto}.bim-attachment-item .bim-attachment-delete-button .icon{font-weight:var(--bim-attachment-delete-button-icon-font-weight, normal);color:var(--bim-attachment-delete-button-icon-color, #B8BBBF)}.bim-attachment-item .bim-attachment-delete-button .icon:hover{color:#46494d}\n"], dependencies: [{ kind: "pipe", type: BitConverterPipe, name: "bitConverter" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
73
|
+
}
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusAttachmentItemComponent, decorators: [{
|
|
75
|
+
type: Component,
|
|
76
|
+
args: [{ selector: 'lib-bimplus-attachment-item', standalone: true, imports: [BitConverterPipe, TranslateModule], template: "<div class=\"bim-attachment-item\">\r\n <div\r\n data-test=\"bim-attachment\"\r\n (click)=\"getAttachment.emit(attachment)\"\r\n (keypress)=\"$event.preventDefault()\"\r\n title=\"{{ attachment.fileName }}\"\r\n class=\"bim-attachment-name\"\r\n [style.width.px]=\"nameInfoLineWidth()\"\r\n >\r\n <span #attachmentNameRef>{{ attachment.fileName }}</span>\r\n @if (nameIsFullyVisible() && !hideSize) {\r\n <span class=\"bim-attachment-size\">{{ attachment.size | bitConverter:'kB':'1.2-2' }}</span>\r\n }\r\n </div>\r\n @if(!nameIsFullyVisible() && !hideSize) {\r\n <span>{{ type }} </span>\r\n <div #attachmentSizeRef class=\"bim-attachment-size\">\r\n {{ attachment.size | bitConverter:'kB':'1.2-2' }}\r\n </div>\r\n }\r\n @if (!config?.hideDeleteAttachmentButton) {\r\n <span\r\n data-test=\"delete-attachment-btn\"\r\n class=\"bim-attachment-delete-button\"\r\n title=\"{{ '_Delete attachment' | translate }}\"\r\n (click)=\"deleteAttachment.emit(attachment)\"\r\n (keypress)=\"$event.preventDefault()\"\r\n >\r\n <span class=\"icon\">\u2715\uFE0E</span>\r\n </span>\r\n }\r\n</div>\r\n", styles: [".bim-attachment-item{border-bottom:var(--bim-attachment-item-border-bottom, .1rem solid var(--bim-attachment-item-border-bottom-color, #B8BBBF));line-height:2.5rem;display:flex;align-items:center;justify-content:space-between;color:#46494d;padding-left:var(--bim-attachment-item-padding-left, 2.6rem);background-image:var(--bim-attachment-item-background-image, url(data:image/png;base64,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));background-size:var(--bim-attachment-item-background-size, auto);background-repeat:no-repeat;background-position:var(--bim-attachment-item-background-position, .8rem center)}.bim-attachment-item .bim-attachment-name{padding-left:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bim-attachment-item .bim-attachment-size{padding-left:.5rem;white-space:nowrap;margin-right:.4rem}.bim-attachment-item .bim-attachment-delete-button{width:2.5rem;cursor:pointer;margin-left:auto}.bim-attachment-item .bim-attachment-delete-button .icon{font-weight:var(--bim-attachment-delete-button-icon-font-weight, normal);color:var(--bim-attachment-delete-button-icon-color, #B8BBBF)}.bim-attachment-item .bim-attachment-delete-button .icon:hover{color:#46494d}\n"] }]
|
|
77
|
+
}], propDecorators: { closeIconTemplate: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], attachmentSizeRef: [{
|
|
80
|
+
type: ViewChild,
|
|
81
|
+
args: ['attachmentSizeRef']
|
|
82
|
+
}], attachmentNameRef: [{
|
|
83
|
+
type: ViewChild,
|
|
84
|
+
args: ['attachmentNameRef']
|
|
85
|
+
}], attachment: [{
|
|
86
|
+
type: Input,
|
|
87
|
+
args: [{ required: true }]
|
|
88
|
+
}], parentWidth: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], deleteAttachment: [{
|
|
91
|
+
type: Output
|
|
92
|
+
}], getAttachment: [{
|
|
93
|
+
type: Output
|
|
94
|
+
}] } });
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1hdHRhY2htZW50LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1hdHRhY2htZW50cy9jb21wb25lbnRzL2JpbXBsdXMtYXR0YWNobWVudC1pdGVtL2JpbXBsdXMtYXR0YWNobWVudC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtYXR0YWNobWVudHMvY29tcG9uZW50cy9iaW1wbHVzLWF0dGFjaG1lbnQtaXRlbS9iaW1wbHVzLWF0dGFjaG1lbnQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFFUixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUVMLDBCQUEwQixHQUMzQixNQUFNLHFDQUFxQyxDQUFDOzs7QUFFN0MsTUFBTSxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7QUFDOUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFTNUMsTUFBTSxPQUFPLDhCQUE4QjtJQVAzQztRQXFCWSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ2xELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQU96RCw0QkFBNEI7UUFDWCxzQkFBaUIsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLGtDQUFrQztRQUNqQix3QkFBbUIsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDekQsaUVBQWlFO1FBQzlDLHVCQUFrQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUU1QyxXQUFNLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixFQUFFO1lBQzdELFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsdURBQXVEO1FBQ3BDLGFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQztRQUVoRSxvQ0FBb0M7UUFDakIsc0JBQWlCLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRTtZQUMzRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM3QyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFckQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQUMsQ0FBQztZQUNYLENBQUM7WUFFRCxJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sV0FBVyxHQUFHLGtDQUFrQyxDQUFDO1lBQzFELENBQUM7WUFFRCxPQUFPLENBQ0wsV0FBVztnQkFDWCxtQkFBbUI7Z0JBQ25CLENBQUMsa0NBQWtDLEdBQUcsZ0NBQWdDLENBQUMsQ0FDeEUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0tBOEJKO0lBOUVDLElBQWEsV0FBVyxDQUFDLEtBQXlCO1FBQ2hELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBSUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFzQ00sZUFBZTtRQUNwQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQzFCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQ2xELENBQUM7WUFDRixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsb0JBQXFCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxNQUFNLE9BQU8sR0FBNkI7WUFDeEMsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsR0FBRztTQUNmLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBaUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUN6RCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEVBQUU7WUFDM0QsTUFBTSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssa0JBQWtCLENBQUMsS0FBSyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDOytHQXBGVSw4QkFBOEI7bUdBQTlCLDhCQUE4QixxZkMvQjNDLCtwQ0FnQ0EsczFLRExZLGdCQUFnQixvREFBRSxlQUFlOzs0RkFJaEMsOEJBQThCO2tCQVAxQyxTQUFTOytCQUNFLDZCQUE2QixjQUMzQixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUM7OEJBT25DLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDMEIsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNILFVBQVU7c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNaLFdBQVc7c0JBQXZCLEtBQUs7Z0JBT0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIHNpZ25hbCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJpdENvbnZlcnRlclBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcy9iaXQtY29udmVydGVyLnBpcGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBdHRhY2htZW50LFxyXG4gIEJJTVBMVVNfQVRUQUNITUVOVFNfQ09ORklHLFxyXG59IGZyb20gJy4uLy4uL2JpbXBsdXMtYXR0YWNobWVudHMuaW50ZXJmYWNlJztcclxuXHJcbmNvbnN0IEJJTV9BVFRBQ0hNRU5UX0RFTEVURV9CVVRUT05fV0lEVEggPSAzMDtcclxuY29uc3QgQklNX0FUVEFDSE1FTlRfSVRFTV9QQURESU5HX0xFRlQgPSAyODtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtYXR0YWNobWVudC1pdGVtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtCaXRDb252ZXJ0ZXJQaXBlLCBUcmFuc2xhdGVNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaW1wbHVzLWF0dGFjaG1lbnQtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtYXR0YWNobWVudC1pdGVtLmNvbXBvbmVudC5sZXNzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJpbXBsdXNBdHRhY2htZW50SXRlbUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XHJcbntcclxuICBASW5wdXQoKSBjbG9zZUljb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2F0dGFjaG1lbnRTaXplUmVmJykgYXR0YWNobWVudFNpemVSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdhdHRhY2htZW50TmFtZVJlZicpIGF0dGFjaG1lbnROYW1lUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgYXR0YWNobWVudCE6IEF0dGFjaG1lbnQ7XHJcbiAgQElucHV0KCkgc2V0IHBhcmVudFdpZHRoKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGFyZW50V2lkdGhTaWduYWwuc2V0KHZhbHVlKTtcclxuICB9XHJcbiAgQE91dHB1dCgpIGRlbGV0ZUF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEF0dGFjaG1lbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGdldEF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEF0dGFjaG1lbnQ+KCk7XHJcblxyXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYC4ke3RoaXMuYXR0YWNobWVudC5maWxlTmFtZS5zcGxpdCgnLicpLmF0KC0xKX1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnRlcnNlY3Rpb25PYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xyXG4gIC8qKiBQYXJlbnQgZWxlbWVudCB3aWR0aC4gKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudFdpZHRoU2lnbmFsID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICAvKiogQXR0YWNobWVudCBzaXplIHRleHQgd2lkdGguICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBhdHRhY2htZW50U2l6ZVdpZHRoID0gc2lnbmFsPG51bWJlcj4oMCk7XHJcbiAgLyoqIFdoZXRlciBuYW1lIGlzIGZ1bGx5IHZpc2libGUgb3Igbm90IGJhc2VkIG9uIHBhcmVudCB3aWR0aC4gKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmFtZUlzRnVsbHlWaXNpYmxlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChCSU1QTFVTX0FUVEFDSE1FTlRTX0NPTkZJRywge1xyXG4gICAgb3B0aW9uYWw6IHRydWUsXHJcbiAgfSk7XHJcblxyXG4gIC8qKiBBdHRyaWJ1dGUgdG8gaW5kaWNhdGUgaWYgc2hvdy9oaWRlIHNpemUgb2YgRmlsZS4gKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGlkZVNpemUgPSAhIXRoaXMuY29uZmlnPy5oaWRlQXR0YWNobWVudFNpemU7XHJcblxyXG4gIC8qKiBXaWR0aCBzaXplIG9mIGZpbGUgbmFtZSBsaW5lLiAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBuYW1lSW5mb0xpbmVXaWR0aCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xyXG4gICAgY29uc3QgcGFyZW50V2lkdGggPSB0aGlzLnBhcmVudFdpZHRoU2lnbmFsKCk7XHJcbiAgICBjb25zdCBhdHRhY2htZW50U2l6ZVdpZHRoID0gdGhpcy5hdHRhY2htZW50U2l6ZVdpZHRoKCk7XHJcbiAgICBjb25zdCBuYW1lSXNGdWxseVZpc2libGUgPSB0aGlzLm5hbWVJc0Z1bGx5VmlzaWJsZSgpO1xyXG5cclxuICAgIGlmICghcGFyZW50V2lkdGgpIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG5hbWVJc0Z1bGx5VmlzaWJsZSkge1xyXG4gICAgICByZXR1cm4gcGFyZW50V2lkdGggLSBCSU1fQVRUQUNITUVOVF9ERUxFVEVfQlVUVE9OX1dJRFRIO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIHBhcmVudFdpZHRoIC1cclxuICAgICAgYXR0YWNobWVudFNpemVXaWR0aCAtXHJcbiAgICAgIChCSU1fQVRUQUNITUVOVF9ERUxFVEVfQlVUVE9OX1dJRFRIICsgQklNX0FUVEFDSE1FTlRfSVRFTV9QQURESU5HX0xFRlQpXHJcbiAgICApO1xyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXR0YWNobWVudFNpemVSZWYpIHtcclxuICAgICAgdGhpcy5hdHRhY2htZW50U2l6ZVdpZHRoLnNldChcclxuICAgICAgICArdGhpcy5hdHRhY2htZW50U2l6ZVJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcclxuICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlciEub2JzZXJ2ZSh0aGlzLmF0dGFjaG1lbnROYW1lUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMuYXR0YWNobWVudE5hbWVSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgb3B0aW9uczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0ge1xyXG4gICAgICByb290OiBudWxsLFxyXG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcclxuICAgICAgdGhyZXNob2xkOiAxLjAsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2FsbGJhY2s6IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgPSAoZW50cmllcykgPT5cclxuICAgICAgZW50cmllcy5mb3JFYWNoKCh7IGludGVyc2VjdGlvblJlY3QsIGJvdW5kaW5nQ2xpZW50UmVjdCB9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNXaWR0aEZ1bGx5VmlzaWJsZSA9IGludGVyc2VjdGlvblJlY3Qud2lkdGggPT09IGJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aDtcclxuICAgICAgICB0aGlzLm5hbWVJc0Z1bGx5VmlzaWJsZS5zZXQoaXNXaWR0aEZ1bGx5VmlzaWJsZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdGlvbnMpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYmltLWF0dGFjaG1lbnQtaXRlbVwiPlxyXG4gIDxkaXZcclxuICAgIGRhdGEtdGVzdD1cImJpbS1hdHRhY2htZW50XCJcclxuICAgIChjbGljayk9XCJnZXRBdHRhY2htZW50LmVtaXQoYXR0YWNobWVudClcIlxyXG4gICAgKGtleXByZXNzKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIHRpdGxlPVwie3sgYXR0YWNobWVudC5maWxlTmFtZSB9fVwiXHJcbiAgICBjbGFzcz1cImJpbS1hdHRhY2htZW50LW5hbWVcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cIm5hbWVJbmZvTGluZVdpZHRoKClcIlxyXG4gID5cclxuICAgIDxzcGFuICNhdHRhY2htZW50TmFtZVJlZj57eyBhdHRhY2htZW50LmZpbGVOYW1lIH19PC9zcGFuPlxyXG4gICAgQGlmIChuYW1lSXNGdWxseVZpc2libGUoKSAmJiAhaGlkZVNpemUpIHtcclxuICAgICAgPHNwYW4gY2xhc3M9XCJiaW0tYXR0YWNobWVudC1zaXplXCI+e3sgYXR0YWNobWVudC5zaXplIHwgYml0Q29udmVydGVyOidrQic6JzEuMi0yJyB9fTwvc3Bhbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICBAaWYoIW5hbWVJc0Z1bGx5VmlzaWJsZSgpICYmICFoaWRlU2l6ZSkge1xyXG4gICAgPHNwYW4+e3sgdHlwZSB9fSA8L3NwYW4+XHJcbiAgICA8ZGl2ICNhdHRhY2htZW50U2l6ZVJlZiBjbGFzcz1cImJpbS1hdHRhY2htZW50LXNpemVcIj5cclxuICAgICAge3sgYXR0YWNobWVudC5zaXplIHwgYml0Q29udmVydGVyOidrQic6JzEuMi0yJyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoIWNvbmZpZz8uaGlkZURlbGV0ZUF0dGFjaG1lbnRCdXR0b24pIHtcclxuICAgIDxzcGFuXHJcbiAgICAgIGRhdGEtdGVzdD1cImRlbGV0ZS1hdHRhY2htZW50LWJ0blwiXHJcbiAgICAgIGNsYXNzPVwiYmltLWF0dGFjaG1lbnQtZGVsZXRlLWJ1dHRvblwiXHJcbiAgICAgIHRpdGxlPVwie3sgJ19EZWxldGUgYXR0YWNobWVudCcgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAoY2xpY2spPVwiZGVsZXRlQXR0YWNobWVudC5lbWl0KGF0dGFjaG1lbnQpXCJcclxuICAgICAgKGtleXByZXNzKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgID5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJpY29uXCI+4pyV77iOPC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { AttachmentBuilder, } from '../bimplus-attachments.interface';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class BimplusAttachmentsService {
|
|
5
|
+
getAttachment(value) {
|
|
6
|
+
let attachment;
|
|
7
|
+
if (value instanceof File) {
|
|
8
|
+
attachment = AttachmentBuilder.setFile(value)
|
|
9
|
+
.setFileName(value.name)
|
|
10
|
+
.build();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
attachment = AttachmentBuilder.create(value).build();
|
|
14
|
+
}
|
|
15
|
+
return attachment;
|
|
16
|
+
}
|
|
17
|
+
download(href, fileName) {
|
|
18
|
+
const anchor = document.createElement('a');
|
|
19
|
+
anchor.rel = 'noopener noreferrer';
|
|
20
|
+
anchor.target = '_blank';
|
|
21
|
+
anchor.href = href;
|
|
22
|
+
anchor.download = fileName;
|
|
23
|
+
anchor.click();
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusAttachmentsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusAttachmentsService, providedIn: 'root' }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusAttachmentsService, decorators: [{
|
|
29
|
+
type: Injectable,
|
|
30
|
+
args: [{ providedIn: 'root' }]
|
|
31
|
+
}] });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1hdHRhY2htZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1hdHRhY2htZW50cy9zZXJ2aWNlcy9iaW1wbHVzLWF0dGFjaG1lbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsaUJBQWlCLEdBQ2xCLE1BQU0sa0NBQWtDLENBQUM7O0FBRzFDLE1BQU0sT0FBTyx5QkFBeUI7SUFDN0IsYUFBYSxDQUFDLEtBQXdCO1FBQzNDLElBQUksVUFBc0IsQ0FBQztRQUMzQixJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMxQixVQUFVLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDMUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7aUJBQ3ZCLEtBQUssRUFBRSxDQUFDO1FBQ2IsQ0FBQzthQUFNLENBQUM7WUFDTixVQUFVLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZELENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVksRUFBRSxRQUFnQjtRQUM1QyxNQUFNLE1BQU0sR0FBc0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsR0FBRyxHQUFHLHFCQUFxQixDQUFDO1FBQ25DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDOytHQXJCVSx5QkFBeUI7bUhBQXpCLHlCQUF5QixjQURaLE1BQU07OzRGQUNuQix5QkFBeUI7a0JBRHJDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEF0dGFjaG1lbnQsXHJcbiAgQXR0YWNobWVudEJ1aWxkZXIsXHJcbn0gZnJvbSAnLi4vYmltcGx1cy1hdHRhY2htZW50cy5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEJpbXBsdXNBdHRhY2htZW50c1NlcnZpY2Uge1xyXG4gIHB1YmxpYyBnZXRBdHRhY2htZW50KHZhbHVlOiBBdHRhY2htZW50IHwgRmlsZSk6IEF0dGFjaG1lbnQge1xyXG4gICAgbGV0IGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQ7XHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGaWxlKSB7XHJcbiAgICAgIGF0dGFjaG1lbnQgPSBBdHRhY2htZW50QnVpbGRlci5zZXRGaWxlKHZhbHVlKVxyXG4gICAgICAgIC5zZXRGaWxlTmFtZSh2YWx1ZS5uYW1lKVxyXG4gICAgICAgIC5idWlsZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXR0YWNobWVudCA9IEF0dGFjaG1lbnRCdWlsZGVyLmNyZWF0ZSh2YWx1ZSkuYnVpbGQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXR0YWNobWVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZChocmVmOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFuY2hvcjogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBhbmNob3IucmVsID0gJ25vb3BlbmVyIG5vcmVmZXJyZXInO1xyXG4gICAgYW5jaG9yLnRhcmdldCA9ICdfYmxhbmsnO1xyXG4gICAgYW5jaG9yLmhyZWYgPSBocmVmO1xyXG4gICAgYW5jaG9yLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICBhbmNob3IuY2xpY2soKTtcclxuICB9XHJcbn1cclxuIl19
|