ngx-dsxlibrary 2.21.43 → 2.21.45
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/README.md +3 -0
- package/fesm2022/ngx-dsxlibrary-src-lib-components.mjs +27 -6
- package/fesm2022/ngx-dsxlibrary-src-lib-components.mjs.map +1 -1
- package/fesm2022/ngx-dsxlibrary.mjs +43 -10
- package/fesm2022/ngx-dsxlibrary.mjs.map +1 -1
- package/ngx-dsxlibrary-2.21.45.tgz +0 -0
- package/package.json +1 -1
- package/src/assets/css/primeng_dsx.css +67 -0
- package/types/ngx-dsxlibrary-src-lib-components.d.ts +5 -1
- package/types/ngx-dsxlibrary.d.ts +6 -1
- package/ngx-dsxlibrary-2.21.43.tgz +0 -0
package/README.md
CHANGED
|
@@ -49,10 +49,13 @@ Notas:
|
|
|
49
49
|
|
|
50
50
|
La librería expone un archivo CSS con `@font-face` para que cualquier proyecto consumidor lo importe una sola vez.
|
|
51
51
|
|
|
52
|
+
Tambien expone un archivo de personalizacion base para PrimeNG, para mantener estilos uniformes entre proyectos consumidores.
|
|
53
|
+
|
|
52
54
|
En el `styles.css`/`styles.scss` del proyecto consumidor:
|
|
53
55
|
|
|
54
56
|
```css
|
|
55
57
|
@import "ngx-dsxlibrary/assets/css/fonts.css";
|
|
58
|
+
@import "ngx-dsxlibrary/assets/css/primeng_dsx.css";
|
|
56
59
|
```
|
|
57
60
|
|
|
58
61
|
Las rutas del CSS están definidas como `url("/fonts/...")`, por lo que el proyecto consumidor debe publicar esos archivos en `/fonts`.
|
|
@@ -822,6 +822,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImpo
|
|
|
822
822
|
class DocxPreviewComponent {
|
|
823
823
|
view = viewChild('viewer', ...(ngDevMode ? [{ debugName: "view" }] : /* istanbul ignore next */ []));
|
|
824
824
|
visibleState = signal(false, ...(ngDevMode ? [{ debugName: "visibleState" }] : /* istanbul ignore next */ []));
|
|
825
|
+
loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
826
|
+
rendered = signal(false, ...(ngDevMode ? [{ debugName: "rendered" }] : /* istanbul ignore next */ []));
|
|
825
827
|
renderToken = 0;
|
|
826
828
|
set visible(value) {
|
|
827
829
|
this.visibleState.set(!!value);
|
|
@@ -840,18 +842,19 @@ class DocxPreviewComponent {
|
|
|
840
842
|
return;
|
|
841
843
|
}
|
|
842
844
|
if (!isVisible) {
|
|
843
|
-
this.
|
|
844
|
-
container.innerHTML = '';
|
|
845
|
+
this.resetViewer(container);
|
|
845
846
|
return;
|
|
846
847
|
}
|
|
848
|
+
this.loading.set(true);
|
|
849
|
+
this.rendered.set(false);
|
|
847
850
|
if (!(fileBlob instanceof Blob)) {
|
|
848
|
-
this.
|
|
851
|
+
this.finishWithFallback(container);
|
|
849
852
|
container.innerHTML =
|
|
850
853
|
'<p>No hay un archivo .docx válido para previsualizar.</p>';
|
|
851
854
|
return;
|
|
852
855
|
}
|
|
853
856
|
if (!fileBlob.size) {
|
|
854
|
-
this.
|
|
857
|
+
this.finishWithFallback(container);
|
|
855
858
|
container.innerHTML = '<p>El archivo .docx está vacío.</p>';
|
|
856
859
|
return;
|
|
857
860
|
}
|
|
@@ -865,6 +868,18 @@ class DocxPreviewComponent {
|
|
|
865
868
|
void this.renderDocx(fileBlob, container, options, token);
|
|
866
869
|
});
|
|
867
870
|
}
|
|
871
|
+
resetViewer(container) {
|
|
872
|
+
this.renderToken++;
|
|
873
|
+
this.loading.set(false);
|
|
874
|
+
this.rendered.set(false);
|
|
875
|
+
container.innerHTML = '';
|
|
876
|
+
}
|
|
877
|
+
finishWithFallback(container) {
|
|
878
|
+
this.renderToken++;
|
|
879
|
+
this.loading.set(false);
|
|
880
|
+
this.rendered.set(true);
|
|
881
|
+
container.innerHTML = '';
|
|
882
|
+
}
|
|
868
883
|
async renderDocx(fileBlob, container, options, token) {
|
|
869
884
|
try {
|
|
870
885
|
const viteDocxModulePath = '/@id/docx-preview';
|
|
@@ -875,6 +890,10 @@ class DocxPreviewComponent {
|
|
|
875
890
|
return;
|
|
876
891
|
}
|
|
877
892
|
await docxPreviewModule.renderAsync(fileBlob, container, undefined, options);
|
|
893
|
+
if (token === this.renderToken && this.visibleState()) {
|
|
894
|
+
this.loading.set(false);
|
|
895
|
+
this.rendered.set(true);
|
|
896
|
+
}
|
|
878
897
|
}
|
|
879
898
|
catch (error) {
|
|
880
899
|
if (token !== this.renderToken || !this.visibleState()) {
|
|
@@ -883,6 +902,8 @@ class DocxPreviewComponent {
|
|
|
883
902
|
console.error('[DocxPreview] Error al renderizar el archivo DOCX.', error);
|
|
884
903
|
container.innerHTML =
|
|
885
904
|
'<p>No se pudo renderizar la vista previa DOCX. Verifica la consola para más detalles.</p>';
|
|
905
|
+
this.loading.set(false);
|
|
906
|
+
this.rendered.set(true);
|
|
886
907
|
}
|
|
887
908
|
}
|
|
888
909
|
onHide() {
|
|
@@ -894,11 +915,11 @@ class DocxPreviewComponent {
|
|
|
894
915
|
this.visibleChange.emit(false);
|
|
895
916
|
}
|
|
896
917
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: DocxPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
897
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
918
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.13", type: DocxPreviewComponent, isStandalone: true, selector: "app-docx-preview", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, viewQueries: [{ propertyName: "view", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], ngImport: i0, template: "<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div class=\"docx-preview-shell\">\r\n @if (loading()) {\r\n <div class=\"docx-preview-loading\">\r\n <span class=\"docx-preview-spinner\"></span>\r\n <span>Cargando vista previa del documento...</span>\r\n </div>\r\n }\r\n\r\n <div\r\n #viewer\r\n class=\"docx-preview-viewer\"\r\n [class.is-hidden]=\"loading() && !rendered()\"\r\n ></div>\r\n </div>\r\n</p-dialog>\r\n", styles: [".docx-preview-shell{position:relative;min-height:60vh}.docx-preview-loading{align-items:center;color:#475569;display:flex;flex-direction:column;gap:.75rem;justify-content:center;min-height:60vh;text-align:center}.docx-preview-spinner{animation:docx-preview-spin .8s linear infinite;border:3px solid rgba(71,85,105,.15);border-top-color:#2563eb;border-radius:50%;display:inline-block;height:2.25rem;width:2.25rem}.docx-preview-viewer{min-height:60vh;transition:opacity .18s ease}.docx-preview-viewer.is-hidden{opacity:0;pointer-events:none;position:absolute;inset:0}@keyframes docx-preview-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1$3.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$3.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }] });
|
|
898
919
|
}
|
|
899
920
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: DocxPreviewComponent, decorators: [{
|
|
900
921
|
type: Component,
|
|
901
|
-
args: [{ selector: 'app-docx-preview', imports: [DialogModule, AvatarModule], template: "<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div #viewer></div>\r\n</p-dialog>\r\n" }]
|
|
922
|
+
args: [{ selector: 'app-docx-preview', imports: [DialogModule, AvatarModule], template: "<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div class=\"docx-preview-shell\">\r\n @if (loading()) {\r\n <div class=\"docx-preview-loading\">\r\n <span class=\"docx-preview-spinner\"></span>\r\n <span>Cargando vista previa del documento...</span>\r\n </div>\r\n }\r\n\r\n <div\r\n #viewer\r\n class=\"docx-preview-viewer\"\r\n [class.is-hidden]=\"loading() && !rendered()\"\r\n ></div>\r\n </div>\r\n</p-dialog>\r\n", styles: [".docx-preview-shell{position:relative;min-height:60vh}.docx-preview-loading{align-items:center;color:#475569;display:flex;flex-direction:column;gap:.75rem;justify-content:center;min-height:60vh;text-align:center}.docx-preview-spinner{animation:docx-preview-spin .8s linear infinite;border:3px solid rgba(71,85,105,.15);border-top-color:#2563eb;border-radius:50%;display:inline-block;height:2.25rem;width:2.25rem}.docx-preview-viewer{min-height:60vh;transition:opacity .18s ease}.docx-preview-viewer.is-hidden{opacity:0;pointer-events:none;position:absolute;inset:0}@keyframes docx-preview-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
|
|
902
923
|
}], ctorParameters: () => [], propDecorators: { view: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }], visible: [{
|
|
903
924
|
type: Input
|
|
904
925
|
}], visibleChange: [{
|