uni-app-fe 0.0.3 → 0.0.4
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/fesm2022/uni-app-fe.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { registerLocaleData } from '@angular/common';
|
|
2
2
|
import localeEsCl from '@angular/common/locales/es-CL';
|
|
3
3
|
import localeIt from '@angular/common/locales/it';
|
|
4
|
+
import { config } from 'devextreme-angular/common';
|
|
4
5
|
import { locale, loadMessages } from 'devextreme-angular/common/core/localization';
|
|
5
6
|
import esMessages from 'devextreme/localization/messages/es.json';
|
|
6
7
|
import itMessages from 'devextreme/localization/messages/it.json';
|
|
@@ -38,11 +39,12 @@ class UniLocaleManagerAngular {
|
|
|
38
39
|
/* Imposta il locale per DevExtreme */
|
|
39
40
|
locale(UniLocaleManager.locale);
|
|
40
41
|
/* Configura la logica di raggruppamento per valuta */
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
if (UniLocaleManager.locale === 'it-IT') {
|
|
43
|
+
config({ defaultCurrency: 'EUR' });
|
|
44
|
+
}
|
|
45
|
+
else if (UniLocaleManager.locale === 'es-CL') {
|
|
46
|
+
config({ defaultCurrency: 'CLP' });
|
|
47
|
+
}
|
|
46
48
|
/* Carica i messaggi di traduzione */
|
|
47
49
|
switch (UniLocaleManager.language) {
|
|
48
50
|
case 'it':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uni-app-fe.mjs","sources":["../../../projects/uni-app-fe/src/manager/locale.manager.ts","../../../projects/uni-app-fe/src/pipe/uni-translate-inline-params.pipe.ts","../../../projects/uni-app-fe/src/pipe/uni-translate.pipe.ts","../../../projects/uni-app-fe/src/pipe/index.ts","../../../projects/uni-app-fe/src/service/uni-loader.service.ts","../../../projects/uni-app-fe/src/service/uni-popup.service.ts","../../../projects/uni-app-fe/src/service/uni-toast.service.ts","../../../projects/uni-app-fe/src/public-api.ts","../../../projects/uni-app-fe/src/uni-app-fe.ts"],"sourcesContent":["import { registerLocaleData } from '@angular/common';\r\nimport localeEsCl from '@angular/common/locales/es-CL';\r\nimport localeIt from '@angular/common/locales/it';\r\nimport { loadMessages, locale } from 'devextreme-angular/common/core/localization';\r\nimport esMessages from 'devextreme/localization/messages/es.json';\r\nimport itMessages from 'devextreme/localization/messages/it.json';\r\nimport { UniLocaleManager } from 'uni-manager';\r\n\r\nexport class UniLocaleManagerAngular {\r\n /* ------------------------------------------------------------------------------- */\r\n /* ----------------------------------- Metodi ------------------------------------ */\r\n /* ------------------------------------------------------------------------------- */\r\n /**\r\n * Registra i dati specifici del locale nel framework Angular.\r\n * Necessario per garantire che le pipe built-in (es. DatePipe, CurrencyPipe) operino secondo le convenzioni del paese corrente.\r\n */\r\n public static setLocaleAngular(): void {\r\n /* Imposta i dati del locale corrente in Angular necessari per le pipe */\r\n const currentLocale = UniLocaleManager.locale;\r\n if (currentLocale === 'it-IT') {\r\n registerLocaleData(localeIt, 'it-IT');\r\n } else if (currentLocale === 'es-CL') {\r\n registerLocaleData(localeEsCl, 'es-CL');\r\n }\r\n }\r\n\r\n /**\r\n * Inizializza la localizzazione specifica per i componenti DevExtreme.\r\n * Imposta il locale per le formattazioni native dei widget e carica i file di messaggi JSON per la traduzione dei testi di sistema.\r\n */\r\n public static setLocaleDevextreme(): void {\r\n /* Imposta il locale per DevExtreme */\r\n locale(UniLocaleManager.locale);\r\n\r\n /* Configura la logica di raggruppamento per valuta */\r\n // if (currentLocale === 'it-IT') {\r\n // config({ defaultCurrency: 'EUR' });\r\n // } else if (currentLocale === 'es-CL') {\r\n // config({ defaultCurrency: 'CLP' });\r\n // }\r\n\r\n /* Carica i messaggi di traduzione */\r\n switch (UniLocaleManager.language) {\r\n case 'it':\r\n loadMessages(itMessages);\r\n break;\r\n case 'es':\r\n loadMessages(esMessages);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniLocaleManager } from 'uni-manager';\r\n\r\n@Pipe({\r\n name: 'translate_inline_params',\r\n standalone: true,\r\n})\r\nexport class UNITranslateInlineParamsPipe implements PipeTransform {\r\n transform(label: string | null | undefined, splitChar: string): string {\r\n if (!label) return '';\r\n\r\n return UniLocaleManager.translateInlineParams(label, splitChar);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniLocaleManager } from 'uni-manager';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n standalone: true,\r\n})\r\nexport class UNITranslatePipe implements PipeTransform {\r\n transform(\r\n label: string | null | undefined,\r\n prefix = 'lbl',\r\n interpolateParams?: Record<string, string | number | Date>,\r\n ): string {\r\n if (!label) return '';\r\n\r\n return UniLocaleManager.translate(label, prefix, interpolateParams);\r\n }\r\n}\r\n","/* eslint-disable simple-import-sort/exports */\r\n\r\nexport * from './uni-translate-inline-params.pipe';\r\nexport * from './uni-translate.pipe';\r\n","import { Injectable } from '@angular/core';\r\nimport LoadPanel from 'devextreme/ui/load_panel';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UNILoaderService {\r\n /* Load Panel */\r\n private loadPanel: LoadPanel;\r\n\r\n constructor() {\r\n const container = document.querySelector('body');\r\n const content: HTMLDivElement = document.createElement('div');\r\n container!.appendChild(content);\r\n\r\n this.loadPanel = new LoadPanel(content, {\r\n showIndicator: true,\r\n showPane: true,\r\n shading: true,\r\n shadingColor: 'rgba(0,0,0,0.4)',\r\n });\r\n }\r\n\r\n /* ------------------------------------- Methods ------------------------------------- */\r\n public show(): void {\r\n this.loadPanel.show();\r\n }\r\n\r\n public hide(): void {\r\n this.loadPanel.hide();\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { custom } from 'devextreme/ui/dialog';\r\nimport Popup, { ToolbarItem } from 'devextreme/ui/popup';\r\nimport { UniLocaleManager } from 'uni-manager';\r\n\r\nexport type PopupType = 'INFO' | 'WARNING' | 'ERROR';\r\n\r\nexport type Instance = Popup<{\r\n title: string;\r\n deferRendering: boolean;\r\n maxHeight: number;\r\n maxWidth: number;\r\n dragEnabled: boolean;\r\n showCloseButton: boolean;\r\n hideOnOutsideClick: boolean;\r\n shading: boolean;\r\n wrapperAttr: { id: string; class?: string };\r\n toolbarItems: ToolbarItem[];\r\n contentTemplate: () => HTMLDivElement;\r\n onHidden: () => void;\r\n}>;\r\n\r\nexport type PopupContent = { message: string; html?: never } | { message?: never; html: string };\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UNIPopupService {\r\n /* Variables */\r\n private instances = new Map<string, Instance>();\r\n\r\n /* -------------------------------- Methods: popup creation -------------------------------- */\r\n public async createPopupConfirm(\r\n args: PopupContent & {\r\n onConfirm: () => void;\r\n lblTitle?: string;\r\n maxWidth?: number;\r\n },\r\n ): Promise<void> {\r\n const { message, html, onConfirm, lblTitle, maxWidth } = args;\r\n\r\n // Creazione del contenuto come stringa HTML\r\n const messageHtml =\r\n html ??\r\n `\r\n <div style=\"\r\n white-space: pre-line;\r\n word-break: break-all;\r\n padding: 0rem 1rem 1rem 1rem;\r\n max-width: ${typeof maxWidth === 'number' ? maxWidth + 'px' : '800px'};\r\n \">\r\n ${message ?? ''}\r\n </div>\r\n `;\r\n\r\n await custom({\r\n title: lblTitle && UniLocaleManager.translate(lblTitle),\r\n dragEnabled: false,\r\n showTitle: !!lblTitle,\r\n messageHtml,\r\n buttons: [\r\n {\r\n text: UniLocaleManager.translate('Confirm', 'btn'),\r\n onClick: onConfirm,\r\n },\r\n {\r\n text: UniLocaleManager.translate('Delete', 'btn'),\r\n onClick: (): null => null,\r\n },\r\n ],\r\n }).show();\r\n }\r\n\r\n public createPopup(\r\n args: PopupContent & {\r\n id: string;\r\n type: PopupType;\r\n title?: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n },\r\n ): void {\r\n /* Recupera args */\r\n const { id, type, message, html, title, detail, closable } = args;\r\n\r\n /* Aggiunge pulsante il dettaglio dell'errore */\r\n const toolbarItems: ToolbarItem[] = [];\r\n if (detail && message) {\r\n toolbarItems.push(\r\n ...this.createErrorItems(id, message, detail.message, detail.messageToCopy),\r\n );\r\n }\r\n\r\n /* Aggiunge pulsante per la chiusura del popup (possibile poi solo da qui) */\r\n if (closable || closable === undefined) {\r\n toolbarItems.push(this.createCloseItem(id));\r\n }\r\n\r\n /* Crea popup */\r\n this.createPopupInstance({\r\n id,\r\n type,\r\n title: title ?? UniLocaleManager.translate('ErrorFrontend'),\r\n message: message ?? html,\r\n toolbarItems,\r\n });\r\n }\r\n\r\n /* -------------------------------- Methods: popup error/warning -------------------------------- */\r\n public createPopupError(args: {\r\n message: string;\r\n title?: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n ref?: string;\r\n }): void {\r\n /* Recupera args */\r\n const { message, title, detail, closable, ref } = args;\r\n\r\n this.createPopup({\r\n id: `popup-${ref ?? Date.now()}`,\r\n type: 'ERROR',\r\n message,\r\n title,\r\n detail,\r\n closable,\r\n });\r\n }\r\n\r\n public createPopupWarning(args: {\r\n message: string;\r\n title?: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n ref?: string;\r\n }): void {\r\n /* Recupera args */\r\n const { message, title, detail, closable, ref } = args;\r\n\r\n this.createPopup({\r\n id: `popup-${ref ?? Date.now()}`,\r\n type: 'WARNING',\r\n message,\r\n title,\r\n detail,\r\n closable,\r\n });\r\n }\r\n\r\n public async createPopupErrorHttp(args: { err: HttpErrorResponse; ref?: string }): Promise<void> {\r\n /* Recupera args */\r\n const { err, ref } = args;\r\n\r\n /* Evita doppia istanza con lo stesso id */\r\n if (this.isPopupAlreadyExisting(ref)) return;\r\n\r\n /* Message detail */\r\n const { status, statusText, message, error } = err;\r\n let errorDetail = `[${status} - ${statusText}]: ${message}`;\r\n if (error) {\r\n try {\r\n if (error instanceof Blob) errorDetail += `\\n ${await error.text()}`;\r\n else if (typeof error === 'string') errorDetail += `\\n ${error}`;\r\n else if (typeof error === 'object') errorDetail += `\\n ${JSON.stringify(error, null, 2)}`;\r\n else errorDetail += `\\n ${String(error)}`;\r\n } catch (e) {\r\n errorDetail += `\\n Error processing the error message: ${e}`;\r\n }\r\n }\r\n\r\n /* Creazione popup */\r\n this.createPopupError({\r\n message: UniLocaleManager.translate(`error${err.status}`), // es: error404, error500\r\n title: UniLocaleManager.translate(`ErrorBackend`),\r\n detail: { message: errorDetail, messageToCopy: JSON.stringify(err) },\r\n ref,\r\n });\r\n }\r\n\r\n public async createPopupErrorCustom(args: {\r\n label: string;\r\n interpolateParams?: Record<string, string | number | Date>;\r\n ref?: string;\r\n }): Promise<void> {\r\n /* Recupera args */\r\n const { label, interpolateParams, ref } = args;\r\n\r\n /* Evita doppia istanza con lo stesso id */\r\n if (this.isPopupAlreadyExisting(ref)) return;\r\n\r\n this.createPopupError({\r\n message: UniLocaleManager.translate(label, 'lbl', interpolateParams),\r\n title: UniLocaleManager.translate('ErrorBackendCustom'),\r\n detail: undefined,\r\n closable: true,\r\n ref,\r\n });\r\n }\r\n\r\n /* -------------------------------- Methods: popup close -------------------------------- */\r\n public closePopupError(ref: string): void {\r\n const id = `popup-${ref}`;\r\n const instance = this.instances.get(id);\r\n if (!instance) return;\r\n\r\n instance.dispose();\r\n instance.element()?.remove();\r\n this.instances.delete(id);\r\n }\r\n\r\n /* -------------------------------- Methods: utils -------------------------------- */\r\n private createCloseItem(id?: string): ToolbarItem {\r\n return {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'after',\r\n options: {\r\n type: 'normal',\r\n icon: 'close',\r\n text: UniLocaleManager.translate('Close', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): void => {\r\n const popup = id ? this.instances.get(id) : undefined;\r\n popup?.hide();\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createErrorItems(\r\n id: string,\r\n initialMessage: string,\r\n detailMessage: string,\r\n messageToCopy?: string,\r\n ): ToolbarItem[] {\r\n let inShow = false; // Variabile di stato per i dettagli\r\n const items: ToolbarItem[] = [\r\n {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'before',\r\n options: {\r\n type: 'normal',\r\n icon: 'find',\r\n text: UniLocaleManager.translate('Details', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (e: any): void => {\r\n const popup = this.instances.get(id);\r\n if (!popup) return;\r\n const content = popup.content().firstElementChild as HTMLElement;\r\n if (!content) return;\r\n inShow = !inShow;\r\n content.textContent = inShow ? detailMessage : initialMessage;\r\n if (inShow) {\r\n // Modalità dettaglio\r\n content.style.display = 'block';\r\n content.style.textAlign = 'left';\r\n } else {\r\n // Modalità principal\r\n content.style.display = 'flex';\r\n content.style.alignItems = 'center';\r\n content.style.justifyContent = 'center';\r\n content.style.textAlign = 'center';\r\n }\r\n e.component.option({\r\n text: UniLocaleManager.translate(inShow ? 'Back' : 'Details', 'btn'),\r\n icon: inShow ? 'back' : 'find',\r\n });\r\n },\r\n },\r\n },\r\n {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'before',\r\n options: {\r\n type: 'normal',\r\n icon: 'refresh',\r\n text: UniLocaleManager.translate('Refresh', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): void => location.reload(),\r\n },\r\n },\r\n ];\r\n\r\n if (messageToCopy) {\r\n items.push({\r\n visible: window.isSecureContext,\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'after',\r\n options: {\r\n type: 'normal',\r\n icon: 'copy',\r\n text: UniLocaleManager.translate('Copy', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): void => {\r\n try {\r\n navigator?.clipboard?.writeText(messageToCopy);\r\n } catch (e) {\r\n console.error('Failed to copy text: ', e);\r\n }\r\n },\r\n },\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private createPopupInstance(arg: {\r\n id: string;\r\n type: PopupType;\r\n title: string;\r\n message: string;\r\n toolbarItems: ToolbarItem[];\r\n }): void {\r\n /* Recupera argomenti */\r\n const { id, type, title, message, toolbarItems = [] } = arg;\r\n\r\n /* Evita doppia istanza con lo stesso id */\r\n if (this.instances.has(id)) {\r\n this.instances.get(id)?.show();\r\n return;\r\n }\r\n\r\n /* Crea container del popup */\r\n const container = document.createElement('div');\r\n document.body.appendChild(container);\r\n\r\n /* Crea classe css */\r\n let cssClass = '';\r\n switch (type) {\r\n case 'WARNING':\r\n cssClass = 'uni-popup-warning';\r\n break;\r\n case 'ERROR':\r\n cssClass = 'uni-popup-error';\r\n break;\r\n case 'INFO':\r\n cssClass = 'uni-popup-info';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n /* Crea popup */\r\n const popup = new Popup(container, {\r\n title,\r\n deferRendering: false,\r\n maxHeight: 500,\r\n maxWidth: 1000,\r\n dragEnabled: false,\r\n showCloseButton: false,\r\n hideOnOutsideClick: false,\r\n shading: true,\r\n wrapperAttr: {\r\n id,\r\n ...(cssClass && { class: cssClass }),\r\n },\r\n toolbarItems,\r\n contentTemplate: (): HTMLDivElement => {\r\n const messageContainer = document.createElement('div');\r\n messageContainer.style.display = 'flex';\r\n messageContainer.style.alignItems = 'center';\r\n messageContainer.style.justifyContent = 'center';\r\n messageContainer.style.whiteSpace = 'pre-line';\r\n messageContainer.style.wordBreak = 'break-all';\r\n messageContainer.style.height = '100%';\r\n messageContainer.style.textAlign = 'center';\r\n messageContainer.textContent = message;\r\n return messageContainer;\r\n },\r\n onHidden: (): void => {\r\n popup.dispose();\r\n container.remove();\r\n this.instances.delete(id);\r\n },\r\n });\r\n\r\n /* Mostra popup */\r\n this.instances.set(id, popup);\r\n popup.show();\r\n }\r\n\r\n private isPopupAlreadyExisting(ref?: string): boolean {\r\n if (!ref) return false;\r\n\r\n const id = `popup-${ref}`;\r\n const existingPopup = this.instances.get(id);\r\n\r\n if (existingPopup) {\r\n existingPopup.show();\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { ToastType } from 'devextreme/ui/toast_types';\r\nimport { IToastManager, ToastConfig } from 'uni-manager';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UNIToastService implements IToastManager {\r\n public success(message: string, config?: ToastConfig): void {\r\n this.show(message, 'success', config);\r\n }\r\n\r\n public info(message: string, config?: ToastConfig): void {\r\n this.show(message, 'info', config);\r\n }\r\n\r\n public warning(message: string, config?: ToastConfig): void {\r\n this.show(message, 'warning', config);\r\n }\r\n\r\n public error(message: string, config?: ToastConfig): void {\r\n this.show(message, 'error', config);\r\n }\r\n\r\n /* ----------------------- Metodi: utils ----------------------- */\r\n private show(message: string, type: ToastType, config?: ToastConfig): void {\r\n notify(\r\n {\r\n message,\r\n type,\r\n height: 50,\r\n width: 400,\r\n displayTime: config?.duration ?? 4000,\r\n animation: {\r\n show: { type: 'fade', duration: 400, from: 0, to: 1 },\r\n hide: { type: 'fade', duration: 300, from: 1, to: 0 },\r\n },\r\n },\r\n { position: 'bottom center', direction: 'up-push' },\r\n );\r\n }\r\n}\r\n","/*\r\n * Public API Surface of uni-app-fe\r\n */\r\n\r\nexport * from './manager/index';\r\nexport * from './pipe/index';\r\nexport * from './service/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uni-app-fe.mjs","sources":["../../../projects/uni-app-fe/src/manager/locale.manager.ts","../../../projects/uni-app-fe/src/pipe/uni-translate-inline-params.pipe.ts","../../../projects/uni-app-fe/src/pipe/uni-translate.pipe.ts","../../../projects/uni-app-fe/src/pipe/index.ts","../../../projects/uni-app-fe/src/service/uni-loader.service.ts","../../../projects/uni-app-fe/src/service/uni-popup.service.ts","../../../projects/uni-app-fe/src/service/uni-toast.service.ts","../../../projects/uni-app-fe/src/public-api.ts","../../../projects/uni-app-fe/src/uni-app-fe.ts"],"sourcesContent":["import { registerLocaleData } from '@angular/common';\r\nimport localeEsCl from '@angular/common/locales/es-CL';\r\nimport localeIt from '@angular/common/locales/it';\r\nimport { config } from 'devextreme-angular/common';\r\nimport { loadMessages, locale } from 'devextreme-angular/common/core/localization';\r\nimport esMessages from 'devextreme/localization/messages/es.json';\r\nimport itMessages from 'devextreme/localization/messages/it.json';\r\nimport { UniLocaleManager } from 'uni-manager';\r\n\r\nexport class UniLocaleManagerAngular {\r\n /* ------------------------------------------------------------------------------- */\r\n /* ----------------------------------- Metodi ------------------------------------ */\r\n /* ------------------------------------------------------------------------------- */\r\n /**\r\n * Registra i dati specifici del locale nel framework Angular.\r\n * Necessario per garantire che le pipe built-in (es. DatePipe, CurrencyPipe) operino secondo le convenzioni del paese corrente.\r\n */\r\n public static setLocaleAngular(): void {\r\n /* Imposta i dati del locale corrente in Angular necessari per le pipe */\r\n const currentLocale = UniLocaleManager.locale;\r\n if (currentLocale === 'it-IT') {\r\n registerLocaleData(localeIt, 'it-IT');\r\n } else if (currentLocale === 'es-CL') {\r\n registerLocaleData(localeEsCl, 'es-CL');\r\n }\r\n }\r\n\r\n /**\r\n * Inizializza la localizzazione specifica per i componenti DevExtreme.\r\n * Imposta il locale per le formattazioni native dei widget e carica i file di messaggi JSON per la traduzione dei testi di sistema.\r\n */\r\n public static setLocaleDevextreme(): void {\r\n /* Imposta il locale per DevExtreme */\r\n locale(UniLocaleManager.locale);\r\n\r\n /* Configura la logica di raggruppamento per valuta */\r\n if (UniLocaleManager.locale === 'it-IT') {\r\n config({ defaultCurrency: 'EUR' });\r\n } else if (UniLocaleManager.locale === 'es-CL') {\r\n config({ defaultCurrency: 'CLP' });\r\n }\r\n\r\n /* Carica i messaggi di traduzione */\r\n switch (UniLocaleManager.language) {\r\n case 'it':\r\n loadMessages(itMessages);\r\n break;\r\n case 'es':\r\n loadMessages(esMessages);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniLocaleManager } from 'uni-manager';\r\n\r\n@Pipe({\r\n name: 'translate_inline_params',\r\n standalone: true,\r\n})\r\nexport class UNITranslateInlineParamsPipe implements PipeTransform {\r\n transform(label: string | null | undefined, splitChar: string): string {\r\n if (!label) return '';\r\n\r\n return UniLocaleManager.translateInlineParams(label, splitChar);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniLocaleManager } from 'uni-manager';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n standalone: true,\r\n})\r\nexport class UNITranslatePipe implements PipeTransform {\r\n transform(\r\n label: string | null | undefined,\r\n prefix = 'lbl',\r\n interpolateParams?: Record<string, string | number | Date>,\r\n ): string {\r\n if (!label) return '';\r\n\r\n return UniLocaleManager.translate(label, prefix, interpolateParams);\r\n }\r\n}\r\n","/* eslint-disable simple-import-sort/exports */\r\n\r\nexport * from './uni-translate-inline-params.pipe';\r\nexport * from './uni-translate.pipe';\r\n","import { Injectable } from '@angular/core';\r\nimport LoadPanel from 'devextreme/ui/load_panel';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UNILoaderService {\r\n /* Load Panel */\r\n private loadPanel: LoadPanel;\r\n\r\n constructor() {\r\n const container = document.querySelector('body');\r\n const content: HTMLDivElement = document.createElement('div');\r\n container!.appendChild(content);\r\n\r\n this.loadPanel = new LoadPanel(content, {\r\n showIndicator: true,\r\n showPane: true,\r\n shading: true,\r\n shadingColor: 'rgba(0,0,0,0.4)',\r\n });\r\n }\r\n\r\n /* ------------------------------------- Methods ------------------------------------- */\r\n public show(): void {\r\n this.loadPanel.show();\r\n }\r\n\r\n public hide(): void {\r\n this.loadPanel.hide();\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { custom } from 'devextreme/ui/dialog';\r\nimport Popup, { ToolbarItem } from 'devextreme/ui/popup';\r\nimport { UniLocaleManager } from 'uni-manager';\r\n\r\nexport type PopupType = 'INFO' | 'WARNING' | 'ERROR';\r\n\r\nexport type Instance = Popup<{\r\n title: string;\r\n deferRendering: boolean;\r\n maxHeight: number;\r\n maxWidth: number;\r\n dragEnabled: boolean;\r\n showCloseButton: boolean;\r\n hideOnOutsideClick: boolean;\r\n shading: boolean;\r\n wrapperAttr: { id: string; class?: string };\r\n toolbarItems: ToolbarItem[];\r\n contentTemplate: () => HTMLDivElement;\r\n onHidden: () => void;\r\n}>;\r\n\r\nexport type PopupContent = { message: string; html?: never } | { message?: never; html: string };\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UNIPopupService {\r\n /* Variables */\r\n private instances = new Map<string, Instance>();\r\n\r\n /* -------------------------------- Methods: popup creation -------------------------------- */\r\n public async createPopupConfirm(\r\n args: PopupContent & {\r\n onConfirm: () => void;\r\n lblTitle?: string;\r\n maxWidth?: number;\r\n },\r\n ): Promise<void> {\r\n const { message, html, onConfirm, lblTitle, maxWidth } = args;\r\n\r\n // Creazione del contenuto come stringa HTML\r\n const messageHtml =\r\n html ??\r\n `\r\n <div style=\"\r\n white-space: pre-line;\r\n word-break: break-all;\r\n padding: 0rem 1rem 1rem 1rem;\r\n max-width: ${typeof maxWidth === 'number' ? maxWidth + 'px' : '800px'};\r\n \">\r\n ${message ?? ''}\r\n </div>\r\n `;\r\n\r\n await custom({\r\n title: lblTitle && UniLocaleManager.translate(lblTitle),\r\n dragEnabled: false,\r\n showTitle: !!lblTitle,\r\n messageHtml,\r\n buttons: [\r\n {\r\n text: UniLocaleManager.translate('Confirm', 'btn'),\r\n onClick: onConfirm,\r\n },\r\n {\r\n text: UniLocaleManager.translate('Delete', 'btn'),\r\n onClick: (): null => null,\r\n },\r\n ],\r\n }).show();\r\n }\r\n\r\n public createPopup(\r\n args: PopupContent & {\r\n id: string;\r\n type: PopupType;\r\n title?: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n },\r\n ): void {\r\n /* Recupera args */\r\n const { id, type, message, html, title, detail, closable } = args;\r\n\r\n /* Aggiunge pulsante il dettaglio dell'errore */\r\n const toolbarItems: ToolbarItem[] = [];\r\n if (detail && message) {\r\n toolbarItems.push(\r\n ...this.createErrorItems(id, message, detail.message, detail.messageToCopy),\r\n );\r\n }\r\n\r\n /* Aggiunge pulsante per la chiusura del popup (possibile poi solo da qui) */\r\n if (closable || closable === undefined) {\r\n toolbarItems.push(this.createCloseItem(id));\r\n }\r\n\r\n /* Crea popup */\r\n this.createPopupInstance({\r\n id,\r\n type,\r\n title: title ?? UniLocaleManager.translate('ErrorFrontend'),\r\n message: message ?? html,\r\n toolbarItems,\r\n });\r\n }\r\n\r\n /* -------------------------------- Methods: popup error/warning -------------------------------- */\r\n public createPopupError(args: {\r\n message: string;\r\n title?: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n ref?: string;\r\n }): void {\r\n /* Recupera args */\r\n const { message, title, detail, closable, ref } = args;\r\n\r\n this.createPopup({\r\n id: `popup-${ref ?? Date.now()}`,\r\n type: 'ERROR',\r\n message,\r\n title,\r\n detail,\r\n closable,\r\n });\r\n }\r\n\r\n public createPopupWarning(args: {\r\n message: string;\r\n title?: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n ref?: string;\r\n }): void {\r\n /* Recupera args */\r\n const { message, title, detail, closable, ref } = args;\r\n\r\n this.createPopup({\r\n id: `popup-${ref ?? Date.now()}`,\r\n type: 'WARNING',\r\n message,\r\n title,\r\n detail,\r\n closable,\r\n });\r\n }\r\n\r\n public async createPopupErrorHttp(args: { err: HttpErrorResponse; ref?: string }): Promise<void> {\r\n /* Recupera args */\r\n const { err, ref } = args;\r\n\r\n /* Evita doppia istanza con lo stesso id */\r\n if (this.isPopupAlreadyExisting(ref)) return;\r\n\r\n /* Message detail */\r\n const { status, statusText, message, error } = err;\r\n let errorDetail = `[${status} - ${statusText}]: ${message}`;\r\n if (error) {\r\n try {\r\n if (error instanceof Blob) errorDetail += `\\n ${await error.text()}`;\r\n else if (typeof error === 'string') errorDetail += `\\n ${error}`;\r\n else if (typeof error === 'object') errorDetail += `\\n ${JSON.stringify(error, null, 2)}`;\r\n else errorDetail += `\\n ${String(error)}`;\r\n } catch (e) {\r\n errorDetail += `\\n Error processing the error message: ${e}`;\r\n }\r\n }\r\n\r\n /* Creazione popup */\r\n this.createPopupError({\r\n message: UniLocaleManager.translate(`error${err.status}`), // es: error404, error500\r\n title: UniLocaleManager.translate(`ErrorBackend`),\r\n detail: { message: errorDetail, messageToCopy: JSON.stringify(err) },\r\n ref,\r\n });\r\n }\r\n\r\n public async createPopupErrorCustom(args: {\r\n label: string;\r\n interpolateParams?: Record<string, string | number | Date>;\r\n ref?: string;\r\n }): Promise<void> {\r\n /* Recupera args */\r\n const { label, interpolateParams, ref } = args;\r\n\r\n /* Evita doppia istanza con lo stesso id */\r\n if (this.isPopupAlreadyExisting(ref)) return;\r\n\r\n this.createPopupError({\r\n message: UniLocaleManager.translate(label, 'lbl', interpolateParams),\r\n title: UniLocaleManager.translate('ErrorBackendCustom'),\r\n detail: undefined,\r\n closable: true,\r\n ref,\r\n });\r\n }\r\n\r\n /* -------------------------------- Methods: popup close -------------------------------- */\r\n public closePopupError(ref: string): void {\r\n const id = `popup-${ref}`;\r\n const instance = this.instances.get(id);\r\n if (!instance) return;\r\n\r\n instance.dispose();\r\n instance.element()?.remove();\r\n this.instances.delete(id);\r\n }\r\n\r\n /* -------------------------------- Methods: utils -------------------------------- */\r\n private createCloseItem(id?: string): ToolbarItem {\r\n return {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'after',\r\n options: {\r\n type: 'normal',\r\n icon: 'close',\r\n text: UniLocaleManager.translate('Close', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): void => {\r\n const popup = id ? this.instances.get(id) : undefined;\r\n popup?.hide();\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createErrorItems(\r\n id: string,\r\n initialMessage: string,\r\n detailMessage: string,\r\n messageToCopy?: string,\r\n ): ToolbarItem[] {\r\n let inShow = false; // Variabile di stato per i dettagli\r\n const items: ToolbarItem[] = [\r\n {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'before',\r\n options: {\r\n type: 'normal',\r\n icon: 'find',\r\n text: UniLocaleManager.translate('Details', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (e: any): void => {\r\n const popup = this.instances.get(id);\r\n if (!popup) return;\r\n const content = popup.content().firstElementChild as HTMLElement;\r\n if (!content) return;\r\n inShow = !inShow;\r\n content.textContent = inShow ? detailMessage : initialMessage;\r\n if (inShow) {\r\n // Modalità dettaglio\r\n content.style.display = 'block';\r\n content.style.textAlign = 'left';\r\n } else {\r\n // Modalità principal\r\n content.style.display = 'flex';\r\n content.style.alignItems = 'center';\r\n content.style.justifyContent = 'center';\r\n content.style.textAlign = 'center';\r\n }\r\n e.component.option({\r\n text: UniLocaleManager.translate(inShow ? 'Back' : 'Details', 'btn'),\r\n icon: inShow ? 'back' : 'find',\r\n });\r\n },\r\n },\r\n },\r\n {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'before',\r\n options: {\r\n type: 'normal',\r\n icon: 'refresh',\r\n text: UniLocaleManager.translate('Refresh', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): void => location.reload(),\r\n },\r\n },\r\n ];\r\n\r\n if (messageToCopy) {\r\n items.push({\r\n visible: window.isSecureContext,\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'after',\r\n options: {\r\n type: 'normal',\r\n icon: 'copy',\r\n text: UniLocaleManager.translate('Copy', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): void => {\r\n try {\r\n navigator?.clipboard?.writeText(messageToCopy);\r\n } catch (e) {\r\n console.error('Failed to copy text: ', e);\r\n }\r\n },\r\n },\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private createPopupInstance(arg: {\r\n id: string;\r\n type: PopupType;\r\n title: string;\r\n message: string;\r\n toolbarItems: ToolbarItem[];\r\n }): void {\r\n /* Recupera argomenti */\r\n const { id, type, title, message, toolbarItems = [] } = arg;\r\n\r\n /* Evita doppia istanza con lo stesso id */\r\n if (this.instances.has(id)) {\r\n this.instances.get(id)?.show();\r\n return;\r\n }\r\n\r\n /* Crea container del popup */\r\n const container = document.createElement('div');\r\n document.body.appendChild(container);\r\n\r\n /* Crea classe css */\r\n let cssClass = '';\r\n switch (type) {\r\n case 'WARNING':\r\n cssClass = 'uni-popup-warning';\r\n break;\r\n case 'ERROR':\r\n cssClass = 'uni-popup-error';\r\n break;\r\n case 'INFO':\r\n cssClass = 'uni-popup-info';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n /* Crea popup */\r\n const popup = new Popup(container, {\r\n title,\r\n deferRendering: false,\r\n maxHeight: 500,\r\n maxWidth: 1000,\r\n dragEnabled: false,\r\n showCloseButton: false,\r\n hideOnOutsideClick: false,\r\n shading: true,\r\n wrapperAttr: {\r\n id,\r\n ...(cssClass && { class: cssClass }),\r\n },\r\n toolbarItems,\r\n contentTemplate: (): HTMLDivElement => {\r\n const messageContainer = document.createElement('div');\r\n messageContainer.style.display = 'flex';\r\n messageContainer.style.alignItems = 'center';\r\n messageContainer.style.justifyContent = 'center';\r\n messageContainer.style.whiteSpace = 'pre-line';\r\n messageContainer.style.wordBreak = 'break-all';\r\n messageContainer.style.height = '100%';\r\n messageContainer.style.textAlign = 'center';\r\n messageContainer.textContent = message;\r\n return messageContainer;\r\n },\r\n onHidden: (): void => {\r\n popup.dispose();\r\n container.remove();\r\n this.instances.delete(id);\r\n },\r\n });\r\n\r\n /* Mostra popup */\r\n this.instances.set(id, popup);\r\n popup.show();\r\n }\r\n\r\n private isPopupAlreadyExisting(ref?: string): boolean {\r\n if (!ref) return false;\r\n\r\n const id = `popup-${ref}`;\r\n const existingPopup = this.instances.get(id);\r\n\r\n if (existingPopup) {\r\n existingPopup.show();\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { ToastType } from 'devextreme/ui/toast_types';\r\nimport { IToastManager, ToastConfig } from 'uni-manager';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UNIToastService implements IToastManager {\r\n public success(message: string, config?: ToastConfig): void {\r\n this.show(message, 'success', config);\r\n }\r\n\r\n public info(message: string, config?: ToastConfig): void {\r\n this.show(message, 'info', config);\r\n }\r\n\r\n public warning(message: string, config?: ToastConfig): void {\r\n this.show(message, 'warning', config);\r\n }\r\n\r\n public error(message: string, config?: ToastConfig): void {\r\n this.show(message, 'error', config);\r\n }\r\n\r\n /* ----------------------- Metodi: utils ----------------------- */\r\n private show(message: string, type: ToastType, config?: ToastConfig): void {\r\n notify(\r\n {\r\n message,\r\n type,\r\n height: 50,\r\n width: 400,\r\n displayTime: config?.duration ?? 4000,\r\n animation: {\r\n show: { type: 'fade', duration: 400, from: 0, to: 1 },\r\n hide: { type: 'fade', duration: 300, from: 1, to: 0 },\r\n },\r\n },\r\n { position: 'bottom center', direction: 'up-push' },\r\n );\r\n }\r\n}\r\n","/*\r\n * Public API Surface of uni-app-fe\r\n */\r\n\r\nexport * from './manager/index';\r\nexport * from './pipe/index';\r\nexport * from './service/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|