@masterkeymaterial/ui 0.0.2 → 0.0.3
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/masterkeymaterial-ui.mjs +6457 -0
- package/fesm2022/masterkeymaterial-ui.mjs.map +1 -0
- package/package.json +14 -5
- package/types/masterkeymaterial-ui.d.ts +928 -0
- package/ng-package.json +0 -10
- package/src/elements/ui-button/ui-button.css +0 -229
- package/src/elements/ui-button/ui-button.html +0 -12
- package/src/elements/ui-button/ui-button.ts +0 -133
- package/src/elements/ui-check-box/ui-check-box.css +0 -66
- package/src/elements/ui-check-box/ui-check-box.html +0 -5
- package/src/elements/ui-check-box/ui-check-box.ts +0 -65
- package/src/elements/ui-chip/ui-chip.css +0 -24
- package/src/elements/ui-chip/ui-chip.html +0 -3
- package/src/elements/ui-chip/ui-chip.ts +0 -25
- package/src/elements/ui-drop-zone/ui-drop-zone.css +0 -91
- package/src/elements/ui-drop-zone/ui-drop-zone.html +0 -8
- package/src/elements/ui-drop-zone/ui-drop-zone.ts +0 -153
- package/src/elements/ui-file-list/ui-file-list.css +0 -43
- package/src/elements/ui-file-list/ui-file-list.html +0 -17
- package/src/elements/ui-file-list/ui-file-list.ts +0 -22
- package/src/elements/ui-list-errors/ui-list-errors.css +0 -30
- package/src/elements/ui-list-errors/ui-list-errors.html +0 -10
- package/src/elements/ui-list-errors/ui-list-errors.ts +0 -14
- package/src/elements/ui-loading/ui-loading.css +0 -13
- package/src/elements/ui-loading/ui-loading.html +0 -1
- package/src/elements/ui-loading/ui-loading.ts +0 -10
- package/src/elements/ui-menu/ui-menu.css +0 -69
- package/src/elements/ui-menu/ui-menu.html +0 -20
- package/src/elements/ui-menu/ui-menu.ts +0 -267
- package/src/elements/ui-procurar/ui-procurar.css +0 -48
- package/src/elements/ui-procurar/ui-procurar.html +0 -14
- package/src/elements/ui-procurar/ui-procurar.ts +0 -82
- package/src/elements/ui-progress/ui-progress.css +0 -0
- package/src/elements/ui-progress/ui-progress.html +0 -1
- package/src/elements/ui-progress/ui-progress.ts +0 -15
- package/src/elements/ui-select/ui-select.css +0 -211
- package/src/elements/ui-select/ui-select.html +0 -46
- package/src/elements/ui-select/ui-select.ts +0 -482
- package/src/elements/ui-slide/ui-slide.css +0 -75
- package/src/elements/ui-slide/ui-slide.html +0 -7
- package/src/elements/ui-slide/ui-slide.ts +0 -61
- package/src/fields/Base/BaseFieldsForm/BaseFieldsForm.component.ts +0 -113
- package/src/fields/Base/BaseFieldsValues/BaseFieldsValues.ts +0 -112
- package/src/fields/Formulario/Formulario.ts +0 -1056
- package/src/fields/Formulario/form-action/form-action.css +0 -98
- package/src/fields/Formulario/form-action/form-action.html +0 -75
- package/src/fields/Formulario/form-action/form-action.ts +0 -187
- package/src/fields/Formulario/form-controls/form-controls.css +0 -108
- package/src/fields/Formulario/form-controls/form-controls.html +0 -105
- package/src/fields/Formulario/form-controls/form-controls.ts +0 -122
- package/src/fields/Formulario/form-fase/form-fase.css +0 -84
- package/src/fields/Formulario/form-fase/form-fase.html +0 -24
- package/src/fields/Formulario/form-fase/form-fase.ts +0 -157
- package/src/fields/Formulario/form-filter/form-filter.css +0 -50
- package/src/fields/Formulario/form-filter/form-filter.html +0 -25
- package/src/fields/Formulario/form-filter/form-filter.ts +0 -53
- package/src/fields/Formulario/form-no-action/form-no-action.css +0 -32
- package/src/fields/Formulario/form-no-action/form-no-action.html +0 -12
- package/src/fields/Formulario/form-no-action/form-no-action.ts +0 -21
- package/src/fields/Formulario/formated-values/formated-values.css +0 -104
- package/src/fields/Formulario/formated-values/formated-values.html +0 -15
- package/src/fields/Formulario/formated-values/formated-values.ts +0 -186
- package/src/fields/Formulario/single-values/single-values.css +0 -88
- package/src/fields/Formulario/single-values/single-values.html +0 -11
- package/src/fields/Formulario/single-values/single-values.ts +0 -65
- package/src/fields/autocomplete/autocomplete.css +0 -94
- package/src/fields/autocomplete/autocomplete.html +0 -38
- package/src/fields/autocomplete/autocomplete.ts +0 -294
- package/src/fields/button/button.css +0 -7
- package/src/fields/button/button.html +0 -19
- package/src/fields/button/button.ts +0 -38
- package/src/fields/checkbox/checkbox.css +0 -27
- package/src/fields/checkbox/checkbox.html +0 -20
- package/src/fields/checkbox/checkbox.ts +0 -44
- package/src/fields/color/CirculoColorido/circulocolorido.css +0 -50
- package/src/fields/color/CirculoColorido/circulocolorido.html +0 -8
- package/src/fields/color/CirculoColorido/circulocolorido.ts +0 -24
- package/src/fields/color/color.css +0 -15
- package/src/fields/color/color.html +0 -24
- package/src/fields/color/color.ts +0 -47
- package/src/fields/date/date.html +0 -19
- package/src/fields/date/date.ts +0 -29
- package/src/fields/datetime/datetime.html +0 -19
- package/src/fields/datetime/datetime.ts +0 -29
- package/src/fields/display/display.css +0 -7
- package/src/fields/display/display.html +0 -20
- package/src/fields/display/display.ts +0 -43
- package/src/fields/editor/editor.css +0 -51
- package/src/fields/editor/editor.html +0 -37
- package/src/fields/editor/editor.ts +0 -218
- package/src/fields/email/email.html +0 -19
- package/src/fields/email/email.ts +0 -29
- package/src/fields/fields.css +0 -180
- package/src/fields/generic/generic.html +0 -3
- package/src/fields/generic/generic.ts +0 -91
- package/src/fields/hidden/hidden.html +0 -3
- package/src/fields/hidden/hidden.ts +0 -20
- package/src/fields/icon/icon.css +0 -19
- package/src/fields/icon/icon.html +0 -27
- package/src/fields/icon/icon.ts +0 -31
- package/src/fields/multifactor/multifactor.css +0 -21
- package/src/fields/multifactor/multifactor.html +0 -39
- package/src/fields/multifactor/multifactor.ts +0 -106
- package/src/fields/multikv/multikv.css +0 -43
- package/src/fields/multikv/multikv.html +0 -47
- package/src/fields/multikv/multikv.ts +0 -88
- package/src/fields/multitext/multitext.css +0 -36
- package/src/fields/multitext/multitext.html +0 -38
- package/src/fields/multitext/multitext.ts +0 -75
- package/src/fields/number/number.html +0 -20
- package/src/fields/number/number.ts +0 -35
- package/src/fields/password/password.html +0 -23
- package/src/fields/password/password.ts +0 -37
- package/src/fields/search/search.css +0 -0
- package/src/fields/search/search.html +0 -19
- package/src/fields/search/search.ts +0 -54
- package/src/fields/select/select.css +0 -15
- package/src/fields/select/select.html +0 -18
- package/src/fields/select/select.ts +0 -52
- package/src/fields/slide/slide.css +0 -27
- package/src/fields/slide/slide.html +0 -20
- package/src/fields/slide/slide.ts +0 -45
- package/src/fields/text/text.html +0 -19
- package/src/fields/text/text.ts +0 -30
- package/src/fields/textarea/textarea.css +0 -4
- package/src/fields/textarea/textarea.html +0 -20
- package/src/fields/textarea/textarea.ts +0 -31
- package/src/fields/time/time.html +0 -19
- package/src/fields/time/time.ts +0 -29
- package/src/fields/upload/upload.css +0 -24
- package/src/fields/upload/upload.html +0 -41
- package/src/fields/upload/upload.ts +0 -137
- package/src/interfaces/interfaces.ts +0 -61
- package/src/public-api.ts +0 -38
- package/src/util/ClassOf.pipe.ts +0 -11
- package/src/util/JsonColorido.pipe.ts +0 -11
- package/src/util/util.ts +0 -2151
- package/tsconfig.lib.json +0 -16
- package/tsconfig.lib.prod.json +0 -9
- package/tsconfig.spec.json +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"masterkeymaterial-ui.mjs","sources":["../../../projects/master-key-material/src/util/util.ts","../../../projects/master-key-material/src/fields/Formulario/Formulario.ts","../../../projects/master-key-material/src/fields/Base/BaseFieldsValues/BaseFieldsValues.ts","../../../projects/master-key-material/src/fields/Base/BaseFieldsForm/BaseFieldsForm.component.ts","../../../projects/master-key-material/src/elements/ui-button/ui-button.ts","../../../projects/master-key-material/src/elements/ui-button/ui-button.html","../../../projects/master-key-material/src/elements/ui-chip/ui-chip.ts","../../../projects/master-key-material/src/elements/ui-chip/ui-chip.html","../../../projects/master-key-material/src/elements/ui-drop-zone/ui-drop-zone.ts","../../../projects/master-key-material/src/elements/ui-drop-zone/ui-drop-zone.html","../../../projects/master-key-material/src/elements/ui-file-list/ui-file-list.ts","../../../projects/master-key-material/src/elements/ui-file-list/ui-file-list.html","../../../projects/master-key-material/src/elements/ui-select/ui-select.ts","../../../projects/master-key-material/src/elements/ui-select/ui-select.html","../../../projects/master-key-material/src/elements/ui-procurar/ui-procurar.ts","../../../projects/master-key-material/src/elements/ui-procurar/ui-procurar.html","../../../projects/master-key-material/src/elements/ui-progress/ui-progress.ts","../../../projects/master-key-material/src/elements/ui-progress/ui-progress.html","../../../projects/master-key-material/src/elements/ui-slide/ui-slide.ts","../../../projects/master-key-material/src/elements/ui-slide/ui-slide.html","../../../projects/master-key-material/src/elements/ui-check-box/ui-check-box.ts","../../../projects/master-key-material/src/elements/ui-check-box/ui-check-box.html","../../../projects/master-key-material/src/elements/ui-list-errors/ui-list-errors.ts","../../../projects/master-key-material/src/elements/ui-list-errors/ui-list-errors.html","../../../projects/master-key-material/src/elements/ui-loading/ui-loading.ts","../../../projects/master-key-material/src/elements/ui-loading/ui-loading.html","../../../projects/master-key-material/src/elements/ui-menu/ui-menu.ts","../../../projects/master-key-material/src/elements/ui-menu/ui-menu.html","../../../projects/master-key-material/src/fields/autocomplete/autocomplete.ts","../../../projects/master-key-material/src/fields/autocomplete/autocomplete.html","../../../projects/master-key-material/src/fields/button/button.ts","../../../projects/master-key-material/src/fields/button/button.html","../../../projects/master-key-material/src/fields/checkbox/checkbox.ts","../../../projects/master-key-material/src/fields/checkbox/checkbox.html","../../../projects/master-key-material/src/fields/color/CirculoColorido/circulocolorido.ts","../../../projects/master-key-material/src/fields/color/CirculoColorido/circulocolorido.html","../../../projects/master-key-material/src/fields/color/color.ts","../../../projects/master-key-material/src/fields/color/color.html","../../../projects/master-key-material/src/fields/date/date.ts","../../../projects/master-key-material/src/fields/date/date.html","../../../projects/master-key-material/src/fields/datetime/datetime.ts","../../../projects/master-key-material/src/fields/datetime/datetime.html","../../../projects/master-key-material/src/util/JsonColorido.pipe.ts","../../../projects/master-key-material/src/fields/display/display.ts","../../../projects/master-key-material/src/fields/display/display.html","../../../projects/master-key-material/src/fields/editor/editor.ts","../../../projects/master-key-material/src/fields/editor/editor.html","../../../projects/master-key-material/src/fields/email/email.ts","../../../projects/master-key-material/src/fields/email/email.html","../../../projects/master-key-material/src/fields/hidden/hidden.ts","../../../projects/master-key-material/src/fields/hidden/hidden.html","../../../projects/master-key-material/src/fields/icon/icon.ts","../../../projects/master-key-material/src/fields/icon/icon.html","../../../projects/master-key-material/src/fields/multifactor/multifactor.ts","../../../projects/master-key-material/src/fields/multifactor/multifactor.html","../../../projects/master-key-material/src/fields/multitext/multitext.ts","../../../projects/master-key-material/src/fields/multitext/multitext.html","../../../projects/master-key-material/src/fields/number/number.ts","../../../projects/master-key-material/src/fields/number/number.html","../../../projects/master-key-material/src/fields/password/password.ts","../../../projects/master-key-material/src/fields/password/password.html","../../../projects/master-key-material/src/fields/search/search.ts","../../../projects/master-key-material/src/fields/search/search.html","../../../projects/master-key-material/src/fields/select/select.ts","../../../projects/master-key-material/src/fields/select/select.html","../../../projects/master-key-material/src/fields/slide/slide.ts","../../../projects/master-key-material/src/fields/slide/slide.html","../../../projects/master-key-material/src/fields/text/text.ts","../../../projects/master-key-material/src/fields/text/text.html","../../../projects/master-key-material/src/fields/upload/upload.ts","../../../projects/master-key-material/src/fields/upload/upload.html","../../../projects/master-key-material/src/fields/time/time.ts","../../../projects/master-key-material/src/fields/time/time.html","../../../projects/master-key-material/src/fields/textarea/textarea.ts","../../../projects/master-key-material/src/fields/textarea/textarea.html","../../../projects/master-key-material/src/fields/multikv/multikv.ts","../../../projects/master-key-material/src/fields/multikv/multikv.html","../../../projects/master-key-material/src/fields/generic/generic.ts","../../../projects/master-key-material/src/fields/generic/generic.html","../../../projects/master-key-material/src/util/ClassOf.pipe.ts","../../../projects/master-key-material/src/fields/Formulario/form-controls/form-controls.ts","../../../projects/master-key-material/src/fields/Formulario/form-controls/form-controls.html","../../../projects/master-key-material/src/fields/Formulario/form-filter/form-filter.ts","../../../projects/master-key-material/src/fields/Formulario/form-filter/form-filter.html","../../../projects/master-key-material/src/fields/Formulario/form-fase/form-fase.ts","../../../projects/master-key-material/src/fields/Formulario/form-fase/form-fase.html","../../../projects/master-key-material/src/fields/Formulario/form-action/form-action.ts","../../../projects/master-key-material/src/fields/Formulario/form-action/form-action.html","../../../projects/master-key-material/src/fields/Formulario/form-no-action/form-no-action.ts","../../../projects/master-key-material/src/fields/Formulario/form-no-action/form-no-action.html","../../../projects/master-key-material/src/fields/Formulario/formated-values/formated-values.ts","../../../projects/master-key-material/src/fields/Formulario/formated-values/formated-values.html","../../../projects/master-key-material/src/fields/Formulario/single-values/single-values.ts","../../../projects/master-key-material/src/fields/Formulario/single-values/single-values.html","../../../projects/master-key-material/src/public-api.ts","../../../projects/master-key-material/src/masterkeymaterial-ui.ts"],"sourcesContent":["import { WritableSignal } from \"@angular/core\";\r\nimport { IFieldComponent } from \"../fields/Formulario/Formulario\";\r\n\r\nexport class LibUtil {\r\n\r\n static loglevel = 0;\r\n static formConfigs: Partial<IFieldComponent<any>> = {};\r\n\r\n static classof = (o: any): IClassOf => {\r\n let nomeClasse = Object.prototype.toString.call(o).slice(8, -1).toLowerCase();\r\n if (nomeClasse == \"number\") {\r\n if (o.toString() == \"NaN\") {\r\n nomeClasse = \"nan\";\r\n }\r\n }\r\n return nomeClasse as IClassOf;\r\n };\r\n\r\n static wait = (ms: number) => {\r\n // Essa mecânica usa um setTimeout. A mecânica do Queue não foi implementada\r\n return new Promise(r => setTimeout(r, ms))\r\n };\r\n\r\n static clonar = (i: any) => {\r\n // Clona com a técnica de montar e desmontar string.\r\n // Não funciona para objetos com serviços (Date, File, Map, Set, etc)\r\n let parsed = null;\r\n try {\r\n let stringified = JSON.stringify(i);\r\n if (stringified == null) return null;\r\n if (stringified == \"\") return \"\";\r\n parsed = JSON.parse(stringified);\r\n if (parsed == null) return null;\r\n } catch (e) {\r\n return null;\r\n }\r\n return parsed;\r\n };\r\n\r\n static limparObject = (o: any) => {\r\n // Converte (Object) Limpar Nulos e Vazios\r\n if (LibUtil.classof(o) == \"object\") {\r\n for (let propName in o) {\r\n if (\r\n o[propName as keyof typeof o] === null ||\r\n o[propName as keyof typeof o] === undefined ||\r\n o[propName as keyof typeof o] === \"\" ||\r\n o[propName as keyof typeof o] === \"undefined\"\r\n ) {\r\n delete o[propName as keyof typeof o];\r\n }\r\n }\r\n }\r\n return o;\r\n };\r\n\r\n static mascarar = (texto: any, mascara: any): string | undefined => {\r\n // Informando uma máscara e um texto, retorna dado mascarado.\r\n // Mascaras: 0=Numero, A=Letra, Outros repete.\r\n if (LibUtil.classof(mascara) != \"string\") {\r\n // Se passar uma funcao para a mascara, Executa a função enviando o texto e deve retornar uma string da mascara para esse texto.\r\n if (LibUtil.classof(mascara) == \"function\") {\r\n mascara = mascara(texto); // Sobreextreve a mascara a ser executada pelo retorno da função.\r\n }\r\n }\r\n if (mascara) {\r\n if (texto) {\r\n if (LibUtil.classof(texto) != \"string\") texto = texto?.toString();\r\n if (LibUtil.classof(mascara) != \"string\") mascara = mascara?.toString(); // Se a chegar até aqui e ainda não for string\r\n let ms = [...LibUtil.clonar(mascara)];\r\n let ss = [...LibUtil.clonar(texto)];\r\n // this.l(\"ss: \", ss);\r\n let ts: any = [];\r\n let pm = 0;\r\n ss.forEach(s => {\r\n let t = null;\r\n if (/[0-9]/.test(s)) {\r\n t = \"0\";\r\n } else if (/[a-zA-Z]/.test(s)) {\r\n t = \"A\";\r\n } else {\r\n t = \" \";\r\n }\r\n ts.push(t);\r\n pm++;\r\n });\r\n // this.l(\"ts: \", ts);\r\n // this.l(\"ms: \", ms);\r\n let r: any = [];\r\n for (let tp = 0, mp = 0; (tp < ts.length) && (mp < ms.length); tp++, mp++) {\r\n if (((ms[mp] === \"0\" || ms[mp] === \"A\") && (ms[mp] == ts[tp]))\r\n || (ms[mp] === \"S\" && (ts[tp] === \"A\" || ts[tp] === \"0\"))) {\r\n // FORMATO IGUAL.\r\n r.push(ss[tp]);\r\n } else {\r\n // MESMO CARACTER\r\n if (ss[tp] === ms[mp]) {\r\n r.push(ss[tp]);\r\n } else {\r\n // this.l(\"> \", ss[tp], \" vs \", ms[mp])\r\n // Mágica: Coloca o especial que o usuário não colocou.\r\n if (ms[mp] != \"0\" && ms[mp] != \"A\" && ms[mp] != \"S\") {\r\n r.push(ms[mp]);\r\n tp--;\r\n } else {\r\n mp--;\r\n }\r\n }\r\n }\r\n }\r\n return r.join(\"\");\r\n }\r\n } else {\r\n console.log(\"❌ Mascarar Requer Texto: \", texto, \" e Mascara: \", mascara);\r\n }\r\n return undefined;\r\n };\r\n\r\n static tryParseJSON(val: any): any[] | null {\r\n try {\r\n return JSON.parse(val);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n static contem = (strMaior: string, strMenor: string): boolean => {\r\n // Comparardor de string CONTEM\r\n strMaior = LibUtil.removeAcentos(strMaior).toLowerCase();\r\n strMenor = LibUtil.removeAcentos(strMenor).toLowerCase();\r\n return (strMaior.includes(strMenor));\r\n };\r\n\r\n static removeAcentos = (s: string): string => {\r\n if (s == null) return \"\";\r\n // Remove acentos e depois chama Apenas Números e Letras.\r\n s = s.toString();\r\n let r = \"\";\r\n let sS = \"áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ\";\r\n let sN = \"aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC\";\r\n for (let p = 0; p < s.length; p++) {\r\n let pSS = sS.indexOf(s.charAt(p)); // <= Procura\r\n if (pSS != -1) {\r\n r += sN.charAt(pSS); // Substitui mesma posicao\r\n } else {\r\n r += s.charAt(p);\r\n }\r\n }\r\n return r;\r\n };\r\n\r\n static fileReader = async (arquivo: File, eventos?: Function): Promise<string | null> => {\r\n return new Promise((r) => {\r\n let leitor = new FileReader();\r\n let gatilhos = (event: any) => {\r\n if (event.type == \"error\") {\r\n r(null);\r\n }\r\n else if (event.type == \"loadend\") {\r\n // Quando terminar, o result já é a string completa.\r\n let buffer = leitor.result as string;\r\n r(buffer);\r\n }\r\n if (eventos)\r\n eventos(event, Math.trunc((event.loaded / event.total) * 100));\r\n }\r\n if (arquivo) {\r\n if (arquivo.name != \"\") {\r\n leitor.addEventListener(\"loadstart\", gatilhos);\r\n leitor.addEventListener(\"progress\", gatilhos);\r\n leitor.addEventListener(\"error\", gatilhos);\r\n leitor.addEventListener(\"abort\", gatilhos);\r\n leitor.addEventListener(\"load\", gatilhos);\r\n leitor.addEventListener(\"loadend\", gatilhos);\r\n leitor.readAsDataURL(arquivo);\r\n }\r\n else {\r\n LOG(1, \"⚠️ fileReader() - Nome do arquivo necessário: \", arquivo.name);\r\n r(null);\r\n }\r\n } else {\r\n LOG(1, \"⚠️ fileReader() - Arquivo Nulo: \", arquivo);\r\n r(null);\r\n }\r\n });\r\n };\r\n\r\n static removeHtmlTags(texto: string): string {\r\n return texto.replace(/<\\/?[^>]+(>|$)/g, \"\");\r\n }\r\n\r\n // Salva a posição do cursor\r\n static saveCursorPosition(element: any, plus: number = 0): { start: number; end: number, plus: number } | null {\r\n const selection = window.getSelection();\r\n if (!selection || selection.rangeCount === 0) return null;\r\n const range = selection.getRangeAt(0);\r\n const preCaretRange = range.cloneRange();\r\n if (!element) return null;\r\n preCaretRange.selectNodeContents(element);\r\n preCaretRange.setEnd(range.startContainer, range.startOffset);\r\n const start = preCaretRange.toString().length;\r\n return {\r\n start: start,\r\n end: start + range.toString().length,\r\n plus\r\n };\r\n }\r\n\r\n // Restaura a posição do cursor\r\n static restoreCursorPosition(element: any, position: { start: number; end: number, plus: number }) {\r\n if (!element) return;\r\n const selection = window.getSelection();\r\n if (!selection) return;\r\n let charIndex = 0;\r\n const range = document.createRange();\r\n range.setStart(element, 0);\r\n range.collapse(true);\r\n const nodeIterator = (node: Node): boolean => {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n const textNode = node as Text;\r\n const nextCharIndex = charIndex + (textNode.length || 0);\r\n if (position.start >= charIndex && position.start <= nextCharIndex) {\r\n range.setStart(textNode, position.start - charIndex);\r\n range.setEnd(textNode, position.start - charIndex);\r\n return true;\r\n }\r\n charIndex = nextCharIndex;\r\n } else {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n if (nodeIterator(node.childNodes[i])) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n nodeIterator(element);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n\r\n static formatJson(texto: string, colorir: boolean = false): string {\r\n let retorno = \"\";\r\n try {\r\n retorno = JSON.stringify(texto, null, 2);\r\n } catch (e) {\r\n LOG(1, \"⚠️ JSON Inválido: Não foi possível formatar o JSON.\");\r\n return texto;\r\n }\r\n\r\n if (colorir) {\r\n let keyNameStart: string = '<span class=\"json-key\">';\r\n let nullStart: string = '<span class=\"json-null\">';\r\n let numberStart: string = '<span class=\"json-number\">';\r\n let booleanStart: string = '<span class=\"json-boolean\">';\r\n let stringStart: string = '<span class=\"json-string\">';\r\n let spanEnd: string = '</span>';\r\n // Identificar a posição das chaves do json e adicionar as tags de span\r\n retorno = retorno.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\r\n retorno = retorno.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g, function (match) {\r\n let cls = nullStart;\r\n if (/^\"/.test(match)) {\r\n if (/:$/.test(match)) {\r\n cls = keyNameStart;\r\n } else {\r\n cls = stringStart;\r\n }\r\n } else if (/true|false/.test(match)) {\r\n cls = booleanStart;\r\n } else if (/null/.test(match)) {\r\n cls = nullStart;\r\n } else if (/undefined/.test(match)) {\r\n cls = nullStart;\r\n } else {\r\n cls = numberStart;\r\n }\r\n return cls + match + spanEnd;\r\n });\r\n }\r\n\r\n // Remove aspas duplas das chaves (mantém aspas dos valores string)\r\n retorno = retorno.replace(/\"([^\"]+)\"(\\s*):/g, '$1$2:');\r\n\r\n return retorno;\r\n }\r\n\r\n static async copy(content: string): Promise<void> {\r\n try {\r\n await this.copyHtml(content);\r\n } catch (erro) {\r\n LOG(1, \"❌ %cFalha ao copiar como HTML, tentando como texto puro\", \"color:red;\", erro);\r\n this.copyPlainText(content);\r\n }\r\n }\r\n\r\n private static copyPlainText(text: string) {\r\n const elemento = document.createElement('textarea');\r\n elemento.style.position = 'fixed';\r\n elemento.style.opacity = '0';\r\n elemento.style.whiteSpace = 'pre';\r\n elemento.value = text;\r\n document.body.appendChild(elemento);\r\n elemento.select();\r\n elemento.setSelectionRange(0, 99999);\r\n const result = document.execCommand('copy');\r\n if (!result) {\r\n LOG(1, \"❌ Falha ao copiar via execCommand.\");\r\n }\r\n LOG(1, \"🫤! Cópia via execCommand: \", text);\r\n elemento.remove();\r\n }\r\n\r\n private static async copyHtml(html?: string) {\r\n if (!html) {\r\n html = \"\";\r\n LOG(1, \"❌ %cNão foi possível copiar.\", \"color:red;\");\r\n return;\r\n }\r\n try {\r\n // Remove tags HTML para gerar a versão texto puro\r\n const plainText = this.stripHtmlTags(html);\r\n if (navigator.clipboard && window.isSecureContext) {\r\n const clipboardItem = new ClipboardItem({\r\n 'text/plain': new Blob([plainText], { type: 'text/plain' }),\r\n 'text/html': new Blob([html], { type: 'text/html' })\r\n });\r\n await navigator.clipboard.write([clipboardItem]);\r\n console.groupCollapsed(\"✅ %cCopiado para a área de transferência.\", \"color:aquamarine;\");\r\n LOG(1, plainText);\r\n console.groupEnd();\r\n return;\r\n }\r\n\r\n // Fallback: copia HTML usando execCommand\r\n const elemento = document.createElement('div');\r\n elemento.style.position = 'fixed';\r\n elemento.style.opacity = '0';\r\n elemento.innerHTML = html;\r\n document.body.appendChild(elemento);\r\n\r\n const range = document.createRange();\r\n range.selectNodeContents(elemento);\r\n const selection = window.getSelection();\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n\r\n document.execCommand('copy');\r\n console.groupCollapsed(\"➡️ %cCopiado para a área de transferência. (execCommand)\", \"color:lightblue;\");\r\n LOG(1, plainText);\r\n console.groupEnd();\r\n elemento.remove();\r\n } catch (erro) {\r\n LOG(1, \"❌ Erro ao copiar:\", erro);\r\n throw erro;\r\n }\r\n }\r\n\r\n private static stripHtmlTags(html: string): string {\r\n // Cria um elemento temporário para extrair texto puro\r\n const temp = document.createElement('div');\r\n temp.innerHTML = html;\r\n // Substitui <br> por quebras de linha antes de extrair o texto\r\n temp.innerHTML = temp.innerHTML.replace(/<br\\s*\\/?>/gi, '\\n');\r\n return temp.textContent || temp.innerText || '';\r\n }\r\n\r\n static apenasNumeros = (s: string | number = \"\"): string => {\r\n if (s == null) return \"\";\r\n // Ignora qualquer outro caracter além de Numeros\r\n return s.toString().replace(/(?![0-9])./g, \"\");\r\n }\r\n\r\n static frequencia = (array: any): any => {\r\n // Retorna o total de encontro na array.\r\n // Quando é objeto converte pra string pra poder contar\r\n let f: any = {};\r\n for (let e of array) {\r\n let s = e;\r\n if (LibUtil.classof(e) == \"object\") s = JSON.stringify(e);\r\n f[s] ? f[s]++ : (f[s] = 1);\r\n }\r\n return f;\r\n }\r\n\r\n static formats: IUtilFormatters = {\r\n cpf: {\r\n mask: \"000.000.000-00\",\r\n regex: \"^([0-9]{3}([\\.]?[0-9]{3}){2}[-]?[0-9]{2})$\",\r\n validate: (cpf: any) => {\r\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\r\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\r\n if (!cpf) { return false; }\r\n cpf = LibUtil.apenasNumeros(cpf);\r\n if (cpf.length != 11) { return false; }\r\n let temp = cpf.slice(0, 9);\r\n let c = 0;\r\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\r\n let r = c % 11;\r\n (r < 2) ? r = 0 : r = 11 - r;\r\n temp += r.toString();\r\n c = 0;\r\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\r\n r = c % 11;\r\n (r < 2) ? r = 0 : r = 11 - r;\r\n if (cpf.charAt(10) != r.toString()) {\r\n return false;\r\n };\r\n let char0 = cpf.charAt(0);\r\n let repChar0 = LibUtil.frequencia(cpf)[char0];\r\n if (repChar0 >= 11) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n },\r\n cnpj: {\r\n mask: \"00.000.000/0000-00\",\r\n regex: \"^([0-9]{2}([\\.]?[0-9]{3}){2}[\\/]?[0-9]{4}[-]?[0-9]{2})$\",\r\n validate: (cnpj: any) => {\r\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\r\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\r\n if (!cnpj) { return false; }\r\n cnpj = LibUtil.apenasNumeros(cnpj);\r\n if (cnpj.length != 14) { return false; }\r\n let temp = cnpj.slice(0, 12);\r\n let c = 0;\r\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\r\n let r = (c % 11);\r\n (r < 2) ? r = 0 : r = 11 - r;\r\n temp += r.toString();\r\n c = 0;\r\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\r\n r = (c % 11);\r\n (r < 2) ? r = 0 : r = 11 - r;\r\n return cnpj.charAt(13) == r.toString();\r\n }\r\n },\r\n cpf_cnpj: {\r\n mask: (str: string) => {\r\n if (LibUtil.apenasNumeros(str).length <= 11) {\r\n return \"000.000.000-00\"\r\n } else {\r\n return \"00.000.000/0000-00\"\r\n };\r\n },\r\n regex: \"^([0-9]{2}([\\.]?[0-9]{3}){2}[\\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}([\\.]?[0-9]{3}){2}[-]?[0-9]{2})$\",\r\n validate: (cpf_cnpj: any) => {\r\n if (LibUtil.apenasNumeros(cpf_cnpj).length <= 11) {\r\n return LibUtil.formats.cpf.validate?.(cpf_cnpj) ?? false;\r\n } else {\r\n return LibUtil.formats.cnpj.validate?.(cpf_cnpj) ?? false;\r\n };\r\n }\r\n },\r\n cnh: {\r\n mask: \"00000000000\",\r\n regex: \"^([0-9]{11})$\",\r\n validate: (cnh: any) => {\r\n if (!cnh) { return false; }\r\n cnh = LibUtil.apenasNumeros(cnh);\r\n if (cnh.length != 11) { return false; }\r\n return true;\r\n },\r\n },\r\n pis: {\r\n mask: \"000.00000.00-0\",\r\n regex: \"^([0-9]{3}[\\.]?[0-9]{5}[\\.]?[0-9]{2}[-]?[0-9]{1})$\",\r\n validate: (pis: any) => {\r\n if (!pis) { return false; }\r\n pis = LibUtil.apenasNumeros(pis);\r\n if (pis.length != 11) { return false; }\r\n return true;\r\n },\r\n },\r\n dia: {\r\n mask: \"00\",\r\n regex: \"^(0[1-9]|[1-9]|[1-2][0-9]|3[0-1])$\",\r\n validate: (dia: any) => {\r\n if (!dia) { return false; }\r\n dia = LibUtil.apenasNumeros(dia);\r\n let diaNum = Number(dia);\r\n return diaNum >= 1 && diaNum <= 31;\r\n },\r\n },\r\n mes: {\r\n mask: \"00\",\r\n regex: \"^(0[1-9]|1[0-2])$\",\r\n validate: (mes: any) => {\r\n if (!mes) { return false; }\r\n mes = LibUtil.apenasNumeros(mes);\r\n let mesNum = Number(mes);\r\n return mesNum >= 1 && mesNum <= 12;\r\n },\r\n },\r\n ano: {\r\n mask: \"0000\",\r\n regex: \"^([0-2]?([0-9]){3})$\",\r\n validate: (ano: any) => {\r\n if (!ano) { return false; }\r\n ano = LibUtil.apenasNumeros(ano);\r\n let anoNum = Number(ano);\r\n return anoNum >= 1000 && anoNum <= 2999;\r\n },\r\n },\r\n anoRecente: {\r\n mask: \"0000\",\r\n regex: \"^(19([0-9]){2})|(20([0-9]){2})|(21([0-9]){2})$\",\r\n validate: (anoRecente: any) => {\r\n if (!anoRecente) { return false; }\r\n anoRecente = LibUtil.apenasNumeros(anoRecente);\r\n let anoNum = Number(anoRecente);\r\n return anoNum >= 1900 && anoNum <= 2199;\r\n },\r\n },\r\n data: {\r\n mask: \"0000-00-00\",\r\n regex: \"^([0-9]{4}(-[0-9]{2}){2})$\",\r\n validate: (data: any) => {\r\n if (!data) { return false; }\r\n data = LibUtil.apenasNumeros(data);\r\n return new RegExp(LibUtil.formats.data.regex).test(data);\r\n },\r\n },\r\n dataIso: {\r\n mask: \"0000-00-00T00:00:00.000Z\",\r\n regex: \"^([0-9]{4}(-[0-9]{2}){2}T[0-9]{2}(:[0-9]{2}){2}\\.[0-9]{3}Z)$\",\r\n validate: (dataIso: any) => {\r\n if (!dataIso) { return false; }\r\n dataIso = LibUtil.apenasNumeros(dataIso);\r\n return new RegExp(LibUtil.formats.dataIso.regex).test(dataIso);\r\n },\r\n },\r\n numero: {\r\n mask: \"#0\",\r\n regex: \"^[0-9]*$\",\r\n validate: (numero: any) => {\r\n if (!numero) { return false; }\r\n numero = LibUtil.apenasNumeros(numero);\r\n return numero.length > 0;\r\n },\r\n },\r\n decimal: {\r\n mask: \"#0,00\",\r\n regex: \"^[0-9,]*$\",\r\n validate: (decimal: any) => {\r\n if (!decimal) { return false; }\r\n return new RegExp(LibUtil.formats.decimal.regex).test(decimal);\r\n },\r\n },\r\n letra: {\r\n mask: \"A\",\r\n regex: \"^[A-Za-z]*$\",\r\n validate: (letra: any) => {\r\n if (!letra) { return false; }\r\n return new RegExp(LibUtil.formats.letra.regex).test(letra);\r\n },\r\n },\r\n numeroELetra: {\r\n mask: \"S\",\r\n regex: \"^[A-Za-z0-9]*$\",\r\n validate: (numeroELetra: any) => {\r\n if (!numeroELetra) { return false; }\r\n return new RegExp(LibUtil.formats.numeroELetra.regex).test(numeroELetra);\r\n }\r\n },\r\n ip: {\r\n mask: \"000.000.000.000\",\r\n regex: \"^([0-2]?[0-9]?[0-9]([\\.][0-2]?[0-9]?[0-9]){3})$\",\r\n validate: (ip: any) => {\r\n if (!ip) { return false; }\r\n const regex = new RegExp(LibUtil.formats.ip.regex);\r\n if (!regex.test(ip)) { return false; }\r\n const parts = ip.split('.').map(Number);\r\n return parts.every((part: number) => part >= 0 && part <= 255);\r\n }\r\n },\r\n email: {\r\n mask: \"S\",\r\n regex: \"^(([a-zA-Z0-9_+-\\.]+)+)@([a-zA-Z0-9_+-\\.]+\\.[a-zA-Z]+)+$\",\r\n validate: (email: any) => {\r\n if (!email) { return false; }\r\n return new RegExp(LibUtil.formats.email.regex).test(email);\r\n }\r\n },\r\n cep: {\r\n mask: \"00000-000\",\r\n regex: \"^([0-9]{5}[-]?[0-9]{3})$\",\r\n validate: (cep: any) => {\r\n if (!cep) { return false; }\r\n cep = LibUtil.apenasNumeros(cep);\r\n return new RegExp(LibUtil.formats.cep.regex).test(cep);\r\n }\r\n }\r\n }\r\n\r\n static stringToDataBR = (data: string | null | undefined): string | null => {\r\n let resultado = null;\r\n if (LibUtil.classof(data) == \"null\" || LibUtil.classof(data) == \"undefined\") {\r\n return null;\r\n } else if (LibUtil.classof(data) == \"string\") {\r\n // Quando a data é \"YYYY-MM-DD\", ascrescenta 1 espaço para UTC.\r\n if (new RegExp(\"^[12][0-9]{3}[-][0-1][0-9][-][0-3][0-9]$\").test(data!)) {\r\n data += \" \";\r\n }\r\n // Tentativa Direta:\r\n resultado = new Date(data!).toLocaleString().replace(\",\", \"\");\r\n\r\n // Falhando, tenta converter pra número.\r\n if (resultado.toUpperCase() == \"INVALID DATE\") {\r\n resultado = new Date(Number(data)).toLocaleString().replace(\",\", \"\");\r\n\r\n // Agora tenta ver se a data inicia no formato br já\r\n if (resultado.toUpperCase() == \"INVALID DATE\") {\r\n // DD/MM/YYYY ?\r\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data!)) {\r\n resultado = new Date(LibUtil.dataToIsoData(data!)).toLocaleString().replace(\",\", \"\");\r\n }\r\n }\r\n }\r\n } else {\r\n LOG(1, \"❌ stringToDataBR(): A data precisa ser formato string: \", data, LibUtil.classof(data));\r\n }\r\n return resultado;\r\n }\r\n\r\n // ISO 8601 (Padrão Internacional)\r\n static dataToIsoData = (data: string): string => {\r\n // Converter de DD/MM/YYYY para YYYY-MM-DD\r\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\r\n\r\n }\r\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\r\n let novaData = data.slice(6, 10) + \"-\" + data.slice(3, 5) + \"-\" + data.slice(0, 2);\r\n let resto = data.slice(10, data.length);\r\n if (resto != \"\" && new RegExp(\"^ [0-2][0-9]:[0-5][0-9]:[0-5][0-9]\").test(resto)) {\r\n novaData += resto;\r\n }\r\n return novaData;\r\n }\r\n return data; // < Se falhar\r\n };\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // ============================ SIGNALS DIRETO => CRUD E UTEIS ============================ \\\\\r\n\r\n // SET (SIGNAL)\r\n static sinalSet<T>(sinal: WritableSignal<any | undefined>, item: Partial<T>) {\r\n sinal.update(i => {\r\n if (!i) return item;\r\n return { ...i, ...item };\r\n });\r\n }\r\n\r\n // CREATE (SIGNAL)\r\n static sinalCreate<T>(sinal: WritableSignal<any[] | undefined>, item: T) {\r\n sinal.update(i => {\r\n if (!i) return [item];\r\n return [...i, item];\r\n });\r\n }\r\n\r\n // UPDATE (SIGNAL)\r\n static sinalUpdate<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, k: string, v?: string) {\r\n if (v != null && item) {\r\n sinal.update(i => {\r\n if (!i) return i;\r\n return i.map((o: T) => o[k as keyof T] === v ? { ...o, ...item } : o);\r\n });\r\n } else {\r\n if (v == null) {\r\n // PATCH UPDATE\r\n let value = item[k as keyof T];\r\n if (value != null) {\r\n sinal.update(i => {\r\n if (!i) return i;\r\n return i.map((o: T) => o[k as keyof T] === value ? { ...o, ...item } : o);\r\n });\r\n } else {\r\n LOG(1, `⚠️ sinalUpdate: A chave ${k} está nula. Passe o V desta chave para atualizar.`);\r\n }\r\n } else {\r\n LOG(1, `❌ Item ${k} chegou nulo para Update.`);\r\n }\r\n }\r\n }\r\n\r\n // DELETE (SIGNAL)\r\n static sinalDelete<T>(sinal: WritableSignal<any[] | undefined>, k: string, v?: string) {\r\n if (v != null) {\r\n sinal.update(i => {\r\n if (!i) return i;\r\n return i.filter((o: T) => o[k as keyof T] !== v);\r\n });\r\n } else {\r\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete.`);\r\n }\r\n }\r\n\r\n // CLEAR (SIGNAL)\r\n static sinalClear<T>(sinal: WritableSignal<any[] | undefined>) {\r\n sinal.set(undefined);\r\n }\r\n\r\n // EXISTS (SIGNAL) - Verifica se um item existe na lista\r\n static sinalExists<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string): boolean {\r\n if (v != null) {\r\n const items = sinal();\r\n if (!items) return false;\r\n return items.some((o: T) => o[k] === v);\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n // MOVE UP (SIGNAL) - Move um item uma posição para cima\r\n static sinalMoveUp<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\r\n if (v != null) {\r\n sinal.update(i => {\r\n if (!i || i.length <= 1) return i;\r\n const index = i.findIndex((o: T) => o[k] === v);\r\n if (index <= 0) return i; // Já está no topo ou não encontrado\r\n\r\n const newArray = [...i];\r\n [newArray[index - 1], newArray[index]] = [newArray[index], newArray[index - 1]];\r\n return newArray;\r\n });\r\n } else {\r\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp.`);\r\n }\r\n }\r\n\r\n // MOVE DOWN (SIGNAL) - Move um item uma posição para baixo\r\n static sinalMoveDown<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\r\n if (v != null) {\r\n sinal.update(i => {\r\n if (!i || i.length <= 1) return i;\r\n\r\n const index = i.findIndex((o: T) => o[k] === v);\r\n if (index < 0 || index >= i.length - 1) return i; // Já está no final ou não encontrado\r\n\r\n const newArray = [...i];\r\n [newArray[index], newArray[index + 1]] = [newArray[index + 1], newArray[index]];\r\n return newArray;\r\n });\r\n } else {\r\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown.`);\r\n }\r\n }\r\n\r\n // MOVE TO INDEX (SIGNAL) - Move um item para uma posição específica\r\n static sinalMoveToIndex<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string, targetIndex: number) {\r\n if (v != null) {\r\n sinal.update(i => {\r\n if (!i || i.length <= 1) return i;\r\n const currentIndex = i.findIndex((o: T) => o[k] === v);\r\n if (currentIndex < 0 || targetIndex < 0 || targetIndex >= i.length || currentIndex === targetIndex) {\r\n return i; // Item não encontrado, índice inválido ou já está na posição\r\n }\r\n const newArray = [...i];\r\n const [movedItem] = newArray.splice(currentIndex, 1);\r\n newArray.splice(targetIndex, 0, movedItem);\r\n return newArray;\r\n });\r\n } else {\r\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveToIndex.`);\r\n }\r\n }\r\n\r\n static FlatRecursivo<T>(lista: T[], keyRecursive: keyof T): T[] {\r\n if (LibUtil.classof(lista) != \"array\") return [];\r\n\r\n let novaArray: T[] = [];\r\n lista.map(objeto => {\r\n if (LibUtil.classof(objeto) != \"object\") return;\r\n let novoObjeto: T = {} as T;\r\n for (let prop in objeto) {\r\n if (prop != keyRecursive) novoObjeto[prop] = objeto[prop];\r\n }\r\n novaArray = [...novaArray, novoObjeto];\r\n let children = objeto[keyRecursive] as T[];\r\n if (children != null) {\r\n novaArray = [...novaArray, ...LibUtil.FlatRecursivo(children, keyRecursive)];\r\n }\r\n })\r\n return novaArray;\r\n }\r\n\r\n // ============================ SIGNALS RECURSIVO => CRUD E UTEIS ============================ \\\\\r\n\r\n // Adiciona um novo item em uma estrutura hierárquica baseado na chave pai\r\n // CREATE RECURSIVE (SIGNAL)\r\n static sinalCreateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai?: string) {\r\n sinal.update(i => {\r\n if (!i) return [item];\r\n if (valuePai != null) {\r\n return i.map((o: T) => {\r\n return LibUtil._recursiveCreate<T>(o, item, keyRecursive, keyPai, valuePai);\r\n });\r\n } else {\r\n // Sem Pai inserir direto na raiz\r\n return [...i, item];\r\n }\r\n });\r\n }\r\n\r\n // Encontra o item pai pela chave e adiciona o novo item no array de filhos\r\n static _recursiveCreate<T>(atual: T, novo: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai: string): T {\r\n if (atual[keyPai] === valuePai) {\r\n // Encontrou o pai, adiciona o item no array recursivo\r\n if (atual[keyRecursive] == null) {\r\n (atual[keyRecursive] as T[]) = [novo];\r\n } else {\r\n (atual[keyRecursive] as T[]) = [...(atual[keyRecursive] as T[]), novo];\r\n }\r\n return atual;\r\n }\r\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\r\n (atual[keyRecursive] as T[]) = [\r\n ...(atual[keyRecursive] as T[]).map(child => {\r\n return LibUtil._recursiveCreate(child, novo, keyRecursive, keyPai, valuePai);\r\n })\r\n ];\r\n return atual;\r\n }\r\n\r\n // Atualiza um item específico em uma estrutura hierárquica\r\n // UPDATE RECURSIVE (SIGNAL)\r\n static sinalUpdateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\r\n if (v != null) {\r\n sinal.update(i => {\r\n if (!i) return i;\r\n return i.map((o: T) => {\r\n return LibUtil._recursiveUpdate<T>(o, item, keyRecursive, k, v);\r\n });\r\n });\r\n } else {\r\n LOG(1, `⚠️ Chave ${k} chegou nula para Update Recursivo.`);\r\n }\r\n }\r\n\r\n // Encontra o item pela chave e atualiza suas propriedades\r\n static _recursiveUpdate<T>(atual: T, novo: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\r\n if (atual[k] === v) {\r\n LOG(1, \"Editado\", { ...atual, ...novo })\r\n return { ...atual, ...novo };\r\n }\r\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\r\n (atual[keyRecursive] as T[]) = [\r\n ...(atual[keyRecursive] as T[]).map(child => {\r\n return LibUtil._recursiveUpdate(child, novo, keyRecursive, k, v);\r\n })\r\n ];\r\n return atual;\r\n }\r\n\r\n // Remove um item específico de uma estrutura hierárquica\r\n // DELETE RECURSIVE (SIGNAL)\r\n static sinalDeleteRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\r\n if (v != null) {\r\n sinal.update(i => {\r\n if (!i) return i;\r\n // Primeiro verifica se precisa deletar no nível raiz\r\n const filteredRoot = i.filter((o: T) => o[k] !== v);\r\n // Se encontrou e removeu no nível raiz, retorna o array filtrado\r\n if (filteredRoot.length !== i.length) {\r\n return filteredRoot;\r\n }\r\n // Se não encontrou no nível raiz, processa recursivamente\r\n return i.map((o: T) => {\r\n return LibUtil._recursiveDelete<T>(o, keyRecursive, k, v);\r\n });\r\n });\r\n } else {\r\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete Recursivo.`);\r\n }\r\n }\r\n // Encontra e remove o item pela chave, filtrando do array de filhos\r\n static _recursiveDelete<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\r\n // Se tem filhos, processa os filhos\r\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\r\n const children = atual[keyRecursive] as T[];\r\n // Remove o item dos filhos se existir e processa recursivamente os filhos restantes\r\n const filteredChildren = children\r\n .filter(child => child[k] !== v)\r\n .map(child => LibUtil._recursiveDelete(child, keyRecursive, k, v));\r\n return { ...atual, [keyRecursive]: filteredChildren };\r\n }\r\n return atual;\r\n }\r\n\r\n // EXISTS RECURSIVE (SIGNAL) - Verifica se um item existe em uma estrutura hierárquica\r\n static sinalExistsRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\r\n if (v != null) {\r\n const items = sinal();\r\n if (!items) return false;\r\n return items.some((o: T) => {\r\n return LibUtil._recursiveExists<T>(o, keyRecursive, k, v);\r\n });\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // Função auxiliar para busca recursiva\r\n static _recursiveExists<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\r\n // Verifica se o item atual é o que estamos procurando\r\n if (atual[k] === v) return true;\r\n // Se tem filhos, procura recursivamente\r\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\r\n const children = atual[keyRecursive] as T[];\r\n return children.some(child => LibUtil._recursiveExists(child, keyRecursive, k, v));\r\n }\r\n return false;\r\n }\r\n\r\n // Move um item uma posição para cima na hierarquia\r\n // MOVE UP RECURSIVE (SIGNAL) - Para estruturas hierárquicas\r\n static sinalMoveUpRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\r\n if (v != null) {\r\n sinal.update(i => {\r\n if (!i || i.length <= 1) return i;\r\n // Primeiro verifica se precisa mover no nível raiz\r\n const rootIndex = i.findIndex((o: T) => o[k] === v);\r\n if (rootIndex > 0) {\r\n const newArray = [...i];\r\n [newArray[rootIndex - 1], newArray[rootIndex]] = [newArray[rootIndex], newArray[rootIndex - 1]];\r\n return newArray;\r\n }\r\n // Se não encontrou no nível raiz, processa recursivamente\r\n return i.map((o: T) => {\r\n return LibUtil._recursiveMoveUp<T>(o, keyRecursive, k, v);\r\n });\r\n });\r\n } else {\r\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp Recursivo.`);\r\n }\r\n }\r\n\r\n // Encontra o item e troca sua posição com o anterior no array\r\n static _recursiveMoveUp<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\r\n // Se tem filhos, processa os filhos primeiro\r\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\r\n const children = atual[keyRecursive] as T[];\r\n // Verifica se precisa mover dentro dos filhos\r\n const targetIndex = children.findIndex(child => child[k] === v);\r\n if (targetIndex > 0) {\r\n const newChildren = [...children];\r\n [newChildren[targetIndex - 1], newChildren[targetIndex]] = [newChildren[targetIndex], newChildren[targetIndex - 1]];\r\n return { ...atual, [keyRecursive]: newChildren };\r\n }\r\n // Se não encontrou, processa recursivamente os filhos\r\n const processedChildren = children.map(child =>\r\n LibUtil._recursiveMoveUp(child, keyRecursive, k, v)\r\n );\r\n return { ...atual, [keyRecursive]: processedChildren };\r\n }\r\n return atual;\r\n }\r\n\r\n // Move um item uma posição para baixo na hierarquia\r\n // MOVE DOWN RECURSIVE (SIGNAL) - Para estruturas hierárquicas\r\n static sinalMoveDownRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\r\n if (v != null) {\r\n sinal.update(i => {\r\n if (!i || i.length <= 1) return i;\r\n // Primeiro verifica se precisa mover no nível raiz\r\n const rootIndex = i.findIndex((o: T) => o[k] === v);\r\n if (rootIndex >= 0 && rootIndex < i.length - 1) {\r\n const newArray = [...i];\r\n [newArray[rootIndex], newArray[rootIndex + 1]] = [newArray[rootIndex + 1], newArray[rootIndex]];\r\n return newArray;\r\n }\r\n // Se não encontrou no nível raiz, processa recursivamente\r\n return i.map((o: T) => {\r\n return LibUtil._recursiveMoveDown<T>(o, keyRecursive, k, v);\r\n });\r\n });\r\n } else {\r\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown Recursivo.`);\r\n }\r\n }\r\n\r\n // Encontra o item e troca sua posição com o próximo no array\r\n static _recursiveMoveDown<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\r\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\r\n const children = atual[keyRecursive] as T[];\r\n // Verifica se precisa mover dentro dos filhos\r\n const targetIndex = children.findIndex(child => child[k] === v);\r\n if (targetIndex >= 0 && targetIndex < children.length - 1) {\r\n const newChildren = [...children];\r\n [newChildren[targetIndex], newChildren[targetIndex + 1]] = [newChildren[targetIndex + 1], newChildren[targetIndex]];\r\n return { ...atual, [keyRecursive]: newChildren };\r\n }\r\n // Se não encontrou, processa recursivamente os filhos\r\n const processedChildren = children.map(child =>\r\n LibUtil._recursiveMoveDown(child, keyRecursive, k, v)\r\n );\r\n return { ...atual, [keyRecursive]: processedChildren };\r\n }\r\n return atual;\r\n }\r\n\r\n static sinalSetOrderRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T) {\r\n sinal.update(i => {\r\n if (!i) return i;\r\n return i.map((o: T, i) => {\r\n return LibUtil._recursiveSetOrder<T>(o, keyRecursive, k, propOrder, i);\r\n });\r\n });\r\n }\r\n\r\n static _recursiveSetOrder<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T, index: number): T {\r\n atual = { ...atual, [propOrder]: index };\r\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\r\n (atual[keyRecursive] as T[]) = [\r\n ...(atual[keyRecursive] as T[]).map((child, i) => {\r\n return LibUtil._recursiveSetOrder(child, keyRecursive, k, propOrder, i);\r\n })\r\n ];\r\n return atual;\r\n }\r\n\r\n // ============================ ATALHOS PERSONALIZADOS ============================ \\\\\r\n\r\n static Q = (query: any) => {\r\n // Busca elemento único, podendo buscar ele mesmo. (Bifurcacado)\r\n if (LibUtil.classof(query) == \"string\") return document.querySelector(query);\r\n return query;\r\n };\r\n\r\n static QAll = (query: any): any[] => {\r\n // Sempre retorna uma array de encontrados. Inclusive uma array com um LibUtil.Q\r\n if (LibUtil.classof(query) == \"string\") {\r\n // Se buscando uma string, retorna a array do select encontrado\r\n return Array.from(document.querySelectorAll(query));\r\n } else if (LibUtil.classof(query).endsWith(\"Element\")) {\r\n // Quando buscar um único elemento, retorna o elemento em uma lista.\r\n return [query];\r\n } else if (LibUtil.classof(query) == \"array\") {\r\n // Quando buscar uma array, retorna a propria array. (Bifurcado)\r\n return query;\r\n } else {\r\n LOG(1, \"⚠️ QAll() - Requer String / Elemento / Array. ClassOf: \", LibUtil.classof(query), \" Query: \", query);\r\n return [];\r\n }\r\n };\r\n\r\n static QverOff = (query: Element | HTMLElement | string | null = \"body\"): any[] => {\r\n // Adiciona Classe Oculto em todos os elementos do Query\r\n // Retorna uma array de elementos por causa do QAll\r\n return LibUtil.aCadaElemento(query, (e: any) => {\r\n e?.classList.add(\"oculto\");\r\n });\r\n };\r\n\r\n static QverOn = (query: Element | HTMLElement | string | null = \"body\") => {\r\n // Remove classe Oculto em todos os elementos do Query\r\n // Retorna uma array de elementos por causa do QAll\r\n return LibUtil.aCadaElemento(query, (e: any) => {\r\n e?.classList.remove(\"oculto\");\r\n });\r\n };\r\n\r\n static dataGetMs = (data: string | null = null): number => {\r\n // Retorna Milisegundos da data no formato Javascript\r\n if (data != null) {\r\n if (data.length > 10) {\r\n // Recomendado que os dados cheguem: 'YYYY-MM-DD HH:MM:SS'\r\n return new Date(data).getTime(); // Recomendado que os dados \r\n } else {\r\n let dataCortada = data.split(\"-\");\r\n let oDia: number = Number(dataCortada[2]);\r\n let oMes: number = Number(dataCortada[1]) - 1;\r\n let oAno: number = Number(dataCortada[0]);\r\n return new Date(oAno, oMes, oDia).getTime();\r\n }\r\n } else return new Date().getTime();\r\n };\r\n\r\n static dataMsToSegundos = (num: number, reverse: boolean = false) => {\r\n if (reverse) {\r\n return num * 1000;\r\n }\r\n return Math.trunc(num / 1000); // 1000 ms == 1s\r\n }\r\n\r\n static dataMsToDias = (num: number, reverse: boolean = false) => {\r\n // 1000 * 3600 * 24 Considerando todo dia tiver 24 horas (~23h 56m 4.1s)\r\n // (360º translacao / 86400000) = ~4.1\r\n // Então o erro de 1 dia ocorre 1x ao ano (Dia represeta 1436min).\r\n // Por isso, é melhor trabalhar com Dias em vez de outro formato maior.\r\n if (reverse) {\r\n return Math.trunc(num * 86400000);\r\n }\r\n return Math.trunc(num / 86400000);\r\n };\r\n\r\n static dataGetSegundosDiferenca = (msDe: number, msAte: number | null = null): number => {\r\n // Retorna a diferença de segundos entre dois MS\r\n if (msAte == null) msAte = LibUtil.dataGetMs();\r\n return LibUtil.dataMsToSegundos(msAte - msDe);\r\n };\r\n\r\n static dataGetDiasDiferenca = (msDe: number, msAte: number | null = null): number => {\r\n // Retorna a diferença de dias entre dois MS\r\n if (msAte == null) msAte = LibUtil.dataGetMs();\r\n return LibUtil.dataMsToDias(msAte - msDe);\r\n };\r\n\r\n static dataShowTempoDiferenca = (msDe: number | string, msAte: number | string | null = null) => {\r\n if (LibUtil.classof(msDe) == \"string\") msDe = LibUtil.dataGetMs(msDe as string);\r\n if (LibUtil.classof(msAte) == \"string\") msAte = LibUtil.dataGetMs(msAte as string);\r\n let dias = LibUtil.dataGetDiasDiferenca(msDe as number, msAte as number | null);\r\n if (dias < 0) {\r\n dias = dias * -1;\r\n }\r\n let strTempo = \"\";\r\n if (dias > 29) { // Em Meses\r\n if (dias < 60) {\r\n strTempo = \"1 mês\";\r\n } else {\r\n if (dias > 365) { // Em Anos (+ Meses restantes)\r\n let anos = Math.floor(dias / 365);\r\n let diasRestoAno = dias % 365;\r\n if (anos < 2) {\r\n strTempo += anos + \" ano \";\r\n } else {\r\n strTempo += anos + \" anos \";\r\n }\r\n if (diasRestoAno > 30) {\r\n if (diasRestoAno < 60) {\r\n strTempo += \"1 mês\";\r\n } else {\r\n strTempo += Math.floor(diasRestoAno / 30) + \" meses\";\r\n }\r\n }\r\n } else {\r\n strTempo = Math.floor(dias / 30) + \" meses\";\r\n }\r\n }\r\n } else {\r\n if (dias < 1) {\r\n let segundos = LibUtil.dataGetSegundosDiferenca(msDe as number, msAte as number);\r\n if (segundos > 7199) { // Em Horas\r\n strTempo = Math.floor(segundos / 3600) + \" horas\";\r\n } else {\r\n if (segundos > 3599) {\r\n strTempo = \"1 hora\";\r\n } else {\r\n if (segundos > 119) { // Em Minutos\r\n strTempo = Math.floor(segundos / 60) + \" minutos\";\r\n } else {\r\n if (segundos > 59) {\r\n strTempo = \"1 minuto\";\r\n } else {\r\n strTempo = Math.floor(segundos) + \" segundos\";\r\n }\r\n }\r\n }\r\n }\r\n } else { // Em Dias\r\n strTempo = dias + \" dias\";\r\n }\r\n }\r\n if (strTempo.includes(\"NaN\")) return \"\";\r\n return strTempo;\r\n }\r\n\r\n static displayCelular = (area: string, numero: string, isoDDI?: string): string => {\r\n if (numero == null) numero = \"\"\r\n else numero = LibUtil.apenasNumeros(numero);\r\n if (area == null) area = \"\";\r\n else area = LibUtil.apenasEstes(area, \"0-9\\+\");\r\n if (numero == \"\" && area == \"\") return \"\";\r\n let displayArea = area;\r\n let displayNumero = numero;\r\n let displayFlag = \"\";\r\n if (numero != \"\" && displayArea == \"\") displayArea = \"+55\"\r\n if (displayArea == \"+55\") {\r\n numero = numero.slice(0, 11); // No brasil o limite é 9.\r\n displayNumero = numero;\r\n let apenasCelular = numero.slice(2, 11);\r\n if (apenasCelular.length == 9) {\r\n apenasCelular = apenasCelular.slice(0, 5) + \"-\" + apenasCelular.slice(5, 9);\r\n }\r\n displayNumero = \"(\" + numero.slice(0, 2) + \") \" + apenasCelular;\r\n }\r\n if (isoDDI != null) {\r\n displayFlag = LibUtil.displayFlag(isoDDI);\r\n }\r\n return `${displayFlag}<a href=\"tel:${area || \"\"}${numero || \"\"}\">${displayArea} ${displayNumero}</a>`\r\n }\r\n\r\n static displayFlag = (pais: string): string => {\r\n if (pais != null) {\r\n return `<img class=\"flagSizeIco\" src=\"/images/Paises/${pais || \"transparent\"}.svg\" alt=\"${pais || \"transparent\"}\" onerror=\"base_imgonerror(this);\"> `\r\n }\r\n return \"\";\r\n }\r\n\r\n static diaEMes(data: string): string {\r\n //Retorna: 01 de Abril\r\n let arrData = LibUtil.stringToDataBR(data)?.split(\" \")?.[0]?.split(\"/\");\r\n return arrData?.[0] + \" de \" + LibUtil.meses.get(Number(arrData?.[1] || 0))?.[0];\r\n }\r\n\r\n // =============== Gerenciamento Monetário / Numérico / Locale =================== \\\\\r\n static toNumber = (valor: any, casas: number = 2): number => {\r\n // Informando String/Number, converte para o número de casas c.casas (padrão 2).\r\n // LibUtil.toNumber(\"R$ 1.222,333\") => 1222.33\r\n if (valor != null) {\r\n if (LibUtil.classof(valor) == \"string\") {\r\n // Possiveis separadores\r\n let us = [\".\", \",\"].reduce((x, y) => (valor.lastIndexOf(x) > valor.lastIndexOf(y)) ? x : y);\r\n let posPonto = valor.lastIndexOf(us)\r\n if (posPonto >= 0) {\r\n let i = valor.slice(0, posPonto);\r\n let d = valor.slice(posPonto + 1).slice(0, 2).padEnd(2, \"0\");\r\n i = [...i.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\r\n d = [...d.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\r\n valor = i + \".\" + d;\r\n } else {\r\n valor = [...valor.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\").padStart(3, \"0\")\r\n valor = valor.padStart(casas, \"0\");\r\n valor = valor.slice(0, -(casas)) + (casas > 0 ? \".\" : \"\") + valor.slice(-(casas));\r\n }\r\n } else if (LibUtil.classof(valor) == \"number\") {\r\n valor = valor.toFixed(casas); // <= Vira String, mas essa função apenas devolve Number\r\n } else {\r\n LOG(1, \"❌ toNumber() - Formato de entrada não implementado: \", LibUtil.classof(valor));\r\n }\r\n return Number(valor); // <= OutPut Number\r\n }\r\n return 0; // <= OutPut Number\r\n };\r\n\r\n // ============================= ARMAZENADORES ESTÁTICOS ============================ \\\\\r\n static a: any = {\r\n ALL: \"*/*\", // ContentType Blob\r\n FORMDATA: \"multipart/form-data\", // ContentType FORM\r\n GET: \"GET\", // Api Method GET\r\n HTML: \"text/html\", // ContentType HTML\r\n JSON: \"application/json\", // ContentType JSON\r\n POST: \"POST\", // Api Method POST\r\n DELETE: \"DELETE\", // Api Method DELETE\r\n SVGINI: \"<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'>\",\r\n SVGFIM: \"</svg>\",\r\n timers: [] as any, // Array para guardar timers em andamento ou finalizados\r\n wpool: null as any | null, // WorkerPool quando iniciado\r\n }\r\n\r\n static meses = new Map([\r\n [1, [\"Janeiro\", \"JAN\", \"01\"]],\r\n [2, [\"Fevereiro\", \"FEV\", \"02\"]],\r\n [3, [\"Março\", \"MAR\", \"03\"]],\r\n [4, [\"Abril\", \"ABR\", \"04\"]],\r\n [5, [\"Maio\", \"MAI\", \"05\"]],\r\n [6, [\"Junho\", \"JUN\", \"06\"]],\r\n [7, [\"Julho\", \"JUL\", \"07\"]],\r\n [8, [\"Agosto\", \"AGO\", \"08\"]],\r\n [9, [\"Setembro\", \"SET\", \"09\"]],\r\n [10, [\"Outubro\", \"OUT\", \"10\"]],\r\n [11, [\"Novembro\", \"NOV\", \"11\"]],\r\n [12, [\"Dezembro\", \"DEZ\", \"12\"]],\r\n ]);\r\n\r\n // ============================ TOOLS e JS HELPERS ================================ \\\\\r\n\r\n static isJson = (s: any): boolean => {\r\n try {\r\n JSON.parse(s);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n static stringify = (o: any): string => {\r\n // Converte o Objeto em String JSON, e aproveita e já remove alguns caracteres de controle.\r\n return JSON.stringify(o)\r\n ?.replace(new RegExp(\"\\n\", 'g'), \"\")\r\n ?.replace(new RegExp(\"\\r\", 'g'), \"\")\r\n ?.replace(new RegExp(\"\\t\", 'g'), \"\")\r\n ?.replace(new RegExp(\"\\b\", 'g'), \"\")\r\n ?.replace(new RegExp(\"\\f\", 'g'), \"\")\r\n };\r\n\r\n static parseJSON = (t: any) => {\r\n // Se for um JSON válido. Retorna o objeto, se não null.\r\n if (t === \"\") return \"\";\r\n let resultado = null;\r\n try {\r\n resultado = JSON.parse(t);\r\n } catch (e) {\r\n LOG(1, \"❌ JSON Inválido: Não foi possível converter o JSON.\");\r\n return null;\r\n }\r\n return resultado;\r\n };\r\n\r\n // String qualquer em string com números\r\n static convertToNumeric = (texto: string): Array<number> => {\r\n let arrayDeNumeros = [];\r\n for (const char of texto) {\r\n arrayDeNumeros.push(char.codePointAt(0) || 0);\r\n }\r\n return arrayDeNumeros;\r\n }\r\n\r\n // COnversor para Texto.\r\n static convertToTexto = (arrayNumeros: Array<number>): string => {\r\n return String.fromCodePoint(...arrayNumeros);\r\n }\r\n\r\n // Conversor para Texto, separado por virgula\r\n static convertToTexto2 = (stringNumeros: string): string => {\r\n return String.fromCodePoint(...stringNumeros.split(\",\").map(i => Number(i)));\r\n }\r\n\r\n static aCadaElemento = (query: any, fn: Function): any[] => {\r\n // A cada elemento encontrado pelo QAll executa a funcao\r\n let elementos = LibUtil.QAll(query);\r\n elementos.forEach((e: any) => {\r\n fn(e);\r\n });\r\n // Sempre retorna uma array por caus do QAll\r\n return elementos;\r\n };\r\n\r\n // Executa a FUNCAO em todas as propriedades deste OA. Inclusive Obj.Obj... (Matriz de Dados)\r\n static aCadaSubPropriedade = (OA: any, funcao: Function | null = null, exceto: string = \"Object\") => {\r\n let c = 0;\r\n for (let a in OA) {\r\n if (LibUtil.classof(OA[a]) != exceto) {\r\n if (funcao) {\r\n funcao(OA[a], a, OA);\r\n }\r\n }\r\n c++;\r\n // Se o atual é objeto, itera internamente\r\n if (LibUtil.classof(OA[a]) == \"object\") {\r\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\r\n }\r\n // Se o atual é array, itera internamente\r\n if (LibUtil.classof(OA[a]) == \"array\") {\r\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\r\n }\r\n }\r\n return c;\r\n };\r\n\r\n static apenasEstes = (s: string = \"\", regexPossiveis: string = \"0-9\\+\"): string => {\r\n if (s == null) return \"\";\r\n let regex = new RegExp(\"(?![\" + regexPossiveis + \"]).\");\r\n return s.toString().replace(regex, \"\");\r\n }\r\n\r\n static getV = (keys: string | string[], objeto: any): any => {\r\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\r\n // LibUtil.getV(\"a.b.c\",{a:{b:{c:\"d\"}}})\r\n if (LibUtil.classof(objeto) == \"object\") {\r\n if (LibUtil.classof(keys) == \"string\") {\r\n if (keys.includes(\".\")) {\r\n // Multi\r\n let ks: string[] = (keys as string).split(\".\");\r\n let lastObj = objeto;\r\n let lastV = {};\r\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\r\n ks.forEach((k) => {\r\n if (lastObj) { // Pode ficar nulo durante\r\n lastV = lastObj[k];\r\n if (typeof lastV == \"object\") {\r\n lastObj = lastV;\r\n } else {\r\n lastObj = null;\r\n }\r\n }\r\n });\r\n return lastV;\r\n } else {\r\n // Simples\r\n return objeto[(keys as string)];\r\n }\r\n } else if (LibUtil.classof(keys) == \"array\") {\r\n // Array de Keys. Faz um loop e de forma recursiva tenta pegar o valor. Se o valor não for nulo, interrompe e retorna.\r\n let lastV = null;\r\n for (let k of (keys as string[])) {\r\n lastV = LibUtil.getV(k, objeto);\r\n if (lastV != null) {\r\n return lastV;\r\n }\r\n }\r\n } else {\r\n LOG(1, \"❌ getV() - Nome da propriedade precisa ser em String. (\" + LibUtil.classof(keys) + \"):\", keys);\r\n }\r\n } else {\r\n LOG(1, \"❌ Para ver a chave, o parametro objeto precisa receber um objeto. (\" + typeof objeto + \")\");\r\n }\r\n return null;\r\n };\r\n\r\n static setV = (keys: string, value: any, objeto: any) => {\r\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\r\n // LibUtil.setV(\"a.b.c\",\"mudei\",{a:{b:{c:\"d\"}}})\r\n if (typeof objeto == \"object\") {\r\n if (LibUtil.classof(keys) == \"string\") {\r\n if (keys.includes(\".\")) {\r\n // Multi\r\n let ks: string[] = keys.split(\".\");\r\n let lastObj = objeto;\r\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\r\n ks.forEach((k) => {\r\n if (ks.indexOf(k) == (ks.length - 1)) {\r\n // Último\r\n lastObj[k] = value;\r\n } else {\r\n if (LibUtil.classof(lastObj[k]) != \"object\") {\r\n lastObj[k] = {};\r\n }\r\n }\r\n lastObj = lastObj[k];\r\n });\r\n return objeto;\r\n } else {\r\n // Set direto, não tem ponto e é string\r\n objeto[keys] = value;\r\n return objeto;\r\n }\r\n } else {\r\n LOG(1, \"❌ setV() - Nome da propriedade precisa ser em string. (\" + LibUtil.classof(keys) + \"):\", keys);\r\n }\r\n } else {\r\n LOG(1, \"❌ setV() - Objeto precisa receber um objeto. (\" + typeof objeto + \")\");\r\n }\r\n return null;\r\n };\r\n\r\n static geraObjForm = (form: any) => {\r\n // Gerar Objeto a partir de um Form Entries\r\n if (LibUtil.classof(form) != \"object\") {\r\n // Se vier o Elemento Form / o Query do Form\r\n form = LibUtil.Q(form);\r\n }\r\n // Coleta apenas os campos com value.\r\n let rObjeto: any = [...form.querySelectorAll(\" *[name]\")]\r\n .map(o => { return { [o.name]: o.value } })\r\n .reduce((a, o) => { a = { ...a, ...o }; return a; }, {});\r\n if (form) {\r\n\r\n for (let [k, v] of Object.entries(rObjeto)) {\r\n LibUtil.setV(k, v, rObjeto);\r\n if (k.includes(\".\")) {\r\n delete rObjeto[k];\r\n }\r\n }\r\n Array.from(form.querySelectorAll(\"mk-sel\")).forEach((e: any) => {\r\n // rObjeto[mk.name] = mk.value;\r\n LibUtil.setV(e.name, e.value, rObjeto);\r\n });\r\n // Aqui apenas coleta os mkBot que foram modificados pelo usuário.\r\n Array.from(form.querySelectorAll(\"mk-bot.changed\")).forEach((e: any) => {\r\n // rObjeto[mk.name] = mk.value;\r\n LibUtil.setV(e.name, e.value, rObjeto);\r\n });\r\n }\r\n return rObjeto;\r\n }\r\n\r\n static funcoesDinamicas = new Map<string, Function>();\r\n static aCada1s = () => {\r\n Array.from(LibUtil.funcoesDinamicas.values()).map((fn: Function) => { if (fn != null) fn() });\r\n setTimeout(() => {\r\n LibUtil.aCada1s();\r\n }, 1000);\r\n };\r\n\r\n static cortarString = (linha: string, regex: string, casas: any) => {\r\n let resultado: any = \"\";\r\n try {\r\n resultado = new RegExp(regex).exec(linha)?.groups?.[\"ok\"];\r\n } catch (e) {\r\n LOG(1, \"Regex Inválido. \", e);\r\n return \"0\";\r\n }\r\n if ((!casas) || (casas == \"\") || (casas <= 0)) casas = 0;\r\n return `${LibUtil.toNumber(resultado, casas)}`;\r\n }\r\n\r\n static uuid = () => {\r\n // Padrão UUIDV4 - Gerador de identificador unico\r\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (c: any) => { // c = String\r\n return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);\r\n }).toString().toUpperCase();\r\n }\r\n\r\n // mk.isRoute(\"/Pesagem$\") // <= Rota termina com /Pesagem\r\n static isRoute = (rotaRegex: string) => {\r\n return new RegExp(rotaRegex).test(window.location.pathname);\r\n }\r\n\r\n static verificarIgualdade(array: any[], propriedades: string[]) {\r\n // Verifica se várias propriedades estão iguais em todos os objetos de um array.\r\n if (array.length <= 1) return true;\r\n const primeiro = array[0];\r\n return array.every(objeto => {\r\n return propriedades.every(propriedade => {\r\n // Verifica se a propriedade existe em ambos os objetos antes da comparação\r\n if (!(propriedade in objeto) || !(propriedade in primeiro)) {\r\n LOG(1, `⚠️ Propriedade '${propriedade}' ausente em um ou mais objetos.`);\r\n return false; // considera falso se a propriedade não existir\r\n }\r\n return objeto[propriedade] === primeiro[propriedade];\r\n });\r\n });\r\n }\r\n\r\n static individualNoObjeto(array: any[], propriedade: string): any[] {\r\n // Ignora os Objetos que esta Propriedade se repetir.\r\n let novoSet = new Set(array.map((o) => { return o[propriedade] }));\r\n return array.map((o) => {\r\n if (novoSet.has(o[propriedade])) {\r\n novoSet.delete(o[propriedade]);\r\n return o;\r\n } else return null;\r\n }).filter(o => o);\r\n }\r\n\r\n static hasFaltante(array: any[], propriedades: string[]) {\r\n // Verifica as propriedades informadas estão disponíveis em todos os objetos do array.\r\n if (array.length <= 0) return false;\r\n return array.every(objeto => {\r\n return propriedades.every(propriedade => {\r\n if (!(propriedade in objeto)) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n });\r\n }\r\n\r\n static somarEmObjeto(lista: any[], propriedade: string) {\r\n // Soma uma determinada propriedade em uma lista\r\n return lista.reduce((acc: number, val: any) => {\r\n if (LibUtil.classof(val[propriedade]) == \"number\") {\r\n return acc + val[propriedade];\r\n }\r\n return acc;\r\n }, 0);\r\n }\r\n\r\n static capitalize = (texto?: string | null): string => {\r\n let arrayTexto = texto?.toString().split(\" \");\r\n return arrayTexto?.map(str => {\r\n let str_low = str.toLowerCase();\r\n if ([\"da\", \"de\", \"do\", \"das\", \"dos\", \"e\"].includes(str_low)) {\r\n return str_low;\r\n } else {\r\n return str_low.charAt(0).toUpperCase() + str_low.slice(1);\r\n }\r\n }).join(\" \") || \"\";\r\n };\r\n\r\n static GetParam = (name: string | null = null, url: string | null = null) => {\r\n // Coleta o valor do parametro da url.\r\n if (!url) url = document.location.toString();\r\n if (name != null) {\r\n return new URL(url).searchParams.get(name);\r\n } else {\r\n return new URL(url).searchParams.toString();\r\n }\r\n }\r\n\r\n static getParamObject = (url?: string) => {\r\n if (!url) url = document.location.toString();\r\n return url?.split(\"?\")[1]?.split(\"&\")?.reduce((acc: any, val: string) => {\r\n const [key, value] = val.split(\"=\");\r\n acc[key] = value;\r\n return acc;\r\n }, {});\r\n }\r\n\r\n static toQueryString(obj?: any, urlAtual: string = \"\"): string {\r\n if (obj) {\r\n // Quando é GET, modifica a URL e acrescenta os QUERYSTRING do objeto enviado por parametro.\r\n if (obj != null) {\r\n if (!urlAtual.includes(\"?\")) {\r\n urlAtual = urlAtual + \"?\"; // Cria o divisor entre os dados do query e o endereço destino.\r\n }\r\n let queryStrings = \"\";\r\n if (LibUtil.classof(obj) == \"object\") {\r\n for (let propriedade in obj) {\r\n if (LibUtil.classof(obj[propriedade]) == \"object\") {\r\n let propJson = JSON.stringify(obj[propriedade]);\r\n queryStrings += `&${propriedade}=${propJson}`;\r\n LOG(1, `⚠️ toQueryString() - Uma propriedade enviada: '${propriedade}' era um objeto. Url`, urlAtual);\r\n } else {\r\n if (obj[propriedade] != null) {\r\n queryStrings += `&${propriedade}=${obj[propriedade]}`;\r\n }\r\n }\r\n }\r\n } else {\r\n LOG(1, \"❌ Dados enviados via GET precisam ser Object. Dados: \", LibUtil.classof(obj));\r\n }\r\n urlAtual = urlAtual + queryStrings;\r\n }\r\n }\r\n if (urlAtual.endsWith(\"?\")) urlAtual = urlAtual.slice(0, -1); // Remove o ? final se não tiver nada depois.\r\n urlAtual = urlAtual.replaceAll(\"?&\", \"?\");\r\n return urlAtual;\r\n }\r\n\r\n /**\r\n * Mapeia uma EntidadeA para EntidadeB usando o TRANSFORMA\r\n * É nescessário informar o DE/PARA/TRANSFORMA de cada propriedade.\r\n */\r\n static mapearEntidade<T, U>(\r\n entidadeOrigem: T,\r\n mapeamento: MapeamentoItem<T, U>[]\r\n ): U {\r\n const entidadeDestino: any = {};\r\n mapeamento.forEach(item => {\r\n const valor = entidadeOrigem[item.de];\r\n if (valor !== undefined) {\r\n entidadeDestino[item.para] = item.transforma(valor);\r\n } else {\r\n entidadeDestino[item.para] = null;\r\n }\r\n });\r\n return entidadeDestino as U;\r\n\r\n }\r\n\r\n /**\r\n * Faz uma tentativa de obter uma url, mas se falhar, retorna nulo\r\n */\r\n static getURL(urlQuery?: string) {\r\n let url;\r\n if (urlQuery) {\r\n try {\r\n url = new URL(urlQuery);\r\n } catch (e) {\r\n LOG(1, \"❌ URL INVÁLIDA: \", urlQuery);\r\n }\r\n }\r\n return url;\r\n }\r\n\r\n static conversorCSS(texto: string): string[] {\r\n const regex = /\\.([a-z0-9-]+)\\s*{.*?}/g;\r\n let arrayTexto = texto.replace(/\\s+/g, ' ').replace(/[\\r\\n]/g, '').replace(regex, (match, group1) => group1 + \",\").trim().split(\",\");\r\n return arrayTexto.map(i => i.trim()).filter(o => o != \"\");\r\n }\r\n\r\n static sort<T, K extends keyof T>(array: T[], propriedade: K): T[] {\r\n return array.sort((a, b) => (a[propriedade] < b[propriedade] ? -1 : 1));\r\n }\r\n\r\n static converteEnterEmBr(texto: string): string {\r\n return texto.replace(/\\n/g, \"<br>\");\r\n }\r\n\r\n static hasHtmlTags(texto: string): boolean {\r\n const regex = /<\\/?[a-z][\\s\\S]*>/i;\r\n return regex.test(texto);\r\n }\r\n\r\n\r\n /**\r\n * Une duas listas quando elas tem uma propriedade em comum\r\n * @param listaA Lista a ser sobreescrita ou preenchida\r\n * @param listaB Lista com os dados para preencher ou sobreescrever\r\n * @param propEmComum Nome da propriedade que, se estiver em comum nas listas, será populado, do contrário não.\r\n * @returns Lista Unida por um Filtro.\r\n */\r\n static Union(listaA: any[], listaB: any[], propEmComum?: string): any[] {\r\n let resultado = listaA.map(itensA => ({\r\n ...itensA,\r\n ...listaB.filter(o => o[propEmComum as keyof typeof o]?.toString() == itensA[propEmComum as keyof typeof listaA]?.toString())[0],\r\n }));\r\n G_START(3, \"Unindo Listas...\")\r\n LOG(3, \"ListaA: \", listaA);\r\n LOG(3, \"ListaB: \", listaB);\r\n LOG(3, \"Resultado: \", resultado);\r\n G_END(3);\r\n return resultado;\r\n }\r\n\r\n /**\r\n * Gera uma string menor que a informada.\r\n * @returns \r\n */\r\n static gerarHashCurto(texto: string, tamanho: number = 8): string {\r\n let hash = 0;\r\n for (let i = 0; i < texto.length; i++) {\r\n hash = ((hash << 5) - hash) + texto.charCodeAt(i);\r\n hash = hash & hash; // Converte para inteiro de 32 bits\r\n }\r\n // Converter para string hexadecimal positiva e pegar os primeiros caracteres\r\n return Math.abs(hash).toString(16).substring(0, tamanho);\r\n }\r\n\r\n static gerarNomeColection(nomeSistema: string, colecao: string): string {\r\n return LibUtil.gerarHashCurto(nomeSistema) + \"_\" + colecao;\r\n }\r\n\r\n\r\n static apenasNumerosLetras = (s: string = \"\"): string => {\r\n if (s == null) return \"\";\r\n // Ignora qualquer outro caracter além de Numeros e Letras formato ocidental\r\n return s.replace(/(?![a-zA-Z0-9])./g, \"\");\r\n };\r\n\r\n static removeEspecias = (s: string): string => {\r\n if (s == null) return \"\";\r\n // Remove acentos e depois chama Apenas Números e Letras.\r\n s = s.toString();\r\n return LibUtil.apenasNumerosLetras(LibUtil.removeAcentos(s));\r\n };\r\n\r\n static LerTexto = async (texto = \"Teste som: 1, 2, 3.\", locutor = 0) => {\r\n let lerVoz = window.speechSynthesis;\r\n let listaVozes = lerVoz.getVoices().filter(o => o.lang.toLowerCase() == \"pt-br\");\r\n let locutorEncontrado = listaVozes[locutor] || listaVozes[0] || null;\r\n return new Promise((r) => {\r\n if (lerVoz.speaking) {\r\n LOG(1, \">> Ainda está reproduzindo. Tente mais tarde.\");\r\n return;\r\n }\r\n if (texto != \"\") {\r\n const ssu = new SpeechSynthesisUtterance(texto);\r\n ssu.lang = \"pt-BR\";\r\n ssu.voice = locutorEncontrado;\r\n ssu.pitch = 0; // Tom de voz\r\n ssu.rate = 1.5; // Velocidade\r\n ssu.onend = (ev) => { r(true) };\r\n ssu.onerror = (ev) => { LOG(1, \"❌ Erro: \", ev.error); r(false) };\r\n lerVoz.cancel();\r\n lerVoz.speak(ssu);\r\n }\r\n });\r\n }\r\n\r\n static async LerProximoERemover(playlist: string[]) {\r\n if (await LibUtil.LerTexto(playlist[0]) == true) {\r\n playlist.shift();\r\n }\r\n return playlist;\r\n }\r\n\r\n static LeituraInterrompida() {\r\n window.speechSynthesis.cancel();\r\n }\r\n\r\n static gerarNumeroInteiro(min: number, max: number): any {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n\r\n static SelectInner(e: HTMLInputElement) {\r\n // Seleciona texto do elemento\r\n if (window.getSelection) {\r\n const selection = window.getSelection();\r\n const range = document.createRange();\r\n range.selectNodeContents(e);\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n }\r\n }\r\n\r\n static generatePrimaryKey(item: any, primarykey: string): any {\r\n if (item == null) {\r\n LOG(1, \"❌ Não foi possível gerar uma chave, pois o objeto ainda não está preenchido.\")\r\n return item;\r\n }\r\n\r\n if (LibUtil.classof(item) != \"object\") {\r\n LOG(1, \"⚠️ Não foi possível gerar uma chave neste tipo de variável: \", LibUtil.classof(item));\r\n return item;\r\n }\r\n\r\n if (item[primarykey] != null) {\r\n LOG(5, \"Chave não gerada no objeto, pois já estava preenchido com:\", item[primarykey]);\r\n return item;\r\n }\r\n\r\n item[primarykey] = LibUtil.uuid();\r\n return item;\r\n }\r\n\r\n static hslToHex(h: number, s: number, l: number) {\r\n // Normalize saturation and lightness to a 0-1 range\r\n s /= 100;\r\n l /= 100;\r\n\r\n let c = (1 - Math.abs(2 * l - 1)) * s,\r\n x = c * (1 - Math.abs(((h / 60) % 2) - 1)),\r\n m = l - c / 2,\r\n r = 0,\r\n g = 0,\r\n b = 0;\r\n\r\n if (0 <= h && h < 60) {\r\n r = c;\r\n g = x;\r\n b = 0;\r\n } else if (60 <= h && h < 120) {\r\n r = x;\r\n g = c;\r\n b = 0;\r\n } else if (120 <= h && h < 180) {\r\n r = 0;\r\n g = c;\r\n b = x;\r\n } else if (180 <= h && h < 240) {\r\n r = 0;\r\n g = x;\r\n b = c;\r\n } else if (240 <= h && h < 300) {\r\n r = x;\r\n g = 0;\r\n b = c;\r\n } else if (300 <= h && h < 360) {\r\n r = c;\r\n g = 0;\r\n b = x;\r\n }\r\n\r\n // Convert RGB values to 0-255 range\r\n r = Math.round((r + m) * 255);\r\n g = Math.round((g + m) * 255);\r\n b = Math.round((b + m) * 255);\r\n\r\n // Convert RGB components to hexadecimal and pad with leading zero if needed\r\n const toHex = (c: any) => {\r\n const hex = c.toString(16);\r\n return hex.length === 1 ? '0' + hex : hex;\r\n };\r\n\r\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\r\n }\r\n\r\n static isFilled(dados: any): boolean {\r\n if (LibUtil.classof(dados) == \"array\") {\r\n if ((dados as Array<any>).length && (dados as Array<any>).length > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static replace(regex: string, valor: string | number): string {\r\n if (typeof valor === \"number\") valor = valor.toString();\r\n return valor.replace(new RegExp(regex, 'g'), '');\r\n }\r\n\r\n // Mínimo 2 timestamps\r\n static calculateJitter(timestamps: number[]): number {\r\n if (timestamps.length < 2) return 0;\r\n\r\n const delays = [];\r\n for (let i = 1; i < timestamps.length; i++) {\r\n delays.push(timestamps[i] - timestamps[i - 1]);\r\n }\r\n\r\n if (delays.length < 2) return 0;\r\n let totalJitterDifference = 0;\r\n\r\n for (let i = 1; i < delays.length; i++) {\r\n totalJitterDifference += Math.abs(delays[i] - delays[i - 1]);\r\n }\r\n\r\n return totalJitterDifference / (delays.length - 1);\r\n }\r\n\r\n // Soma os valores dos arrays por índice\r\n static somarPorIndice = (arrays: number[][]): number[] => {\r\n if (arrays.length === 0) return [];\r\n return arrays.reduce((acc, arr) =>\r\n arr.map((val, i) => (acc[i] || 0) + val)\r\n );\r\n }\r\n\r\n // Soma os valores dos arrays\r\n static somarArrayInterna = (arrays: number[][]): number[] => {\r\n if (arrays.length === 0) return [];\r\n return arrays.map(a => a.reduce((acc, v) => acc + v, 0));\r\n }\r\n\r\n // Faz o download de um Blob()\r\n static downloadBlob = (blob: Blob, nomeArquivo: string) => {\r\n const url = URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = nomeArquivo;\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n }\r\n\r\n static wordsToCamelCase(texto: string): string {\r\n // Se houver espaços, traços, undercores, converte para camelCase\r\n return texto.split(/[\\s-_]+/)\r\n .map((word, index) =>\r\n index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)\r\n ).join('');\r\n }\r\n\r\n static camelCase(texto: string): string {\r\n return texto.charAt(0).toLowerCase() + texto.slice(1);\r\n }\r\n\r\n static pascalCase(texto: string): string {\r\n return texto.charAt(0).toUpperCase() + texto.slice(1);\r\n }\r\n\r\n static dashedCase(texto: string): string {\r\n // Converte camelCase ou PascalCase para dashed-case\r\n return texto.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\r\n }\r\n\r\n static separaWordsCase(texto: string): string {\r\n // Separa as palavras ao trocar de letra minúscula para maiúscula.\r\n // CodigoIBGE => Codigo IBGE\r\n let textoSeparado = texto.replace(/([a-z])([A-Z])/g, '$1 $2');\r\n return textoSeparado;\r\n }\r\n\r\n // Separa as palavras por espaço, traço ou underline, e retorna um array com as palavras.\r\n static wordsArray(texto: string): string[] {\r\n return texto.split(/[\\s-_]+/).filter(word => word.length > 0);\r\n }\r\n\r\n static tentaAcentuarTexto(s: string | string[]): string {\r\n // Utiliza regras de acentuação de português para tentar acentuar a palavra informada.\r\n if (LibUtil.classof(s) == \"array\") {\r\n return (s as string[]).map((palavra) => LibUtil.tentaAcentuarTexto(palavra)).join(\" \");\r\n }\r\n let texto = (s as string);\r\n if (texto.endsWith(\"ao\")) {\r\n texto = texto.slice(0, -2) + \"ão\"; // Ex: mão\r\n }\r\n if (texto.endsWith(\"oes\")) {\r\n texto = texto.slice(0, -3) + \"ões\"; // Ex: permissões\r\n }\r\n if (texto.endsWith(\"cao\") || texto.endsWith(\"çao\") || (texto.endsWith(\"cão\") && texto != \"cão\")) {\r\n texto = texto.slice(0, -3) + \"ção\"; // Ex: ação\r\n }\r\n if (texto.endsWith(\"coes\") || texto.endsWith(\"çoes\") || texto.endsWith(\"cões\")) {\r\n texto = texto.slice(0, -4) + \"ções\"; // Ex: observações\r\n }\r\n\r\n return texto;\r\n }\r\n\r\n static pluralOf(word: string | string[]): string {\r\n // Retorna o plural da palavra informada em português\r\n if (LibUtil.classof(word) == \"array\") {\r\n return (word as string[]).map((palavra) => LibUtil.pluralOf(palavra)).join(\" \");\r\n }\r\n\r\n let texto = (word as string);\r\n if (texto.endsWith(\"ão\")) {\r\n return texto.slice(0, -2) + \"ões\";\r\n } else if (texto.endsWith(\"ões\")) {\r\n return texto.slice(0, -3) + \"ões\";\r\n } else if (texto.endsWith(\"r\") || texto.endsWith(\"s\") || texto.endsWith(\"z\")) {\r\n return texto + \"es\";\r\n } else if (texto.endsWith(\"m\")) {\r\n return texto.slice(0, -1) + \"ns\";\r\n } else if (texto.endsWith(\"l\")) {\r\n return texto.slice(0, -1) + \"is\";\r\n } else {\r\n return texto + \"s\";\r\n }\r\n }\r\n\r\n static setLogLevel(level: number): void {\r\n LibUtil.loglevel = level;\r\n }\r\n\r\n static setFormConfigs(configs: Partial<IFieldComponent<any>>): void {\r\n LibUtil.formConfigs = configs;\r\n }\r\n\r\n static paraPortugues(texto: string): string {\r\n let acentuado = LibUtil.tentaAcentuarTexto(LibUtil.wordsArray(LibUtil.separaWordsCase(texto)))\r\n return LibUtil.replaceDicionario(acentuado);\r\n }\r\n\r\n static paraPortuguesPlural(texto: string): string {\r\n let plural = LibUtil.pluralOf(LibUtil.paraPortugues(texto))\r\n return plural;\r\n }\r\n\r\n // Dicionário\r\n static replaceDicionario(texto: string): string {\r\n if (texto.startsWith(\"Is \")) {\r\n texto = texto.replace(/^Is /, \"É \");\r\n }\r\n texto = texto.replaceAll(\"Codigo\", \"Código\");\r\n texto = texto.replaceAll(\"Icone\", \"Ícone\");\r\n texto = texto.replaceAll(\"Enderec\", \"Endereç\");\r\n texto = texto.replaceAll(\"Balanc\", \"Balanç\");\r\n texto = texto.replaceAll(\"Usuari\", \"Usuári\");\r\n texto = texto.replaceAll(\"Lancamento\", \"Lançamento\");\r\n texto = texto.replaceAll(\"Referencia\", \"Referência\");\r\n texto = texto.replaceAll(\"Ultim\", \"Últim\");\r\n texto = texto.replaceAll(\"Numero\", \"Número\");\r\n texto = texto.replaceAll(\"Inicio\", \"Início\");\r\n texto = texto.replaceAll(\"Socio\", \"Sócio\");\r\n texto = texto.replaceAll(\"Socia\", \"Sócia\");\r\n texto = texto.replaceAll(\"Especie\", \"Espécie\");\r\n texto = texto.replaceAll(\"Cobranca\", \"Cobrança\");\r\n texto = texto.replaceAll(\"Modulo\", \"Módulo\");\r\n texto = texto.replaceAll(\"Servico\", \"Serviço\");\r\n texto = texto.replaceAll(\"Aliquota\", \"Alíquota\");\r\n texto = texto.replaceAll(\"Calculo\", \"Cálculo\");\r\n texto = texto.replaceAll(\"Unitario\", \"Unitário\");\r\n texto = texto.replaceAll(\"Procedencia\", \"Procedência\");\r\n texto = texto.replaceAll(\"Mudanca\", \"Mudança\");\r\n texto = texto.replaceAll(\"Pratica\", \"Prática\");\r\n texto = texto.replaceAll(\"Propria\", \"Própria\");\r\n texto = texto.replaceAll(\"Impropria\", \"Imprópria\");\r\n texto = texto.replaceAll(\"Responsavel\", \"Responsável\");\r\n texto = texto.replaceAll(\"Conjuge\", \"Cônjuge\");\r\n texto = texto.replaceAll(\"Cafe\", \"Café\");\r\n texto = texto.replaceAll(\"Transferencia\", \"Transferência\");\r\n texto = texto.replaceAll(\"Bancaria\", \"Bancária\");\r\n texto = texto.replaceAll(\"Agencia\", \"Agência\");\r\n texto = texto.replaceAll(\"Digito\", \"Dígito\");\r\n\r\n if (texto.includes(\"Mes \")) texto = texto.replaceAll(\"Mes \", \"Mês \");\r\n if (texto.endsWith(\"Mes\")) texto = texto.replace(/Mes$/, \"Mês\");\r\n if (texto.includes(\"Ate \")) texto = texto.replaceAll(\"Ate \", \"Até \");\r\n if (texto.endsWith(\"Ate\")) texto = texto.replace(/Ate$/, \"Até\");\r\n if (texto.includes(\"Socio \")) texto = texto.replaceAll(\"Socio \", \"Sócio \");\r\n if (texto.endsWith(\"Socio\")) texto = texto.replace(/Socio$/, \"Sócio\");\r\n if (texto.includes(\"Socia \")) texto = texto.replaceAll(\"Socia \", \"Sócia \");\r\n if (texto.endsWith(\"Socia\")) texto = texto.replace(/Socia$/, \"Sócia\");\r\n return texto;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n////////////////////////////////////\r\n// CONSOLES: LOG - WARN - ERR ...\r\n////////////////////////////////////\r\n// LibUtil.loglevel: 1,2,3 => Bigger will see more\r\n\r\nexport const LOG = (level: number, ...attr: any) => {\r\n if (LibUtil.loglevel >= level) {\r\n return console.log(...attr);\r\n }\r\n}\r\n\r\n// export const WARN = (level: number, ...attr: any) => {\r\n// if (LibUtil.loglevel >= level) {\r\n// return console.warn(...attr);\r\n// }\r\n// }\r\n\r\n// export const ERR = (level: number, ...attr: any) => {\r\n// if (LibUtil.loglevel >= level) {\r\n// return console.error(...attr);\r\n// }\r\n// }\r\n\r\nexport const G_START = (level: number, ...attr: any) => {\r\n if (LibUtil.loglevel >= level) {\r\n return console.groupCollapsed(...attr);\r\n }\r\n}\r\n\r\nexport const G_START_OPEN = (level: number, ...attr: any) => {\r\n if (LibUtil.loglevel >= level) {\r\n return console.group(...attr);\r\n }\r\n}\r\n\r\nexport const G_END = (level: number, ...attr: any) => {\r\n if (LibUtil.loglevel >= level) {\r\n return console.groupEnd();\r\n }\r\n}\r\n\r\n// LOG COLAPSADO\r\nexport const LOGC = (level: number, title: string, ...attr: any) => {\r\n G_START(level, title);\r\n LOG(level, ...attr);\r\n G_END(level);\r\n}\r\n\r\n\r\n\r\nexport type IClassOf = \"string\" | \"number\" | \"nan\" | \"object\" | \"array\" | \"boolean\" | \"undefined\" | \"null\" | \"function\" | \"date\" | \"regexp\" | \"error\" | \"symbol\" | \"bigint\"\r\n\r\nexport interface IFormatter {\r\n mask: string | ((value: any) => string);\r\n regex: string;\r\n validate: (value: any) => boolean;\r\n}\r\n\r\nexport interface IUtilFormatters {\r\n cpf: IFormatter;\r\n cnpj: IFormatter;\r\n cpf_cnpj: IFormatter;\r\n cnh: IFormatter;\r\n pis: IFormatter;\r\n dia: IFormatter;\r\n mes: IFormatter;\r\n ano: IFormatter;\r\n anoRecente: IFormatter;\r\n data: IFormatter;\r\n dataIso: IFormatter;\r\n numero: IFormatter;\r\n decimal: IFormatter;\r\n letra: IFormatter;\r\n numeroELetra: IFormatter;\r\n ip: IFormatter;\r\n email: IFormatter;\r\n cep: IFormatter;\r\n}\r\n\r\nexport interface MapeamentoItem<T, U> {\r\n de: keyof T;\r\n para: keyof U;\r\n transforma: (v: T[keyof T]) => U[keyof U];\r\n}\r\n","import { computed, signal, Type, WritableSignal } from \"@angular/core\";\r\nimport { IKV, IKV_ext, ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\r\nimport { LibUtil, LOG } from \"../../util/util\";\r\n\r\nexport class Formulario {\r\n\r\n campos = signal<IFields<any>>({});\r\n listaCampos = computed<IFieldComponent<any>[]>(() => Object.values(this.campos()));\r\n listaErrors = computed<string[]>(() => {\r\n let errors: string[] = [];\r\n for (const key of Object.keys(this.campos())) {\r\n const campoErros = this.campos()?.[key]?.errors;\r\n if (campoErros && campoErros.length > 0) {\r\n errors = [...errors, ...campoErros.map(e => `${String(key)}: ${e}`)];\r\n }\r\n }\r\n return errors;\r\n });\r\n values = signal<any>({});\r\n registredFields = signal<{ [key in keyof IFields<any>]: any }>({});\r\n\r\n showTouched = signal<boolean>(false);\r\n isEnviado: boolean = false;\r\n isEnviando: boolean = false;\r\n instance: any = null;\r\n\r\n valido = computed(() => {\r\n for (const key of Object.keys(this.campos())) {\r\n const campo = this.campos()[key];\r\n const errors = campo.errors;\r\n if (errors && errors.length > 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n });\r\n algumTocado = computed(() => {\r\n return this.listaCampos().some(campo => campo.touched);\r\n });\r\n\r\n constructor(campos: IFields<any>, startValues: any = {}, instance: any = null) {\r\n this.instance = instance;\r\n let values: any = this._startValues(campos, startValues);\r\n let camposStarted: IFields<any> = {};\r\n for (const key of Object.keys(campos)) {\r\n camposStarted[key] = {\r\n ...campos[key],\r\n touched: false,\r\n invalid: false,\r\n errors: [], // [Valide.msg.naoValidado]\r\n ...LibUtil.formConfigs,\r\n };\r\n }\r\n this.campos.set(camposStarted);\r\n this.values.set(values);\r\n this.obterOpcoes();\r\n return this;\r\n }\r\n\r\n updateValues(newValues: any) {\r\n if (LibUtil.classof(newValues) !== 'object') {\r\n LOG(1, \"❌ Formulario.updateValues deve receber um objeto.\");\r\n }\r\n this.values.update(v => {\r\n return { ...v, ...newValues }\r\n });\r\n }\r\n\r\n removeValue(prop: keyof IFields<any>) {\r\n this.values.update(v => {\r\n if (v.hasOwnProperty(prop)) {\r\n delete v[prop];\r\n } else {\r\n LOG(1, `❌ Formulario.removeValue: Propriedade '${String(prop)}' não existe nos valores.`);\r\n }\r\n return { ...v };\r\n });\r\n }\r\n\r\n updateCampo(prop: keyof IFields<any>, newCampoData: Partial<IFieldComponent<any>>) {\r\n if (newCampoData.hasOwnProperty('errors')) {\r\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\r\n }\r\n this.campos.update(c => {\r\n if (c[prop]) {\r\n c[prop] = { ...c[prop], ...newCampoData };\r\n } else {\r\n LOG(1, `❌ Formulario.updateCampo: Campo '${String(prop)}' não existe.`);\r\n }\r\n return { ...c };\r\n });\r\n }\r\n\r\n setAllCamposPartial(newCampoData: Partial<IFieldComponent<any>>) {\r\n if (newCampoData.hasOwnProperty('errors')) {\r\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\r\n }\r\n this.campos.update(c => {\r\n for (const key of Object.keys(c)) {\r\n c[key] = { ...c[key], ...newCampoData };\r\n }\r\n return { ...c };\r\n });\r\n }\r\n\r\n setAllValuesTo(value: any) {\r\n this.values.update(v => {\r\n for (const key of Object.keys(v)) {\r\n v[key] = value;\r\n }\r\n return { ...v };\r\n });\r\n }\r\n\r\n resetToStartValues() {\r\n const campos = this.campos();\r\n const startValues = this._startValues(campos);\r\n this.values.set(startValues);\r\n }\r\n\r\n private _startValues(campos: IFields<any>, startValues: any = {}) {\r\n let values: any = {};\r\n for (const key of Object.keys(campos)) {\r\n values[key] = campos[key].value ?? '';\r\n }\r\n values = { ...values, ...startValues };\r\n return values;\r\n }\r\n\r\n setDisabledAll(disabled: boolean) {\r\n this.setAllCamposPartial({ disabled });\r\n }\r\n\r\n setTouchedAll(touched: boolean) {\r\n this.setAllCamposPartial({ touched });\r\n }\r\n\r\n async validar(): Promise<any> {\r\n let camposComErros: string[] = [];\r\n let camposPendentes: string[] = [];\r\n\r\n // Executa validações diretamente nos campos registrados\r\n for (const key of Object.keys(this.registredFields())) {\r\n const campoComponent = this.registredFields()[key];\r\n if (campoComponent && typeof campoComponent.executarValidacoes === 'function') {\r\n try {\r\n await campoComponent.executarValidacoes();\r\n } catch (error) {\r\n LOG(1, `❌ Erro ao validar o campo '${key}':`, error);\r\n }\r\n }\r\n }\r\n\r\n // Verifica cada campo para erros e pendências\r\n for (const key of Object.keys(this.campos())) {\r\n const campo = this.campos()[key];\r\n if (campo.errors && campo.errors.length > 0) {\r\n LOG(1, `❌ Erro de validação no campo '${key}':`, campo.errors);\r\n camposComErros.push(key);\r\n }\r\n if (campo.pending) {\r\n LOG(1, `⏳ Campo '${key}' ainda está pendente.`);\r\n camposPendentes.push(key);\r\n }\r\n }\r\n\r\n // Se houver campos pendentes ou com erros rejeita a validação\r\n if (camposPendentes.length > 0) {\r\n return Promise.reject(`${camposPendentes.length} Campos pendentes: ${camposPendentes.join(', ')}`);\r\n }\r\n if (camposComErros.length > 0) {\r\n return Promise.reject(`${camposComErros.length} Campos com erros (inválidos): ${camposComErros.join(', ')}`);\r\n }\r\n return this.values();\r\n }\r\n\r\n private async obterOpcoes() {\r\n let campos = this.campos();\r\n for (const key of Object.keys(campos)) {\r\n let campo = campos[key];\r\n // Ignora campos que não são de seleção\r\n if ([IField.AutoComplete, IField.Select].indexOf(campo.tipo) === -1) continue;\r\n this.updateCampo(campo.prop, { pending: false });\r\n\r\n // Inicializa o signal de opções se não existir\r\n if (campo.options === undefined) campo.options = signal<IKV[]>([]);\r\n\r\n // Opções atuais\r\n const opcoesAtuais = campo.options?.();\r\n\r\n // Se já houver opções E não estiverem vazias, não executa o refill neste momento\r\n if (opcoesAtuais && opcoesAtuais.length > 0) continue;\r\n\r\n // Um refill inicial será executado se definido\r\n if (campo.refill) {\r\n LOG(4, `🔄 Refill em '${key}'. Opções iniciais:`, opcoesAtuais);\r\n this.updateCampo(campo.prop, { pending: true });\r\n let options: IKV[] | null = null;\r\n try {\r\n options = await campo.refill(this);\r\n\r\n // await LibUtil.wait(1000);\r\n if (campo.mapear) {\r\n options = await campo.mapear(options);\r\n }\r\n // let opcoesKV: IKV[] = this.conveterEntidadesParaKV(options, campo.servico.configService.propsDisplay);\r\n if (options === null || LibUtil.classof(options) !== 'array') {\r\n options = [];\r\n }\r\n\r\n // Só atualiza as opções se houver conteúdo, pois já está iniciado o signal.\r\n if (options.length > 0) {\r\n // campo.options.set(options);\r\n this.updateCampo(campo.prop, { options: signal(options) });\r\n LOG(3, `🔄 Refill em '${key}'. recebido:`, options);\r\n }\r\n } catch (error) {\r\n LOG(1, `❌ Erro ao obter opções para o campo '${key}':`, error);\r\n }\r\n this.updateCampo(campo.prop, { pending: false });\r\n\r\n // Se o onMatchOptionOnInit estiver definido, executa o onMatchOption com a opção correspondente ao valor atual do campo.\r\n if (campo.onMatchOptionOnInit) {\r\n const optionValue = options?.find(opt => opt.k === this.values()[campo.prop]);\r\n if (campo.onMatchOption && optionValue) {\r\n try {\r\n campo.onMatchOption?.(this, optionValue);\r\n } catch (err) {\r\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${key}'`, err);\r\n }\r\n }\r\n }\r\n\r\n // Ao concluir o refill executa afterRefill, se definido.\r\n if (campo.afterRefill) {\r\n await campo.afterRefill(this, options);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Remove os valores que não estão nos campos e os tipos campos que não devem ter valor.\r\n sanitizar() {\r\n const campos = this.campos();\r\n const valoresAtuais = this.values();\r\n const novosValores: any = {};\r\n const tiposSemValor = [IField.Display, IField.Button];\r\n for (const key of Object.keys(campos)) {\r\n if (key in valoresAtuais && tiposSemValor.indexOf(campos[key].tipo) === -1) {\r\n novosValores[key] = valoresAtuais[key];\r\n }\r\n }\r\n this.values.set(novosValores);\r\n }\r\n\r\n // Remove os valores que não estão nos campos ou que estão em campos desabilitados.\r\n onlyAvailable() {\r\n const novosValores: any = {};\r\n const valoresAtuais = this.values();\r\n const campos = this.campos();\r\n for (const campo of Object.values(campos)) {\r\n if (campo.prop in valoresAtuais && !campo.disabled) {\r\n novosValores[campo.prop] = valoresAtuais[campo.prop];\r\n }\r\n }\r\n this.values.set(novosValores);\r\n }\r\n\r\n save() {\r\n if (this.instance && typeof this.instance.onSave === 'function') {\r\n this.instance.onSave();\r\n } else {\r\n LOG(1, \"❌ Formulario.save: instância não encontrada.\");\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n/************************************************\\\\\r\n// Modo de uso\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\r\n//*************************************************/\r\n\r\nexport interface IFields<T> {\r\n [key: string]: IFieldComponent<T>;\r\n}\r\n\r\n/************************************************\\\\\r\n// Tipos de Campos disponíveis para uso\t \\\\\r\n//*************************************************/\r\n\r\nexport enum IField {\r\n AutoComplete = 'autocomplete',\r\n Button = 'button',\r\n Checkbox = 'checkbox',\r\n Color = 'color',\r\n Custom = 'custom',\t\t\t\t\t\t\t\t// <== Componentes customizados para uma determinada área.\r\n Date = 'date',\r\n DateTime = 'datetime',\r\n Display = 'display',\t\t\t\t\t\t\t// Representa um campo apenas para exibição\r\n Editor = 'editor',\t\t\t\t\t\t\t\t// Texto multilinha e com Editor\r\n Email = 'email',\r\n Hidden = 'hidden',\r\n Icon = 'icon',\t\t\t\t\t\t\t\t\t\t// Combo de um texto que permite selecionar um icone instalado no sistema.\r\n MultiFactor = 'multifactor',\t\t\t// Combo de 6 campos texto para preenchimento individual por caracter.\r\n MultiKV = 'multikv', // Permite adicionar ou retirar itens em forma KV (Como usado nos seletores e no Importar)\r\n MultiText = 'multitext',\t\t\t\t\t// Lista com: Texto em unica linha.\r\n Number = 'number',\r\n Password = 'password',\r\n Referencia = 'referencia',\t\t\t\t// Campo que referencia um registro de outra entidade. Utilizado para exibir objetos recebidos de relacionamento.\r\n Search = 'search',\r\n Select = 'select',\r\n Slide = 'slide',\r\n Text = 'text',\t\t\t\t\t\t\t\t\t\t// Texto em unica linha.\r\n Textarea = 'textarea',\t\t\t\t\t\t// Texto multilinha.\r\n Time = 'time',\t\t\t\t\t\t\t\t\t\t// Campo de hora (HH:MM)\r\n Upload = 'upload', \t\t\t\t\t\t\t\t// (Padrão 1 Imagem)(Padrao Accept: \".png,.svg,.jpg,.jpeg,.gif\")\r\n\r\n}\r\n\r\n/************************************************\\\\\r\n// Propriedades para Campos\t\t\t\t\t\t\t\t \\\\\r\n//*************************************************/\r\n\r\nexport interface IFieldComponent<T> {\r\n tipo: IField,\t\t\t\t\t\t\t\t\t\t\t// [OBRIGATORIO] Tipo do campo.\r\n prop: keyof T & string,\t\t\t\t\t\t// [OBRIGATORIO] nome da propriedade a ser enviada e do controle do formulário.\r\n value?: any,\t\t\t\t\t\t\t\t\t\t\t// Valor do campo.\r\n titulo?: string,\t\t\t\t\t\t\t\t\t// nome do campo a ser exibido ao usuário (Display)\r\n area?: string,\t\t\t\t\t\t\t\t\t\t// Posição gridArea. Doc: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area\r\n icone?: string,\t\t\t\t\t\t\t\t\t\t// Ícone a ser exibido no campo.\r\n placeholder?: string,\t\t\t\t\t\t\t// Texto exibido que não representam o valor.\r\n style?: string,\t\t\t\t\t\t\t\t\t\t// Estilos CSS a serem aplicados no campo.\r\n classe?: string,\t\t\t\t\t\t\t\t\t// Classes CSS a serem aplicadas no campo.\r\n hideLabel?: boolean,\t\t\t\t\t\t\t// Controla se o campo deve ocultar o label (titulo).\r\n filter?: boolean,\t\t\t\t\t\t\t\t\t// Padrão true. Indica se o campo será usado em filtros (em grids, por exemplo).\r\n autofocus?: boolean,\t\t\t\t\t\t\t// Define se o campo deve receber foco automaticamente ao ser exibido.\r\n regras?: IRegra[],\t\t\t\t\t\t\t\t// Regras de validação do campo.\t\r\n maxl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho máximo do valor.\r\n minl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho mínimo do valor.\r\n errors?: (string | undefined)[],\t// Lista de mensagens de erro para o campo.\r\n dica?: string,\t\t\t\t\t\t\t\t\t\t// Texto de ajuda para o campo.\r\n onInput?: (form: Formulario) => any;// Executada a cada alteração simples no campo.\r\n onChange?: (form: Formulario) => any;// Executada ao fim de uma alteração no campo.\r\n\r\n // Indicadores\r\n readonly?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza a edição.\r\n need?: boolean,\t\t\t\t\t\t\t\t\t\t// Valida se o campo está preenchido.\r\n touched?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo foi tocado/editado.\r\n disabled?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza todos os controles.\r\n invalid?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo está inválido.\r\n empty?: boolean,\t\t\t\t\t\t\t\t\t// Indica se o campo está vazio.\r\n pending?: boolean,\t\t\t\t\t\t\t\t// Indica que o campo está em estado de espera (loading).\r\n\r\n // Configurações específicas por tipo de campo\r\n tema?: ITiposTema,\t\t\t\t\t\t\t\t// Tema do botão (para button, etc).\r\n tituloClicavel?: string,\t\t\t\t\t// Título do botão (para button, slide, etc).\r\n textoAtivo?: string,\t\t\t\t\t\t\t// Texto quando ativo (para slide).\r\n textoInativo?: string,\t\t\t\t\t\t// Texto quando inativo (para slide).\r\n tituloChave?: string,\t\t\t\t\t\t // Titulo para a chave (para multikv).\r\n tituloValor?: string,\t\t\t\t\t\t // Titulo para o valor (para multikv).\r\n rows?: number,\t\t\t\t\t\t\t\t\t\t// Número de linhas (para textarea, select).\r\n cols?: number,\t\t\t\t\t\t\t\t\t\t// Número de colunas (para textarea).\r\n mask?: string | ((valor?: string) => string),\t// Máscara a ser aplicada ao valor.\r\n options?: WritableSignal<IKV[]>// Opções para campos que possuem seleção (select, radio, etc).\r\n multiple?: boolean,\t\t\t\t\t\t\t\t// Permitir múltiplas seleções (para select, upload, etc).\r\n canUnselect?: boolean,\t\t\t\t\t\t// Permitir desselecionar a opção selecionada (para select, radio, etc).\r\n componente?: Type<any>;\t\t\t\t\t\t// Componente Angular personalizado para renderizar este campo. (para custom)\r\n tipoBotao?: ITipoBotao;\t\t\t\t\t\t// Tipo do botão (para button).\r\n onClick?: (form: Formulario) => any;// Função chamada quando o campo é clicado (para button, etc).\r\n afterRefill?: (form: Formulario, options: IKV[] | null) => any;// Função chamada após o refill do campo (para select, autocomplete, etc).\r\n onMatchOption?: (form: Formulario, option?: IKV_ext) => any;\t// Função chamada quando uma opção é selecionada (para autocomplete, select, etc).\r\n onMatchOptionOnInit?: boolean,\t\t// Indica se deve disparar onMatchOption ao iniciar o componente.\r\n onComplete?: (form: Formulario, value: any) => any\t// Função chamada quando o campo é completado (para multifactor, etc).\r\n showHeader?: boolean,\t\t\t\t\t\t\t// Define se o campo deve exibir o cabeçalho (header) com o título e ícone.\r\n showToolbar?: boolean,\t\t\t\t\t\t// Define se o campo deve exibir a toolbar de formatação (para editor).\r\n accept?: string,\t\t\t\t\t\t\t\t\t// Define os tipos de arquivos aceitos (para upload, dropzone, etc). \".png,.svg,.jpg,.jpeg,.gif\"\r\n refill?: (form: Formulario) => Promise<IKV[] | null>;\t// Função que retorna os dados para popular o campo (para select, autocomplete, etc).\r\n mapear?: (r: any) => Promise<IKV[] | null>;\t// Função que mapeia o valor do campo para o formato esperado na submissão do formulário.\r\n subFields?: IFields<any>; \t\t\t\t// Define os sub-campos (para multiobject).\r\n isCollapsed?: () => boolean;\t\t\t// Indica se o campo deve colapsar.\r\n getDisplay?: (value: any, form?: Formulario) => any;\t// Função para obter o valor a ser exibido no campo, normalmente no campo Referencia.\r\n textEmpty?: string;\t\t\t\t\t\t\t\t// Texto a ser exibido quando o campo estiver vazio (para select).\r\n}\r\n\r\n/************************************************\\\\\r\n// FASES\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\r\n//*************************************************/\r\n\r\nexport interface IFases<T> {\r\n fases: IFaseCampos<T>[],\r\n isLinear?: boolean,\r\n orientation?: 'horizontal' | 'vertical',\r\n}\r\n\r\nexport interface IFaseCampos<T> {\r\n nome: string,\r\n icone?: string | null,\r\n completed?: boolean,\r\n optional?: boolean,\r\n hasErrors?: boolean,\r\n errorMessage?: string,\r\n campos: (IFaseCamposAgrupados<T> | keyof T & string)[],\r\n disabled?: boolean,\r\n gridMin?: string,\t// Valor padrão para grid-template-columns mínimo das fases. Ex: \"150px\"\r\n gridMax?: string,\t// Valor padrão para grid-template-columns máximo das fases. Ex: \"1fr\"\r\n}\r\n\r\nexport interface IFaseCamposAgrupados<T> {\r\n campos: (keyof T & string)[],\r\n titulo?: string,\r\n area?: string,\r\n tituloArea?: string,\r\n}\r\n\r\n/************************************************\\\\\r\n// CAMPOS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t\t \\\\\r\n//*************************************************/\r\n\r\nexport class CampoDe {\r\n\r\n static AutoComplete<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.AutoComplete,\r\n prop,\r\n titulo,\r\n ...config,\r\n };\r\n }\r\n\r\n static Button<T>(prop: any, tituloClicavel: string, click: (form: Formulario) => void, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Button,\r\n prop,\r\n tituloClicavel,\r\n onClick: click,\r\n ...config,\r\n }\r\n }\r\n\r\n static Checkbox<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Checkbox,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Color<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Color,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Cpf<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Text,\r\n prop,\r\n titulo,\r\n mask: LibUtil.formats.cpf.mask,\r\n placeholder: \"000.000.000-00\",\r\n regras: [Regra.CPF()],\r\n ...config,\r\n }\r\n }\r\n\r\n static Cnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Text,\r\n prop,\r\n titulo,\r\n mask: LibUtil.formats.cnpj.mask,\r\n placeholder: \"00.000.000/0000-00\",\r\n regras: [Regra.CNPJ()],\r\n ...config,\r\n }\r\n }\r\n\r\n static CpfCnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Text,\r\n prop,\r\n titulo,\r\n mask: LibUtil.formats.cpf_cnpj.mask,\r\n placeholder: \"000.000.000-00 ou 00.000.000/0000-00\",\r\n maxl: 18,\r\n // regras: [Regra.CPF_CNPJ()],\r\n ...config,\r\n }\r\n }\r\n\r\n static Custom<T>(prop: keyof T & string, componente: Type<any>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Custom,\r\n prop,\r\n titulo,\r\n componente,\r\n ...config,\r\n }\r\n }\r\n\r\n static Date<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Date,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static DateTime<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.DateTime,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Display<T>(prop: any, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Display,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Editor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Textarea,\r\n prop,\r\n titulo,\r\n area: 'auto / auto / span 2 / auto',\r\n ...config,\r\n }\r\n }\r\n\r\n static Email<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Email,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Hidden<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Hidden,\r\n need: false,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Icon<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Icon,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static MultiFactor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.MultiFactor,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static MultiKV<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.MultiKV,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static MultiText<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.MultiText,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Number<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Number,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Password<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Password,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Referencia<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Referencia,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Search<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Search,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Select<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Select,\r\n prop,\r\n titulo,\r\n ...config,\r\n };\r\n }\r\n\r\n static Slide<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Slide,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Upload<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Upload,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Text<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Text,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static Textarea<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Textarea,\r\n prop,\r\n titulo,\r\n rows: 15,\r\n cols: 30,\r\n ...config,\r\n }\r\n }\r\n\r\n static Time<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Time,\r\n prop,\r\n titulo,\r\n ...config,\r\n }\r\n }\r\n\r\n static UploadImage<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\r\n return {\r\n tipo: IField.Upload,\r\n prop,\r\n titulo,\r\n accept: \".png,.svg,.jpg,.jpeg,.gif\",\r\n ...config,\r\n }\r\n }\r\n\r\n}\r\n\r\n/************************************************\\\\\r\n// FILTROS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t \\\\\r\n//*************************************************/\r\n\r\nexport class FiltroDe {\r\n\r\n static Boolean<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\r\n return {\r\n ...CampoDe.Select<T>((prop as any), titulo, {\r\n options: signal([{ k: \"\", v: \"Todos\" }, { k: \"true\", v: \"Sim\" }, { k: \"false\", v: \"Não\" }])\r\n }),\r\n ...config,\r\n };\r\n };\r\n\r\n static Hidden<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\r\n return CampoDe.Hidden<T>((prop as any), titulo, config);\r\n };\r\n\r\n /** Usar este FiltroTexto quando não for Hidden, Select ou Booleano */\r\n static Text<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\r\n return CampoDe.Text<T>((prop as any), titulo, config);\r\n };\r\n\r\n static Select<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\r\n return {\r\n ...CampoDe.Select<T>((prop as any), titulo),\r\n ...config,\r\n };\r\n };\r\n\r\n static Date<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\r\n return {\r\n ...CampoDe.Date<T>((prop as any), titulo),\r\n ...config,\r\n };\r\n };\r\n\r\n}\r\n\r\n/************************************************\\\\\r\n// VALIDAÇÃO de campos\t\t\t\t\t\t\t\t\t\t \\\\\r\n//*************************************************/\r\n\r\nexport enum IRegraTipo {\r\n ApenasNumeros = \"apenasNumeros\",\r\n}\r\n\r\nexport interface IRegra {\r\n nome: string;\r\n mensagem: string;\r\n validar: (value: any) => boolean | Promise<boolean>;\r\n}\r\n\r\nexport class Regra {\r\n\r\n static ApenasNumeros(): IRegra {\r\n return {\r\n nome: IRegraTipo.ApenasNumeros,\r\n mensagem: Regra.mensagens.apenasNumeros,\r\n validar: (value: any): boolean => {\r\n let s = value.replace(/(?![0-9])./g, \"\");\r\n return value.length === s.length;\r\n }\r\n }\r\n }\r\n\r\n static ApenasLista(): IRegra {\r\n return {\r\n nome: \"apenasLista\",\r\n mensagem: Regra.mensagens.apenasLista,\r\n validar: (value: any): boolean => {\r\n return Array.isArray(value);\r\n }\r\n }\r\n }\r\n\r\n static ApenasListaDeObjetos(): IRegra {\r\n return {\r\n nome: \"apenasListaDeObjetos\",\r\n mensagem: Regra.mensagens.apenasListaDeObjetos,\r\n validar: (value: any): boolean => {\r\n if (!Array.isArray(value)) return false;\r\n for (let item of value) {\r\n if (typeof item !== 'object' || item === null) return false;\r\n }\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n static EntreValores(min: number, max: number): IRegra {\r\n return {\r\n nome: \"apenasEntre\",\r\n mensagem: Regra.mensagens.apenasEntre(min, max),\r\n validar: (value: any): boolean => {\r\n if (typeof value !== 'number') return false;\r\n return value >= min && value <= max;\r\n }\r\n }\r\n }\r\n\r\n static TamanhoMinimo(qntCaracteres: number): IRegra {\r\n return {\r\n nome: \"temSizeMin\",\r\n mensagem: Regra.mensagens.temSizeMin,\r\n validar: (value: any): boolean => {\r\n if (!value) return false;\r\n return value.length >= qntCaracteres;\r\n }\r\n }\r\n }\r\n\r\n static TamanhoMaximo(qntCaracteres: number): IRegra {\r\n return {\r\n nome: \"temSizeMax\",\r\n mensagem: Regra.mensagens.temSizeMax,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n return value.length <= qntCaracteres;\r\n }\r\n }\r\n }\r\n\r\n static ApenasLetras(): IRegra {\r\n return {\r\n nome: \"temApenasLetras\",\r\n mensagem: Regra.mensagens.temApenasLetras,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n let s = value.replace(/(?![A-Za-z])./g, \"\");\r\n return value.length === s.length;\r\n }\r\n }\r\n }\r\n\r\n static ApenasNumerosELetras(): IRegra {\r\n return {\r\n nome: \"temApenasNumerosELetras\",\r\n mensagem: Regra.mensagens.temApenasNumerosELetras,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n let s = value.replace(/(?![0-9A-Za-z])./g, \"\");\r\n return value.length === s.length;\r\n }\r\n }\r\n }\r\n\r\n static TemMaiuscula(): IRegra {\r\n return {\r\n nome: \"temMaiuscula\",\r\n mensagem: Regra.mensagens.temMaiuscula,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n return /[A-Z]/.test(value);\r\n }\r\n }\r\n }\r\n\r\n static TemMinuscula(): IRegra {\r\n return {\r\n nome: \"temMinuscula\",\r\n mensagem: Regra.mensagens.temMinuscula,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n return /[a-z]/.test(value);\r\n }\r\n }\r\n }\r\n\r\n static TemNumero(): IRegra {\r\n return {\r\n nome: \"temNumero\",\r\n mensagem: Regra.mensagens.temNumero,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n return /[0-9]/.test(value);\r\n }\r\n }\r\n }\r\n\r\n static TemEspecial(): IRegra {\r\n return {\r\n nome: \"temEspecial\",\r\n mensagem: Regra.mensagens.temEspecial,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n return /(?![0-9a-zA-Z])./.test(value);\r\n }\r\n }\r\n }\r\n\r\n static Email(): IRegra {\r\n return {\r\n nome: \"isEmail\",\r\n mensagem: Regra.mensagens.isEmail,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n return LibUtil.formats.email.validate(value);\r\n }\r\n }\r\n }\r\n\r\n static Same(compareValue: any, mensagem?: string): IRegra {\r\n return {\r\n nome: \"isSame\",\r\n mensagem: mensagem || Regra.mensagens.isSame,\r\n validar: (value: any): boolean => {\r\n return value === compareValue;\r\n }\r\n }\r\n }\r\n\r\n static SenhaForte(): IRegra {\r\n return {\r\n nome: \"senhaForte\",\r\n mensagem: Regra.mensagens.senhaForte,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n const hasNumber = /[0-9]/.test(value);\r\n const hasMaiuscula = /[A-Z]/.test(value);\r\n const hasMinuscula = /[a-z]/.test(value);\r\n const hasEspecial = /(?![0-9a-zA-Z])./.test(value);\r\n\r\n return hasNumber && hasMaiuscula && hasMinuscula && hasEspecial;\r\n }\r\n }\r\n }\r\n\r\n static Unique(asyncValidate: (value: any) => Promise<boolean>): IRegra {\r\n return {\r\n nome: \"isUnique\",\r\n mensagem: Regra.mensagens.isUnique,\r\n validar: async (value: any): Promise<boolean> => {\r\n return await asyncValidate(value);\r\n }\r\n }\r\n }\r\n\r\n static CepBR(): IRegra {\r\n return {\r\n nome: \"isCepBR\",\r\n mensagem: Regra.mensagens.isCepBR,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n return /^([0-9]{2}[\\.]?[0-9]{3}[-]?[0-9]{3})$/.test(value);\r\n }\r\n }\r\n }\r\n\r\n static CPF(): IRegra {\r\n return {\r\n nome: \"isCPF\",\r\n mensagem: Regra.mensagens.isCPF,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n let c = 0;\r\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\r\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\r\n let cpf = LibUtil.apenasNumeros(value);\r\n if (cpf.length != 11) { return false; }\r\n let temp = cpf.slice(0, 9);\r\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\r\n let r = c % 11;\r\n (r < 2) ? r = 0 : r = 11 - r;\r\n temp += r.toString();\r\n c = 0;\r\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\r\n r = c % 11;\r\n (r < 2) ? r = 0 : r = 11 - r;\r\n return cpf.charAt(10) == r.toString();\r\n }\r\n }\r\n }\r\n\r\n static CNPJ(): IRegra {\r\n return {\r\n nome: \"isCNPJ\",\r\n mensagem: Regra.mensagens.isCNPJ,\r\n validar: (value: any): boolean => {\r\n if (!value) return true;\r\n let digitCnpj = (cnpj: string) => {\r\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\r\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\r\n if (!cnpj) { return false; }\r\n cnpj = LibUtil.apenasNumeros(cnpj);\r\n if (cnpj.length != 14) { return false; }\r\n let temp = cnpj.slice(0, 12);\r\n let c = 0;\r\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\r\n let r = (c % 11);\r\n (r < 2) ? r = 0 : r = 11 - r;\r\n temp += r.toString();\r\n c = 0;\r\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\r\n r = (c % 11);\r\n (r < 2) ? r = 0 : r = 11 - r;\r\n return cnpj.charAt(13) == r.toString();\r\n }\r\n return digitCnpj(value);\r\n }\r\n }\r\n }\r\n\r\n static ClickRequired(): IRegra {\r\n return {\r\n nome: \"clickRequired\",\r\n mensagem: Regra.mensagens.clickRequired,\r\n validar: (value: any): boolean => {\r\n return value === true;\r\n }\r\n }\r\n }\r\n\r\n static Obrigatorio(): IRegra {\r\n return {\r\n nome: \"obrigatorio\",\r\n mensagem: Regra.mensagens.obrigatorio,\r\n validar: (value: any): boolean => {\r\n if (value === null || value === undefined) return false;\r\n if (typeof value === 'string' && value.trim() === '') return false;\r\n if (Array.isArray(value) && value.length === 0) return false;\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n static mensagens = {\r\n obrigatorio: \"Campo Obrigatório.\",\r\n apenasNumeros: \"Apenas Números.\",\r\n apenasLista: \"O valor deve ser uma lista.\",\r\n apenasListaDeObjetos: \"O valor deve ser uma lista de objetos.\",\r\n apenasEntre: (min: number, max: number) => `O valor deve estar entre ${min} e ${max}.`,\r\n temSizeMin: \"Tamanho Mínimo.\",\r\n temSizeMax: \"Tamanho Excedido.\",\r\n temApenasNumeros: \"Apenas Números.\",\r\n temApenasLetras: \"Apenas Letras.\",\r\n temApenasNumerosELetras: \"Apenas Números e Letras.\",\r\n temMaiuscula: \"Faltou maiúscula.\",\r\n temMinuscula: \"Faltou minúscula.\",\r\n temNumero: \"Faltou numero.\",\r\n temEspecial: \"Faltou caracter Especial.\",\r\n isEmail: \"Email inválido.\",\r\n isSame: \"Valores diferentes.\",\r\n senhaForte: \"Senha Fraca.\",\r\n isUnique: \"Já está em uso.\",\r\n isCepBR: \"CEP inválido no Brasil.\",\r\n isCPF: \"CPF inválido.\",\r\n isCNPJ: \"CNPJ inválido.\",\r\n clickRequired: \"Clique Necessário.\",\r\n }\r\n\r\n\r\n}\r\n","import { Component, computed, effect, input, model, OnInit, output, signal } from '@angular/core';\r\nimport { Formulario, IFaseCamposAgrupados, IFases, IFieldComponent, IFields } from '../../Formulario/Formulario';\r\nimport { LOG } from '../../../util/util';\r\n\r\ninterface IFaseCampoGrupo {\r\n tipo: 'campo' | 'grupo',\r\n faseIndex: number,\r\n nome?: string,\r\n campo?: IFieldComponent<any>,\r\n grupo?: IFaseCamposAgrupados<any>,\r\n}\r\n\r\n@Component({\r\n selector: 'fields-base-fields-values',\r\n template: '',\r\n})\r\nexport abstract class BaseFieldsValues<T> implements OnInit {\r\n\r\n abstract onSave(): Promise<any>;\r\n\r\n form!: Formulario;\r\n\r\n values = model<Partial<T>>();\r\n campos = input.required<IFields<T>>();\r\n fases = input<IFases<T>>();\r\n\r\n gmin = input<string | undefined>();\r\n gmax = input<string | undefined>();\r\n showFormControls = input<boolean>(false);\r\n camposNaoEncontrados = new Set<string>();\r\n gruposNaoEncontrados = new Set<string>();\r\n\r\n formulario = output<Formulario>();\r\n\r\n isFaseado = computed(() => {\r\n let fases = this.fases()?.fases;\r\n return fases !== undefined && fases.length > 0;\r\n });\r\n isDisabledAction = signal<boolean>(true);\r\n isLoadingActive = signal<boolean>(false);\r\n faseIndex = signal<number>(0);\r\n\r\n listaFase = computed(() => {\r\n return this.fases()?.fases ?? [];\r\n });\r\n faseGrupo = computed<IFaseCampoGrupo[]>(() => {\r\n let listaFase = this.listaFase();\r\n if (!listaFase || listaFase.length === 0) {\r\n return [];\r\n }\r\n let resultado: IFaseCampoGrupo[] = [];\r\n for (let i = 0; i < listaFase.length; i++) {\r\n for (let campoOrGrupo of listaFase[i].campos) {\r\n if (typeof campoOrGrupo === 'string') {\r\n let campo = this.form.campos()[campoOrGrupo];\r\n if (!campo) {\r\n this.camposNaoEncontrados.add(campoOrGrupo);\r\n }\r\n resultado = [...resultado, { tipo: 'campo', nome: campoOrGrupo, campo: campo, grupo: undefined, faseIndex: i }];\r\n } else {\r\n if (campoOrGrupo.area === undefined) {\r\n // Para cada campo deste grupo encontrado em this.form.campos(), deve retornar a area de algum dos campos ou undefined\r\n let areaEncontrada = undefined;\r\n for (let campoNome of campoOrGrupo.campos) {\r\n let campo = this.form.campos()[campoNome];\r\n if (campo && campo.area) {\r\n areaEncontrada = campo.area;\r\n break;\r\n }\r\n }\r\n campoOrGrupo.area = areaEncontrada;\r\n }\r\n if (!campoOrGrupo) {\r\n this.gruposNaoEncontrados.add(campoOrGrupo);\r\n }\r\n resultado = [...resultado, { tipo: 'grupo', campo: undefined, grupo: campoOrGrupo, faseIndex: i }];\r\n }\r\n }\r\n }\r\n return resultado;\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n let faseIndex = this.faseIndex();\r\n this.updateDisabledAction();\r\n });\r\n }\r\n ngOnInit(): void {\r\n this.form = new Formulario(this.campos(), this.values(), this);\r\n this.formulario.emit(this.form);\r\n\r\n // Verifica campos e grupos não encontrados após um pequeno delay para garantir que todos os cálculos foram feitos\r\n setTimeout(() => {\r\n if (this.camposNaoEncontrados.size > 0) LOG(1, \"❌ Campos não encontrados nas fases:\", Array.from(this.camposNaoEncontrados));\r\n if (this.gruposNaoEncontrados.size > 0) LOG(1, \"❌ Grupos não encontrados nas fases:\", Array.from(this.gruposNaoEncontrados));\r\n }, 1)\r\n }\r\n\r\n updateDisabledAction(forcedDisabled: boolean = false) {\r\n if (forcedDisabled) return this.isDisabledAction.set(true);\r\n\r\n let isFaseado = this.isFaseado();\r\n if (!isFaseado) return this.isDisabledAction.set(false);\r\n\r\n let isLinear = this.fases()?.isLinear ?? false;\r\n if (!isLinear) return this.isDisabledAction.set(false);\r\n\r\n let isUltimaFase = this.faseIndex() >= (this.listaFase().length - 1);\r\n this.isDisabledAction.set(!isUltimaFase);\r\n }\r\n}\r\n","import { Component, computed, HostBinding, input, OnDestroy, OnInit, output, Signal } from '@angular/core';\r\nimport { LibUtil, LOG } from '../../../util/util';\r\nimport { Formulario, IFieldComponent, IFields, Regra } from '../../Formulario/Formulario';\r\n\r\n@Component({ selector: 'app-BaseFieldsForm', template: '' })\r\nexport class BaseFieldsForm implements OnInit, OnDestroy {\r\n\r\n readonly form = input.required<Formulario>()\r\n readonly name = input.required<keyof IFields<any>>();\r\n change = output<string>();\r\n\r\n readonly value = computed(() => this.form().values()[this.name()]);\r\n readonly campo: Signal<IFieldComponent<any> | undefined> = computed(() => this.form().campos()[this.name()]);\r\n\r\n ngOnInit(): void {\r\n this.form().registredFields.update(old => ({ ...old, [this.name()]: this }));\r\n }\r\n ngOnDestroy(): void {\r\n this.form().registredFields.update(old => {\r\n const updated = { ...old };\r\n delete updated[this.name()];\r\n return updated;\r\n });\r\n }\r\n\r\n updateCampo(newCampoData: Partial<IFieldComponent<any>>) {\r\n this.form().updateCampo(this.name(), newCampoData);\r\n }\r\n\r\n updateValue(newValue: any, touch: boolean = true) {\r\n if (touch) this.tocarCampo();\r\n this.form().updateValues({ [this.name()]: newValue })\r\n }\r\n\r\n tocarCampo() {\r\n this.updateCampo({ touched: true });\r\n }\r\n\r\n onClickLabel() {\r\n LOG(2, \"Valor:\", this.value());\r\n LOG(2, \"Campo: \", this.campo());\r\n LOG(2, \"ClassOf: \", LibUtil.classof(this.value()));\r\n LOG(2, \"Opcoes: \", this.campo()?.options?.());\r\n }\r\n\r\n @HostBinding('style.grid-area')\r\n get gridArea() {\r\n return this.campo()?.area ?? 'auto';\r\n }\r\n\r\n onClickEmit() {\r\n this.campo()?.onClick?.(this.form());\r\n }\r\n\r\n // Executa o onChange com delay para utilizar o valor após ter executado o effect do empty.\r\n async onChangeEmit() {\r\n setTimeout(async () => {\r\n await this.executarValidacoes();\r\n this.campo()?.onChange?.(this.form());\r\n this.change.emit(this.value());\r\n }, 1)\r\n }\r\n\r\n async executarValidacoes() {\r\n // Padrão para todos os campos\r\n this.validarRequired();\r\n // Validações específicas\r\n await this.validarRegrasDoCampo();\r\n\r\n }\r\n\r\n validarRequired() {\r\n let isEmpty = this.campo()?.empty;\r\n if (this.campo()?.need && isEmpty) {\r\n LOG(1, `Campo '${this.name()}' é obrigatório e está vazio.`, this.campo());\r\n this.adicionaErro(Regra.mensagens.obrigatorio);\r\n } else {\r\n this.removerErro(Regra.mensagens.obrigatorio);\r\n }\r\n }\r\n\r\n async validarRegrasDoCampo() {\r\n let regrasDefinidas = this.campo()?.regras ?? [];\r\n if (!regrasDefinidas.length) return;\r\n for (const regra of regrasDefinidas) {\r\n if (regra) {\r\n let isValid = await regra.validar(this.value());\r\n if (!isValid) {\r\n this.adicionaErro(regra.mensagem);\r\n } else {\r\n this.removerErro(regra.mensagem);\r\n }\r\n } else {\r\n console.warn(`Regra de validação não encontrada para o campo \"${this.name()}\".`);\r\n }\r\n }\r\n }\r\n\r\n adicionaErro(erroNovo: string) {\r\n let errosAtuais = this.campo()?.errors ?? [];\r\n if (!errosAtuais.includes(erroNovo)) {\r\n this.updateCampo({ errors: [...errosAtuais, erroNovo] });\r\n }\r\n }\r\n\r\n removerErro(erroRemover: string) {\r\n let errosAtuais = this.campo()?.errors ?? [];\r\n if (errosAtuais.includes(erroRemover)) {\r\n this.updateCampo({ errors: errosAtuais.filter(e => e !== erroRemover) });\r\n }\r\n }\r\n\r\n}\r\n","import { Component, computed, effect, ElementRef, input, model, OnInit, output, signal, viewChild } from '@angular/core';\r\nimport { ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\r\n\r\n@Component({\r\n selector: 'ui-button',\r\n templateUrl: './ui-button.html',\r\n styleUrl: './ui-button.css',\r\n})\r\nexport class UiButton {\r\n\r\n botao = viewChild('botao', { read: ElementRef });\r\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\r\n ripple = viewChild('ripple', { read: ElementRef });\r\n\r\n icone = model<string | undefined | null>(null);\r\n iconeAntes = model<boolean>(true);\r\n iconeDepois = model<boolean>(false);\r\n iconeCategory = model<string>('fa fa-chevron-right');\r\n\r\n clicked = output<PointerEvent>();\r\n\r\n disabled = input<boolean>();\r\n eventPropagation = input<boolean>(false);\r\n radiusTabFormat = input<boolean>(false);\r\n tabindex = input<number | string>();\r\n tipo = input<ITipoBotao | undefined>(\"fill\");\r\n tema = model<ITiposTema | undefined>(\"\");\r\n classes = input<string>(\"\");\r\n ativo = input<boolean>(false);\r\n\r\n isCategory = computed(() => this.tipo() === 'menu-item-category' || this.tipo() === 'sidebar-item-category');\r\n buttonClasses = computed(() => {\r\n return `btnr ${this.tipo() || 'fill'} ${this.classes()}`;\r\n });\r\n\r\n corFundo = signal<string | undefined>(undefined);\r\n corFrente = signal<string | undefined>(undefined);\r\n\r\n constructor() {\r\n effect(() => {\r\n let tema = this.tema();\r\n switch (tema) {\r\n case \"primary\":\r\n this.corFundo.set(`var(--sys-primary)`);\r\n this.corFrente.set(`var(--sys-on-primary)`);\r\n break;\r\n case \"secondary\":\r\n this.corFundo.set(`var(--sys-secondary)`);\r\n this.corFrente.set(`var(--sys-on-secondary)`);\r\n break;\r\n case \"high\":\r\n this.corFundo.set(`var(--sys-high)`);\r\n this.corFrente.set(`var(--sys-on-high)`);\r\n break;\r\n case \"success\":\r\n this.corFundo.set(`var(--sys-success)`);\r\n this.corFrente.set(`var(--sys-on-success)`);\r\n break;\r\n case \"warning\":\r\n this.corFundo.set(`var(--sys-warning)`);\r\n this.corFrente.set(`var(--sys-on-warning)`);\r\n break;\r\n case \"error\":\r\n this.corFundo.set(`var(--sys-error)`);\r\n this.corFrente.set(`var(--sys-on-error)`);\r\n break;\r\n case \"info\":\r\n this.corFundo.set(`var(--sys-info)`);\r\n this.corFrente.set(`var(--sys-on-info)`);\r\n break;\r\n case \"white\":\r\n this.corFundo.set(`var(--sys-white)`);\r\n this.corFrente.set(`var(--sys-on-white)`);\r\n break;\r\n case \"black\":\r\n this.corFundo.set(`var(--sys-black)`);\r\n this.corFrente.set(`var(--sys-on-black)`);\r\n break;\r\n case \"card\":\r\n this.corFundo.set(`var(--sys-card)`);\r\n this.corFrente.set(`var(--sys-on-card)`);\r\n break;\r\n case \"\": // Sem Tema \r\n default: // Tema Desconhecido\r\n this.corFundo.set(undefined);\r\n this.corFrente.set(undefined);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n\r\n onKeyPressed(ev: Event) {\r\n this.onClickExpanded(ev as any);\r\n }\r\n\r\n onClickExpanded(ev: PointerEvent) {\r\n if (this.disabled()) {\r\n ev.preventDefault();\r\n if (this.eventPropagation()) {\r\n ev.stopPropagation();\r\n }\r\n return;\r\n }\r\n this.botao()?.nativeElement.focus();\r\n if (ev instanceof PointerEvent) {\r\n this.createRipple(ev);\r\n }\r\n this.clicked.emit(ev);\r\n if (this.eventPropagation()) {\r\n ev.stopPropagation();\r\n }\r\n }\r\n\r\n createRipple(e: PointerEvent) {\r\n const rippleEffect = e.currentTarget ?? this.rippleEffect()?.nativeElement;\r\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\r\n const rect = rippleEffect.getBoundingClientRect();\r\n // Calcula a posição do clique relativa ao botão\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n // Define o tamanho do ripple (maior dimensão do botão * 2)\r\n const size = Math.max(rect.width, rect.height) * 2;\r\n ripple.style.width = ripple.style.height = size + 'px';\r\n ripple.style.left = (x - size / 2) + 'px';\r\n ripple.style.top = (y - size / 2) + 'px';\r\n ripple.classList.add('ripple');\r\n rippleEffect.appendChild(ripple);\r\n ripple.addEventListener('animationend', () => {\r\n ripple.remove();\r\n });\r\n }\r\n}\r\n","<button #botao type=\"button\" [class]=\"buttonClasses()\" [style.--btnr-corFundo]=\"corFundo()\"\r\n\t[style.--btnr-corFrente]=\"corFrente()\" [disabled]=\"disabled()\" [tabIndex]=\"tabindex()\"\r\n\t[class.radiusTabFormat]=\"radiusTabFormat()\" [class.disabled]=\"disabled()\" [class.ativo]=\"ativo()\"\r\n\t(keyup.Enter)=\"onKeyPressed($event)\" [class.category]=\"isCategory()\">\r\n\t@if(icone() && iconeAntes()){ <div class=\"icone iconeAntes\"><i [class]=\"icone()\"></i></div> }\r\n\t<ng-content />\r\n\t@if(icone() && iconeDepois()){ <div class=\"icone iconeDepois\"><i [class]=\"icone()\"></i></div> }\r\n\t@if(isCategory()){ <div class=\"icone iconeCategory\"><i [class]=\"iconeCategory()\"></i></div> }\r\n\t<span #rippleEffect class=\"expandedClick\" (click)=\"onClickExpanded($event)\">\r\n\t\t<span #ripple class=\"ripple\"></span>\r\n\t</span>\r\n</button>","import { Component, computed, input } from '@angular/core';\r\nimport { LibUtil } from '../../util/util';\r\n\r\n@Component({\r\n selector: 'ui-chip',\r\n templateUrl: './ui-chip.html',\r\n styleUrl: './ui-chip.css',\r\n})\r\nexport class UiChip {\r\n\r\n // HSL\r\n cor = input<number | null | undefined>();\r\n\r\n hue = computed<number | null>(() => {\r\n let hue = this.cor();\r\n if (LibUtil.classof(hue) == 'number') {\r\n if (hue! < 0) { return 0; };\r\n if (hue! > 359) { return 359; };\r\n return hue!;\r\n }\r\n return null;\r\n });\r\n\r\n\r\n}\r\n","<span class=\"baseChip\" [style.--ChipHue]=\"hue() ?? 'var(--sys-hue-color1)'\">\r\n\t<ng-content></ng-content>\r\n</span>","import { Component, ElementRef, input, model, output, viewChild } from '@angular/core';\r\nimport { IDropOutput, IDropZoneEvent, IFileMetadata } from '../../interfaces/interfaces';\r\nimport { LibUtil, LOG } from '../../util/util';\r\n\r\n@Component({\r\n selector: 'ui-drop-zone',\r\n templateUrl: './ui-drop-zone.html',\r\n styleUrl: './ui-drop-zone.css',\r\n})\r\nexport class UiDropZone {\r\n\r\n value = model<IDropOutput>();\r\n disabled = input<boolean>();\r\n sobrepor = input<boolean>();\r\n clicked = output<Event>();\r\n changed = output<IDropOutput>();\r\n\r\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\r\n ripple = viewChild('ripple', { read: ElementRef });\r\n // dropzonearea = viewChild('dropzonearea', { read: ElementRef })\r\n isDragging: boolean = false;\r\n\r\n async onDropZone(tipo: IDropZoneEvent, ev: Event) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (this.disabled()) return;\r\n\r\n let target = ((ev as Event).target as HTMLDivElement);\r\n if (tipo == \"dragenter\" && !this.disabled()) this.isDragging = true;\r\n if (tipo == \"dragleave\" && !this.disabled()) this.isDragging = false;\r\n if (tipo == \"click\" && target && target.classList?.contains(\"dropzone\")) {\r\n this.clicked.emit(ev);\r\n }\r\n }\r\n\r\n async onDrop(ev: DragEvent) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n this.isDragging = false;\r\n if (this.disabled()) return;\r\n\r\n const dataTransfer = ev.dataTransfer;\r\n if (!dataTransfer) {\r\n this.createRipple(ev as DragEvent, \"red\");\r\n return;\r\n }\r\n this.createRipple(ev as DragEvent);\r\n\r\n const output: IDropOutput = {\r\n timestamp: new Date().toISOString(),\r\n types: (dataTransfer.types as any),\r\n tipo: \"unknown\",\r\n };\r\n\r\n // 1. Verificar se há arquivos\r\n if (dataTransfer.files && dataTransfer.files.length > 0) {\r\n\r\n output.data = ([] as IFileMetadata[]);\r\n output.tipo = \"file\";\r\n\r\n for await (let file of dataTransfer.files) {\r\n let lastIndexOf = file.name.lastIndexOf(\".\");\r\n if (lastIndexOf < 0) {\r\n LOG(1, `❌ O arquivo ${file.name} está sem uma extensão.`);\r\n continue;\r\n }\r\n let base64: string | null = await LibUtil.fileReader(file);\r\n if (!base64) {\r\n LOG(1, `❌ Ocorreu um erro com o arquivo ${file.name}.`);\r\n continue;\r\n }\r\n\r\n (output.data as IFileMetadata[]).push({\r\n base64: base64,\r\n name: file.name,\r\n size: file.size,\r\n extension: file.name.slice(lastIndexOf), // inclui o \".\"\r\n type: file.type,\r\n lastModifiedIso: new Date(file.lastModified).toISOString(),\r\n });\r\n }\r\n\r\n }\r\n\r\n // 2. Verificar se há texto\r\n const text = dataTransfer.getData('text/plain');\r\n if (text) {\r\n output.data = text;\r\n output.tipo = \"text\";\r\n }\r\n\r\n // 3. Verificar se há HTML\r\n const html = dataTransfer.getData('text/html');\r\n if (html) {\r\n output.data = html;\r\n output.tipo = \"html\";\r\n }\r\n\r\n // 4. Verificar se há URL\r\n const url = dataTransfer.getData('text/uri-list');\r\n if (url) {\r\n output.data = url;\r\n output.tipo = \"url\";\r\n }\r\n\r\n // 5. Verificar se há dados JSON customizados\r\n try {\r\n const json = dataTransfer.getData('application/json');\r\n if (json) {\r\n output.data = JSON.parse(json);\r\n output.tipo = \"json\";\r\n }\r\n } catch (e) {\r\n // JSON inválido, ignorar\r\n }\r\n\r\n // 6. Capturar todos os outros tipos de dados disponíveis\r\n dataTransfer.types.forEach(type => {\r\n if (!['text/plain', 'text/html', 'text/uri-list', 'application/json', 'Files'].includes(type)) {\r\n const data = dataTransfer.getData(type);\r\n if (data) {\r\n output.data = data;\r\n output.tipo = \"unknown\";\r\n }\r\n }\r\n });\r\n\r\n this.value.set(output);\r\n this.changed.emit(output);\r\n }\r\n\r\n createRipple(ev: DragEvent, classColor: string = \"\") {\r\n const rippleEffect = ev.currentTarget ?? this.rippleEffect()?.nativeElement;\r\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\r\n const rect = rippleEffect.getBoundingClientRect();\r\n // Calcula a posição do clique relativa ao botão\r\n const x = ev.clientX - rect.left;\r\n const y = ev.clientY - rect.top;\r\n // Define o tamanho do ripple (maior dimensão do botão * 2)\r\n const size = Math.max(rect.width, rect.height) * 2;\r\n ripple.style.width = ripple.style.height = size + 'px';\r\n ripple.style.left = (x - size / 2) + 'px';\r\n ripple.style.top = (y - size / 2) + 'px';\r\n ripple.classList.add('ripple');\r\n if (classColor) {\r\n ripple.classList.add(classColor);\r\n }\r\n rippleEffect.appendChild(ripple);\r\n ripple.addEventListener('animationend', () => {\r\n ripple.remove();\r\n });\r\n }\r\n}\r\n","<div #dropzonearea class=\"dropzone\" [class.naosobrepor]=\"!sobrepor()\" (dragenter)=\"onDropZone('dragenter',$event)\"\r\n\t(dragleave)=\"onDropZone('dragleave',$event)\" (drop)=\"onDrop($event)\" (dragover)=\"onDropZone('dragover',$event)\"\r\n\t(click)=\"onDropZone('click',$event)\" [class.disabled]=\"disabled()\" [class.dragging]=\"isDragging\">\r\n\t<span #rippleEffect class=\"rippleArea\">\r\n\t\t<span #ripple class=\"ripple\"></span>\r\n\t</span>\r\n</div>\r\n<ng-content></ng-content>","import { Component, input, output } from '@angular/core';\r\nimport { UiButton } from \"../ui-button/ui-button\";\r\nimport { IFileMetadata } from '../../interfaces/interfaces';\r\n\r\n@Component({\r\n selector: 'ui-file-list',\r\n templateUrl: './ui-file-list.html',\r\n styleUrl: './ui-file-list.css',\r\n imports: [UiButton]\r\n})\r\nexport class UiFileList {\r\n\r\n disabled = input<boolean>();\r\n filesList = input<IFileMetadata[]>();\r\n remove = output<IFileMetadata>();\r\n\r\n onDelete(file: IFileMetadata) {\r\n if (this.disabled()) return;\r\n this.remove.emit(file);\r\n }\r\n\r\n}\r\n","<div class=\"e-filelist-area\">\r\n\t@for (file of filesList(); track $index) {\r\n\t<div class=\"e-filelist-item\">\r\n\t\t<div class=\"e-filelist-item-icon\">\r\n\t\t\t<i class=\"bi bi-file-earmark-fill\"></i>\r\n\t\t\t<div class=\"e-filelist-item-icon-ext\">{{ file.extension?.slice(1) }}</div>\r\n\t\t</div>\r\n\t\t<div class=\"e-filelist-item-text\">{{ file.name }}</div>\r\n\t\t<div class=\"e-filelist-action\">\r\n\t\t\t@if(!disabled()){\r\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" [disabled]=\"disabled()\" (click)=\"onDelete(file)\" icone=\"bi bi-x-lg\">\r\n\t\t\t</ui-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</div>\r\n\t}\r\n</div>","import { AfterViewInit, Component, computed, effect, ElementRef, HostListener, inject, input, model, OnDestroy, output, signal, viewChild } from '@angular/core';\r\nimport { computePosition, flip, offset, shift, detectOverflow, Elements, autoUpdate } from '@floating-ui/dom';\r\nimport { LibUtil, LOG } from '../../util/util';\r\nimport { IKV } from '../../interfaces/interfaces';\r\nimport { UiButton } from \"../ui-button/ui-button\";\r\n\r\nexport interface IOptionValue {\r\n optionChanged?: IKV;\r\n keys: string | number | string[] | number[];\r\n values: string | number | string[] | number[];\r\n}\r\n\r\ninterface IKVSeletor extends IKV {\r\n selected: boolean;\r\n choosing: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ui-select',\r\n templateUrl: './ui-select.html',\r\n styleUrl: './ui-select.css',\r\n host: { '[class]': 'hostClasses()' },\r\n imports: [UiButton],\r\n})\r\nexport class UiSelect implements OnDestroy, AfterViewInit {\r\n\r\n elementRef: ElementRef = inject(ElementRef);\r\n\r\n value = model<string | number | string[] | number[] | undefined>();\r\n options = input<IKV[] | undefined | null>();\r\n\r\n name = input<string | number | undefined>();\r\n placeholder = input<string>();\r\n disabled = input<boolean>();\r\n multiple = input<boolean>(false);\r\n canUnselect = input<boolean | undefined>(false);\r\n textEmpty = input<string | undefined>(\"Nada selecionado\");\r\n\r\n changed = output<IOptionValue>();\r\n\r\n isOpenedOptions = signal(false);\r\n markedOptionKey = signal<string | number | null | undefined>(null);\r\n elementoAcima: HTMLElement | null = null;\r\n // isUnderOverflow = signal(false);\r\n isSmallScreen = signal(window.innerWidth < 500);\r\n\r\n\r\n textoFiltrado = signal<string>(\"\");\r\n\r\n readonly optionsList = computed<IKVSeletor[]>(() => {\r\n const options = this.options?.() ?? [];\r\n if (this.multiple() !== true) {\r\n let valor = (this.value() as string | number | undefined);\r\n return options.map(op => ({\r\n ...op,\r\n selected: String(op.k) == String(valor),\r\n choosing: op.k == this.markedOptionKey()\r\n }));\r\n } else {\r\n let valor = (this.value() as string[] | number[] | undefined);\r\n if (!Array.isArray(valor)) {\r\n valor = [];\r\n }\r\n return options.map(op => ({\r\n ...op,\r\n selected: op.k != null ? valor.some(v => String(op.k) == String(v)) : false,\r\n choosing: op.k == this.markedOptionKey()\r\n }));\r\n }\r\n });\r\n readonly optionsFiltered = computed<IKVSeletor[]>(() => {\r\n let words = this.textoFiltrado().trim().split(\" \").filter(t => t != \"\");\r\n const options = (this.optionsList() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\r\n // Sem filtro, retorna tudo\r\n if (words.length === 0) return options;\r\n return options.filter(op => {\r\n for (const w of words) {\r\n let encontrado = false;\r\n if (op.v != null && LibUtil.contem(op.v, w)) {\r\n encontrado = true;\r\n }\r\n // Termo não encontrado na opção\r\n if (!encontrado) return false;\r\n }\r\n // Todos os termos encontrados\r\n return true;\r\n }).map(op => {\r\n let data = op.v?.toString() || '';\r\n\r\n // Substitui o valor do html, colocando uma mark em volta do texto buscado.\r\n if (words.length > 0) {\r\n for (let word of words) {\r\n let w = word.toLowerCase();\r\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\r\n if (w != \"\" && preparedData.includes(w)) {\r\n // Se w estiver dentro de < ou >, ignora (para não interferir em tags HTML)\r\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\r\n // Se a palavra for encontrada, envolve com a tag <mark>\r\n let pos = preparedData.indexOf(w);\r\n data = data.slice(0, pos)\r\n + \"<mark>\"\r\n + data.slice(pos, pos + w.length)\r\n + \"</mark>\"\r\n + data.slice(pos + w.length);\r\n data = data.replaceAll(\"</mark><mark>\", \"\");\r\n }\r\n };\r\n }\r\n return {\r\n ...op,\r\n html: data,\r\n };\r\n });\r\n });\r\n\r\n readonly textoExibindo = computed<string>(() => {\r\n const val = this.value();\r\n if (this.multiple() !== true) {\r\n let selectedOption = this.optionsList().find(op => String(op.k) == String(val));\r\n return selectedOption?.v ?? (selectedOption?.k ? `⚠️ Chave: ${selectedOption?.k}` : (this.textEmpty() ?? 'Nada selecionado'));\r\n }\r\n\r\n let valor = (this.value() as string[] | number[] | undefined);\r\n if (valor == undefined || !Array.isArray(valor)) {\r\n valor = [];\r\n }\r\n const textosSelecionados = this.optionsList()\r\n .filter(op => valor.some(v => String(v) == String(op.k)))\r\n .map(op => op.v);\r\n return textosSelecionados.length > 0 ? `[${textosSelecionados.length}] ${textosSelecionados.join(\", \")}` : (this.textEmpty() ?? 'Nada selecionado');\r\n\r\n });\r\n\r\n readonly displayText = viewChild<ElementRef>('displayText');\r\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\r\n readonly optionsOverlay = viewChild<ElementRef>('optionsOverlay');\r\n readonly optionsContainer = viewChild<ElementRef>('optionsContainer');\r\n readonly optionSearchInput = viewChild<ElementRef>('optionSearchInput');\r\n optionMinWidth = signal<number>(0);\r\n menuPosition = signal<{ top: string; left: string }>({ top: '0px', left: '0px' });\r\n\r\n // scrollCleanup: (() => void) | null = null;\r\n\r\n constructor() {\r\n effect(() => {\r\n const eTrigger = this.triggerElement()?.nativeElement as HTMLElement;\r\n if (!eTrigger) return;\r\n\r\n if (!this.isOpenedOptions()) return;\r\n\r\n const cleanupAutoUpdate = autoUpdate(\r\n eTrigger,\r\n this.optionsContainer()?.nativeElement,\r\n () => this.updatePosition()\r\n );\r\n return () => {\r\n cleanupAutoUpdate();\r\n };\r\n\r\n\r\n // const resizeObserver = new ResizeObserver((entries) => {\r\n // // Atualiza a posição do menu quando redimensiona\r\n // if (this.isOpenedOptions()) {\r\n // this.updatePosition();\r\n // }\r\n // });\r\n // resizeObserver.observe(eTrigger);\r\n // return () => resizeObserver.disconnect();\r\n });\r\n\r\n // Atualiza posição quando o menu abre\r\n effect(() => {\r\n if (this.isOpenedOptions()) {\r\n setTimeout(() => {\r\n this.updatePosition();\r\n // this.setupScrollListeners();\r\n this.focusToSearchInput();\r\n }, 1);\r\n } else {\r\n // this.cleanupScrollListeners();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.isOpenedOptions() == true) this.closeOverlay();\r\n // this.cleanupScrollListeners();\r\n }\r\n ngAfterViewInit() {\r\n this.checkScreenSize();\r\n this.setOverlaySizeToSizeViewport();\r\n\r\n\r\n this.updatePosition();\r\n }\r\n\r\n\r\n // Manipula mudança de valor (valueOfK não chegará nulo ou undefined)\r\n onChange(valueOfK: string | number | null): string | number | string[] | number[] {\r\n if (valueOfK == null) return '';\r\n\r\n let optionChanged = this.options?.()?.find(op => String(op.k) === String(valueOfK));\r\n let newKeys = valueOfK;\r\n let newValues = optionChanged?.v ?? newKeys;\r\n\r\n // SINGLE\r\n if (this.multiple() !== true) {\r\n if (this.canUnselect() === true && this.value() === newKeys) {\r\n newKeys = '';\r\n newValues = '';\r\n }\r\n this.changed.emit({ optionChanged, keys: newKeys, values: newValues });\r\n return newKeys;\r\n }\r\n\r\n // MULTIPLE (canUnselect sempre é true)\r\n let currentKeys = this.value() ?? [] as any[];\r\n let currentValues = [];\r\n if (!Array.isArray(currentKeys)) {\r\n currentKeys = [];\r\n }\r\n\r\n if (currentKeys.indexOf(newKeys) === -1) {\r\n currentKeys = [...currentKeys, newKeys];\r\n } else {\r\n currentKeys = currentKeys.filter(v => v !== newKeys);\r\n }\r\n setTimeout(() => {\r\n this.updatePosition();\r\n }, 1);\r\n\r\n currentValues = currentKeys.map(k => this.options?.()?.find(op => op.k === k)?.v ?? k);\r\n this.changed.emit({ optionChanged, keys: currentKeys, values: currentValues });\r\n return currentKeys;\r\n }\r\n\r\n // Abre ou fecha o overlay de opções\r\n onOpenOrCloseOptions() {\r\n if (!this.disabled()) {\r\n if (this.isOpenedOptions()) {\r\n this.closeOverlay();\r\n } else {\r\n this.openOverlay();\r\n }\r\n }\r\n }\r\n\r\n // Fecha o overlay de opções\r\n protected closeOverlay() {\r\n setTimeout(() => {\r\n this.isOpenedOptions.set(false);\r\n }, 2)\r\n\r\n this.textoFiltrado.set(\"\");\r\n this.markedOptionKey.set(null);\r\n this.focusToDisplayText();\r\n }\r\n\r\n // Abre o overlay de opções\r\n protected openOverlay() {\r\n this.updatePosition();\r\n setTimeout(() => {\r\n this.isOpenedOptions.set(true);\r\n }, 2)\r\n }\r\n\r\n // Seleciona uma opção\r\n onSelectOption(option?: IKV) {\r\n if (!option || option.k == null) {\r\n LOG(1, `❌ (SelectOption) Chave nula! (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\r\n return;\r\n }\r\n this.value.set(this.onChange(option.k));\r\n if (this.multiple() !== true) {\r\n this.closeOverlay();\r\n } else {\r\n this.focusToSearchInput();\r\n }\r\n }\r\n\r\n // Filtra as opções\r\n onInputSearch(text: string) {\r\n this.textoFiltrado.set(text);\r\n this.markedOptionKey.set(null);\r\n }\r\n\r\n // Limpa o filtro de opções\r\n onClearSearch() {\r\n this.textoFiltrado.set(\"\");\r\n this.focusToSearchInput();\r\n }\r\n\r\n focusToSearchInput() {\r\n this.optionSearchInput()?.nativeElement?.focus();\r\n }\r\n\r\n focusToDisplayText() {\r\n this.displayText()?.nativeElement?.focus();\r\n }\r\n\r\n // Navegação por teclado\r\n markKey(event: KeyboardEvent) {\r\n const options = this.optionsFiltered();\r\n if (options.length === 0) return;\r\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\r\n let currentKV = options.find(op => op.k === this.markedOptionKey());\r\n\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n currentIndex = (currentIndex + 1) % options.length;\r\n this.markedOptionKey.set(options[currentIndex].k);\r\n this.moveScrollToMarkedOption();\r\n } else if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n currentIndex = (currentIndex - 1 + options.length) % options.length;\r\n this.markedOptionKey.set(options[currentIndex].k);\r\n this.moveScrollToMarkedOption();\r\n } else if (event.key === 'Escape' || event.key === 'Tab') {\r\n event.preventDefault();\r\n this.closeOverlay();\r\n } else if (event.key === 'Enter') {\r\n event.preventDefault();\r\n if (this.markedOptionKey() != null) {\r\n this.onSelectOption(currentKV);\r\n }\r\n this.closeOverlay();\r\n }\r\n }\r\n\r\n // ----------------------------------------------------\r\n // Funções de Suporte ao Overlay\r\n // ----------------------------------------------------\r\n\r\n // Quando o overlay estiver aberto, define a classe showing no host\r\n readonly hostClasses = computed(() => {\r\n return this.isOpenedOptions() ? 'opened' : '';\r\n })\r\n\r\n\r\n // Fecha o overlay ao clicar fora\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\r\n if (!clickedInside && this.isOpenedOptions()) {\r\n setTimeout(() => {\r\n this.isOpenedOptions.set(false);\r\n }, 2)\r\n this.textoFiltrado.set(\"\");\r\n this.markedOptionKey.set(null);\r\n }\r\n }\r\n\r\n // Configura os listeners de scroll (Só necessita se não utilizar o autoUpdate do floating-ui, que já faz isso automaticamente)\r\n // private setupScrollListeners() {\r\n // const trigger = this.triggerElement()?.nativeElement;\r\n // if (!trigger) return;\r\n\r\n // const updatePositionHandler = () => this.updatePosition();\r\n // const scrollElements: HTMLElement[] = [];\r\n // window.addEventListener('scroll', updatePositionHandler, { passive: true });\r\n // let parent = trigger.parentElement;\r\n // while (parent) {\r\n // const overflow = window.getComputedStyle(parent).overflow;\r\n // const overflowY = window.getComputedStyle(parent).overflowY;\r\n // const overflowX = window.getComputedStyle(parent).overflowX;\r\n // if (\r\n // overflow === 'auto' || overflow === 'scroll' ||\r\n // overflowY === 'auto' || overflowY === 'scroll' ||\r\n // overflowX === 'auto' || overflowX === 'scroll'\r\n // ) {\r\n // parent.addEventListener('scroll', updatePositionHandler, { passive: true });\r\n // scrollElements.push(parent);\r\n // }\r\n // parent = parent.parentElement;\r\n // }\r\n // this.scrollCleanup = () => {\r\n // window.removeEventListener('scroll', updatePositionHandler);\r\n // scrollElements.forEach(el => {\r\n // el.removeEventListener('scroll', updatePositionHandler);\r\n // });\r\n // };\r\n // }\r\n\r\n // Limpa os listeners de scroll (Só necessita se não utilizar o autoUpdate do floating-ui, que já faz isso automaticamente)\r\n // private cleanupScrollListeners() {\r\n // if (this.scrollCleanup) {\r\n // this.scrollCleanup();\r\n // this.scrollCleanup = null;\r\n // }\r\n // }\r\n\r\n // Atualiza a posição do menu de opções\r\n private async updatePosition() {\r\n if (this.isSmallScreen()) return;\r\n\r\n const trigger = this.triggerElement()?.nativeElement;\r\n const optionsContainer = this.optionsContainer()?.nativeElement;\r\n if (!trigger || !optionsContainer) return;\r\n\r\n const { x, y } = await computePosition(trigger, optionsContainer, {\r\n placement: 'bottom-start',\r\n middleware: [\r\n offset(2),\r\n flip({\r\n fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],\r\n }),\r\n shift({ padding: 10 }),\r\n ],\r\n });\r\n this.menuPosition.set({\r\n left: `${x}px`,\r\n top: `${y}px`\r\n });\r\n }\r\n\r\n setOverlaySizeToSizeViewport() {\r\n // if (!this.isOpenedOptions()) return;\r\n\r\n // Obtem o tamanho da largura da viewport\r\n const viewportWidth = window.innerWidth;\r\n const parcialViewport = viewportWidth * 0.92;\r\n\r\n const overlay = this.optionsOverlay()?.nativeElement as HTMLElement;\r\n if (overlay) {\r\n let currentElement = overlay.parentElement as HTMLElement | null;\r\n while (currentElement) {\r\n let larguraOverlay = overlay.clientWidth;\r\n\r\n // Se chegar no body, para (para evitar mover o overlay para fora do body)\r\n if (currentElement.tagName.toLowerCase() === \"body\") break;\r\n\r\n // Move o overlay para o próximo nível acima\r\n currentElement.appendChild(overlay);\r\n\r\n if (larguraOverlay >= parcialViewport) {\r\n currentElement = null;\r\n break;\r\n }\r\n\r\n currentElement = currentElement.parentElement as HTMLElement;\r\n }\r\n\r\n }\r\n }\r\n\r\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\r\n this.isSmallScreen.set(e.matches);\r\n const eTrigger = this.triggerElement()?.nativeElement as HTMLElement;\r\n if (eTrigger) {\r\n if (this.isSmallScreen()) {\r\n this.optionMinWidth.set(0);\r\n } else {\r\n this.optionMinWidth.set(eTrigger.offsetWidth - 4);\r\n }\r\n }\r\n }\r\n\r\n checkScreenSize() {\r\n const mediaQuery = window.matchMedia('(max-width: 500px)');\r\n this.onChangeMediaQuery(mediaQuery);\r\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\r\n }\r\n\r\n // Move o scroll para a opção marcada\r\n private moveScrollToMarkedOption() {\r\n setTimeout(() => {\r\n const optionsContainer = this.optionsContainer()?.nativeElement?.querySelector(\".e-select-options-list\") as HTMLElement;\r\n const markedOption = optionsContainer?.querySelector('.e-select-option.choosing') as HTMLElement;\r\n if (optionsContainer && markedOption) {\r\n const containerTop = optionsContainer.scrollTop;\r\n const containerBottom = containerTop + optionsContainer.clientHeight;\r\n const optionTop = markedOption.offsetTop;\r\n const optionBottom = optionTop + markedOption.offsetHeight;\r\n if (optionTop < containerTop) {\r\n optionsContainer.scrollTop = optionTop - 40; // 40px do elemento Search\r\n } else if (optionBottom > containerBottom) {\r\n optionsContainer.scrollTop = optionBottom - optionsContainer.clientHeight;\r\n }\r\n }\r\n }, 1);\r\n }\r\n}\r\n","<div #triggerElement class=\"e-select-container\" (click)=\"onOpenOrCloseOptions()\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\r\n\t(keyup.ArrowDown)=\"onOpenOrCloseOptions()\" (keyup.ArrowUp)=\"onOpenOrCloseOptions()\">\r\n\t<div class=\"e-select\">\r\n\t\t<input #displayText type=\"text\" [name]=\"'select_'+(name() ?? '')\" [value]=\"textoExibindo()\" readonly\r\n\t\t\t[placeholder]=\"placeholder() ?? ''\" [disabled]=\"disabled()\" [class.outlined]=\"true\" [class.input]=\"true\" />\r\n\t</div>\r\n\t<div class=\"e-select-arrow-area\">\r\n\t\t<div class=\"e-select-arrow\" [class.open]=\"isOpenedOptions()\"></div>\r\n\t</div>\r\n</div>\r\n\r\n\r\n<div #optionsOverlay class=\"e-select-overlay\" [class.open]=\"isOpenedOptions()\" (click)=\"closeOverlay()\">\r\n\r\n\t<div #optionsContainer class=\"e-select-options-container\" [class.open]=\"isOpenedOptions()\"\r\n\t\t[class.smallScreen]=\"isSmallScreen()\" [style.left]=\"menuPosition().left\" [style.top]=\"menuPosition().top\">\r\n\t\t@if(isOpenedOptions()) {\r\n\t\t<div class=\"e-select-search-area\" [style.minWidth.px]=\"optionMinWidth()\">\r\n\t\t\t<input #optionSearchInput type=\"text\" name=\"e-select-search-input\" class=\"e-select-search\"\r\n\t\t\t\t(keyup)=\"markKey($event)\" placeholder=\"Procurar...\" [value]=\"textoFiltrado()\" (keydown.Escape)=\"closeOverlay()\"\r\n\t\t\t\tsize=\"8\" (keydown.Tab)=\"closeOverlay()\" (input)=\"onInputSearch($event.target.value)\" />\r\n\t\t\t@if(textoFiltrado().length > 0) {\r\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" class=\"e-select-search-clearicon\" (click)=\"onClearSearch()\"\r\n\t\t\t\ticone=\"fa fa-times\"></ui-button>\r\n\t\t\t}\r\n\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-select-search-icon\" (click)=\"focusToSearchInput()\"\r\n\t\t\t\ticone=\"fa fa-search\"></ui-button>\r\n\t\t</div>\r\n\t\t<div class=\"e-select-options-list\">\r\n\t\t\t@for(option of optionsFiltered(); track $index) {\r\n\t\t\t<div class=\"e-select-option\" [class.selected]=\"option.selected\" [style.minWidth.px]=\"optionMinWidth()\"\r\n\t\t\t\t[title]=\"option.v\" (click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\r\n\t\t\t\t[class.choosing]=\"option.choosing\">\r\n\t\t\t\t<div class=\"e-select-option-check\"></div>\r\n\t\t\t\t<div class=\"e-select-option-text\" [innerHTML]=\"option.html\"></div>\r\n\t\t\t</div>\r\n\t\t\t}@empty {\r\n\t\t\t<div class=\"e-select-option empty\">\r\n\t\t\t\tNenhuma opção disponível\r\n\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n</div>","import { Component, computed, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\r\nimport { UiButton } from \"../ui-button/ui-button\";\r\n\r\n@Component({\r\n selector: 'ui-procurar',\r\n templateUrl: './ui-procurar.html',\r\n styleUrl: './ui-procurar.css',\r\n host: { '[class.focused]': 'focused()' },\r\n imports: [UiButton],\r\n})\r\nexport class UiProcurar {\r\n\r\n readonly searchInput = viewChild<ElementRef>('searchInput');\r\n\r\n inputed = output<string>();\r\n changed = output<string>();\r\n value = model<string>('');\r\n colapsed = model<boolean | undefined>(false);\r\n autoColapse = model<boolean | undefined>(false);\r\n\r\n computedColapsed = computed(() => {\r\n if (this.focused() || this.value().length > 0) {\r\n return false;\r\n }\r\n if (this.autoColapse()) {\r\n return this.value().length === 0;\r\n }\r\n return this.colapsed() ?? false;\r\n });\r\n\r\n name = input<string | number | undefined>();\r\n placeholder = input<string>();\r\n disabled = input<boolean>();\r\n\r\n focused = signal<boolean | undefined>(false);\r\n\r\n onInput(value: string) {\r\n this.value.set(value);\r\n this.inputed.emit(value);\r\n }\r\n\r\n // Limpa o filtro de opções\r\n onClearSearch() {\r\n this.value.set('');\r\n this.focusSearchInput();\r\n this.onInputed();\r\n this.onChange();\r\n }\r\n\r\n focusSearchInput() {\r\n this.searchInput()?.nativeElement?.focus();\r\n }\r\n\r\n onClickSearchIcon() {\r\n this.focusSearchInput();\r\n this.onInputed();\r\n this.onChange();\r\n }\r\n\r\n onSearch() {\r\n this.onInputed();\r\n this.onChange();\r\n }\r\n\r\n onInputed() {\r\n this.inputed.emit(this.value());\r\n }\r\n\r\n onChange() {\r\n this.changed.emit(this.value());\r\n }\r\n\r\n\r\n onFocus(ev: FocusEvent) {\r\n this.focused.set(true);\r\n }\r\n\r\n onBlur(ev: FocusEvent) {\r\n this.focused.set(false);\r\n }\r\n\r\n}\r\n","<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-procurar-icone-search\" (clicked)=\"onClickSearchIcon()\" tabindex=\"-1\"\r\n\ticone=\"fa fa-search\">\r\n</ui-button>\r\n<div class=\"e-procurar-input-container\" [class.colapsed]=\"computedColapsed()\">\r\n\t<input #searchInput type=\"text\" class=\"e-procurar-input\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\r\n\t\t[name]=\"'procurar_'+(name() ?? '')\" (change)=\"onChange()\" [placeholder]=\"placeholder() ?? 'Procurar...'\"\r\n\t\t[disabled]=\"disabled()\" (keyup.Enter)=\"onSearch()\" (keyup.Escape)=\"onClearSearch()\" (focus)=\"onFocus($event)\"\r\n\t\t(blur)=\"onBlur($event)\" />\r\n</div>\r\n@if(value().length > 0) {\r\n<ui-button tipo=\"icon\" tema=\"error\" class=\"e-procurar-botao-clear\" (clicked)=\"onClearSearch()\" title=\"Limpar\"\r\n\ticone=\"fa fa-times\">\r\n</ui-button>\r\n}","import { Component, input } from '@angular/core';\r\nimport { UiProgressMode } from '../../interfaces/interfaces';\r\n\r\n@Component({\r\n selector: 'ui-progress',\r\n templateUrl: './ui-progress.html',\r\n styleUrl: './ui-progress.css',\r\n})\r\nexport class UiProgress {\r\n\r\n value = input<number>(0);\r\n bufferValue = input<number>(0);\r\n mode = input<UiProgressMode>('determinate');\r\n\r\n}\r\n","<progress [value]=\"value()\"></progress>","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, viewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-slide',\r\n templateUrl: './ui-slide.html',\r\n styleUrl: './ui-slide.css',\r\n host: { '[class.focused]': 'focused()' }\r\n})\r\nexport class UiSlide implements AfterViewInit {\r\n\r\n sliderbox = viewChild('sliderbox', { read: ElementRef });\r\n\r\n value = model<boolean>(false);\r\n disabled = input<boolean>();\r\n focused = model<boolean>(false);\r\n focus = input<boolean>(false);\r\n changed = output<boolean>();\r\n\r\n ativo = computed(() => {\r\n const val = (this.value() as any);\r\n return val === true || val === 'true' || val === 1 || val === '1';\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.focus()) {\r\n this.sliderbox()?.nativeElement.focus();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.sliderbox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\r\n if (event.key === ' ' || event.key === 'Enter') {\r\n event.preventDefault();\r\n this.onClickSlide();\r\n }\r\n });\r\n }\r\n\r\n onClickSlide() {\r\n if (this.disabled()) return;\r\n\r\n const currentValue = (this.value() as any);\r\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\r\n this.value.set(newValue);\r\n this.changed.emit(newValue);\r\n }\r\n\r\n onFocus(ev: FocusEvent) {\r\n if (this.disabled()) return;\r\n\r\n this.focused.set(true);\r\n }\r\n\r\n onBlur(ev: FocusEvent) {\r\n this.focused.set(false);\r\n }\r\n\r\n\r\n}\r\n","<div #sliderbox class=\"sliderbox\" tabindex=\"0\" (click)=\"onClickSlide()\" [class.ativo]=\"ativo()\"\r\n\t[class.disabled]=\"disabled()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\">\r\n\t<div class=\"slidercircle\">\r\n\t\t<i class=\"checkmark bi bi-check-lg\"></i>\r\n\t\t<i class=\"nocheckmark bi bi-dash\"></i>\r\n\t</div>\r\n</div>","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, viewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-check-box',\r\n templateUrl: './ui-check-box.html',\r\n styleUrl: './ui-check-box.css',\r\n host: {\r\n '[class.focused]': 'focused()',\r\n }\r\n})\r\nexport class UiCheckBox implements AfterViewInit {\r\n\r\n marcabox = viewChild('marcabox', { read: ElementRef });\r\n\r\n value = model<boolean>(false);\r\n disabled = input<boolean>();\r\n focused = model<boolean>(false);\r\n focus = input<boolean>(false);\r\n changed = output<boolean>();\r\n single = input<boolean>(false);\r\n hasDash = input<boolean>(false);\r\n\r\n ativo = computed(() => {\r\n const val = (this.value() as any);\r\n return val === true || val === 'true' || val === 1 || val === '1';\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.focus()) {\r\n this.marcabox()?.nativeElement.focus();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.marcabox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\r\n if (event.key === ' ' || event.key === 'Enter') {\r\n event.preventDefault();\r\n this.onClickMarcador();\r\n }\r\n });\r\n }\r\n\r\n onClickMarcador() {\r\n if (this.disabled()) return;\r\n\r\n const currentValue = (this.value() as any);\r\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\r\n this.value.set(newValue);\r\n this.changed.emit(newValue);\r\n }\r\n\r\n onFocus(ev: FocusEvent) {\r\n if (this.disabled()) return;\r\n\r\n this.focused.set(true);\r\n }\r\n\r\n onBlur(ev: FocusEvent) {\r\n this.focused.set(false);\r\n }\r\n\r\n\r\n}\r\n","<div #marcabox class=\"marcador-area\" tabindex=\"0\" (click)=\"onClickMarcador()\" [class.ativo]=\"ativo()\"\r\n\t[class.multiple]=\"!single()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\" [class.disabled]=\"disabled()\">\r\n\t<div class=\"checkmark {{ single() ? 'simples' : 'multiple' }}\" [class.hasDash]=\"hasDash()\" [class.ativo]=\"ativo()\">\r\n\t</div>\r\n</div>","import { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-list-errors',\r\n templateUrl: './ui-list-errors.html',\r\n styleUrl: './ui-list-errors.css',\r\n})\r\nexport class UiListErrors {\r\n\r\n show = input.required<boolean | undefined>();\r\n\r\n errors = input.required<(string | undefined)[] | undefined>();\r\n dica = input.required<string | undefined>();\r\n}\r\n","@if(show()){\r\n<div class=\"erroArea\" [class.hide]=\"(!errors() || errors()?.length === 0) && (!dica())\">\r\n\t@for (erro of errors(); track $index) {\r\n\t<span class=\"erroText\">{{ erro ?? 'Erro desconhecido' }}</span>\r\n\t}\r\n\t@if(dica()){\r\n\t<span class=\"dicaText\">{{ dica() ?? '' }}</span>\r\n\t}\r\n</div>\r\n}","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-loading',\r\n templateUrl: './ui-loading.html',\r\n styleUrl: './ui-loading.css',\r\n})\r\nexport class UiLoading {\r\n\r\n}\r\n","<i class=\"fa fa-spinner\"></i>","import { AfterViewInit, Component, effect, ElementRef, HostListener, inject, input, model, OnDestroy, OnInit, signal, viewChild } from '@angular/core';\r\nimport { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';\r\nimport { UiButton } from \"../ui-button/ui-button\";\r\nimport { LibUtil, LOG } from '../../util/util';\r\nimport { IPosicoesFloating } from '../../interfaces/interfaces';\r\n\r\n@Component({\r\n selector: 'ui-menu',\r\n templateUrl: './ui-menu.html',\r\n styleUrl: './ui-menu.css',\r\n imports: [UiButton],\r\n host: { '[class.opened]': 'isOpened()' }\r\n})\r\nexport class UiMenu implements OnDestroy, OnInit, AfterViewInit {\r\n // UTILIZE:\r\n // 'slot:botao' para colocar o botão que irá abrir o menu, ou utilize o botão padrão (três pontos verticais)\r\n // O demais elementos dentro do <ui-menu> serão considerados opções do menu, e serão exibidos dentro do overlay quando o menu for aberto\r\n\r\n elementRef: ElementRef = inject(ElementRef);\r\n\r\n readonly disabled = input<boolean>();\r\n readonly icone = input<string | undefined | null>(\"bi bi-three-dots-vertical\");\r\n autoCloseInCascade = model<boolean>(true);\r\n\r\n posicao = model<IPosicoesFloating & string>('right-start');\r\n isOpened = model(false);\r\n id = signal(LibUtil.uuid().split('-')[0]);\r\n internalId = signal<{ id: string | undefined; changed: boolean } | undefined>({ id: undefined, changed: false });\r\n isSmallScreen = signal(window.innerWidth < 500);\r\n optionMinWidth = signal<number>(0);\r\n menuPosition = signal<{ top: string; left: string }>({ top: '0px', left: '0px' });\r\n zIndex = signal<string>('999');\r\n closeOverlayObserver = new MutationObserver((mutations) => {\r\n let hasOpenClass = false;\r\n for (const mutation of mutations) {\r\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\r\n const target = mutation.target as HTMLElement;\r\n if (target.classList.contains('open')) {\r\n hasOpenClass = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (!hasOpenClass) {\r\n // LOG(1, \"%cObserver detectou overlay fechado:\", 'color: lightcoral;', mutations?.[0]);\r\n this.closeOverlay(true); // Callback para fechar o overlay quando a mutação indicar que perdeu a classe 'open'\r\n }\r\n });\r\n\r\n\r\n readonly menuTrigger = viewChild<ElementRef>('menuTrigger');\r\n readonly menuOverlay = viewChild<ElementRef>('menuOverlay');\r\n readonly menuContainer = viewChild<ElementRef>('menuContainer');\r\n\r\n constructor() {\r\n effect(() => {\r\n\r\n const eTrigger = this.menuTrigger()?.nativeElement as HTMLElement;\r\n if (!eTrigger) return;\r\n\r\n if (!this.isOpened()) return;\r\n\r\n const cleanupAutoUpdate = autoUpdate(\r\n eTrigger,\r\n this.menuContainer()?.nativeElement,\r\n () => this.updatePosition()\r\n );\r\n return () => {\r\n cleanupAutoUpdate();\r\n };\r\n\r\n });\r\n\r\n // Atualiza posição quando o menu abre\r\n effect(() => {\r\n if (this.isOpened()) {\r\n setTimeout(() => {\r\n this.updatePosition();\r\n }, 1);\r\n }\r\n });\r\n effect(() => {\r\n let internalId = this.internalId();\r\n if (internalId?.id === undefined && internalId?.changed === true) {\r\n // LOG(1, \"%cAlterado Internal:\", 'color: lightcoral;', internalId, \" - Menu ID:\", this.id());\r\n this.closeOverlay();\r\n };\r\n });\r\n }\r\n ngOnInit() {\r\n // Inicializa o zIndex com base no valor armazenado no sessionStorage\r\n this.zIndex.set(sessionStorage.getItem(`ui-menu-index`) ? (Number(sessionStorage.getItem(`ui-menu-index`)) + 1).toString() : '1001');\r\n sessionStorage.setItem(`ui-menu-index`, this.zIndex());\r\n }\r\n ngOnDestroy() {\r\n if (this.isOpened() == true) this.closeOverlay();\r\n this.closeOverlayObserver.disconnect();\r\n // this.cleanupScrollListeners();\r\n }\r\n ngAfterViewInit() {\r\n this.checkScreenSize();\r\n this.setOverlaySizeToSizeViewport();\r\n\r\n this.updatePosition();\r\n }\r\n\r\n // Abre ou fecha o overlay de opções\r\n onOpenOrCloseOptions() {\r\n if (!this.disabled()) {\r\n if (this.isOpened()) {\r\n this.closeOverlay();\r\n } else {\r\n this.openOverlay();\r\n }\r\n this.menuTrigger()?.nativeElement.focus();\r\n }\r\n }\r\n // Abre ou fecha o overlay de opções\r\n onClickSlotBotao(event: Event) {\r\n if (!this.disabled()) {\r\n this.openOverlay();\r\n this.menuTrigger()?.nativeElement.focus();\r\n }\r\n // LOG(1, \"%cAbriu ID:\", 'color: lightgreen;', this.id());\r\n }\r\n\r\n onClickOverlay() {\r\n // LOG(1, \"%cFECHOU OVERLAY ID:\", 'color: lightblue;', this.id());\r\n this.closeOverlay();\r\n }\r\n\r\n\r\n onClickContainer(event: Event) {\r\n event.stopPropagation();\r\n let closestOverlay = (event.target as HTMLElement).closest('.e-menu-overlay');\r\n let overlayId = closestOverlay?.id?.replaceAll('ov', '');\r\n let closestTrigger = (event.target as HTMLElement).closest('.e-menu-trigger');\r\n let triggerId = closestTrigger?.id?.replaceAll('tr', '');\r\n this.internalId.set({ id: triggerId, changed: true });\r\n\r\n // LOG(1, 'Triger ID:', triggerId, ' - Overlay ID:', overlayId);\r\n\r\n if (overlayId == this.id() && triggerId != null && triggerId != this.id()) {\r\n // Um menu interno foi clicado, não fecha o overlay\r\n // O atual nível de menu irá observar o elemento closestTrigger e só irá fechar o overlay quando o elemento trigger fechar.\r\n this.closeOverlayObserver.observe(closestTrigger as HTMLElement, { attributes: true, attributeFilter: ['class'] });\r\n } else {\r\n // Clicou no container, fecha o overlay\r\n this.closeOverlay();\r\n }\r\n\r\n }\r\n\r\n // Fecha o overlay de opções\r\n protected closeOverlay(fromCascade: boolean = false) {\r\n if (fromCascade && !this.autoCloseInCascade()) return;\r\n\r\n this.closeOverlayObserver.disconnect();\r\n setTimeout(() => {\r\n this.isOpened.set(false);\r\n }, 2)\r\n }\r\n\r\n // Abre o overlay de opções\r\n protected openOverlay() {\r\n this.updatePosition();\r\n setTimeout(() => {\r\n this.isOpened.set(true);\r\n }, 2)\r\n }\r\n\r\n // Atualiza a posição do menu de opções\r\n private async updatePosition() {\r\n if (this.isSmallScreen()) return;\r\n\r\n const trigger = this.menuTrigger()?.nativeElement;\r\n const menuContainer = this.menuContainer()?.nativeElement;\r\n if (!trigger || !menuContainer) return;\r\n\r\n const { x, y } = await computePosition(trigger, menuContainer, {\r\n placement: this.posicao(),\r\n middleware: [\r\n offset(2),\r\n flip({\r\n fallbackPlacements: ['left-start', 'bottom-start', 'top-start', 'bottom-end', 'top-end'],\r\n }),\r\n shift({ padding: 10 }),\r\n ],\r\n });\r\n this.menuPosition.set({\r\n left: `${x}px`,\r\n top: `${y}px`\r\n });\r\n }\r\n\r\n setOverlaySizeToSizeViewport() {\r\n // if (!this.isOpened()) return;\r\n\r\n // Obtem o tamanho da largura da viewport\r\n const viewportWidth = window.innerWidth;\r\n const parcialViewport = viewportWidth * 0.92;\r\n\r\n const overlay = this.menuOverlay()?.nativeElement as HTMLElement;\r\n if (overlay) {\r\n let currentElement = overlay.parentElement as HTMLElement | null;\r\n while (currentElement) {\r\n let larguraOverlay = overlay.clientWidth;\r\n\r\n // Se chegar no body, para (para evitar mover o overlay para fora do body)\r\n if (currentElement.tagName.toLowerCase() === \"body\") break;\r\n\r\n // Move o overlay para o próximo nível acima\r\n currentElement.appendChild(overlay);\r\n\r\n if (larguraOverlay >= parcialViewport) {\r\n currentElement = null;\r\n break;\r\n }\r\n\r\n currentElement = currentElement.parentElement as HTMLElement;\r\n }\r\n\r\n }\r\n }\r\n\r\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\r\n this.isSmallScreen.set(e.matches);\r\n const eTrigger = this.menuTrigger()?.nativeElement as HTMLElement;\r\n if (eTrigger) {\r\n if (this.isSmallScreen()) {\r\n this.optionMinWidth.set(0);\r\n } else {\r\n this.optionMinWidth.set(eTrigger.offsetWidth - 4);\r\n }\r\n }\r\n }\r\n\r\n checkScreenSize() {\r\n const mediaQuery = window.matchMedia('(max-width: 500px)');\r\n this.onChangeMediaQuery(mediaQuery);\r\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\r\n }\r\n\r\n onArrowUp(event: Event) {\r\n event.preventDefault();\r\n // this.moveFocoPara('cima', event);\r\n }\r\n\r\n onArrowDown(event: Event) {\r\n event.preventDefault();\r\n // this.moveFocoPara('baixo', event);\r\n }\r\n\r\n // moveFocoPara(direcao: 'cima' | 'baixo', event: Event) {\r\n // this.openOverlay();\r\n // LOG(1, `Moverá para ${direcao} - Event:`, event);\r\n // const container = this.menuContainer()?.nativeElement as HTMLElement;\r\n // if (!container) return;\r\n\r\n // const focusableElements = Array.from(container.querySelectorAll('.e-menu-area>*')).filter(el => el instanceof HTMLElement && !el.hasAttribute('disabled')) as HTMLElement[];\r\n // if (focusableElements.length === 0) return;\r\n\r\n // // \r\n\r\n // }\r\n\r\n}\r\n","<div #menuTrigger class=\"e-menu-trigger\" (click)=\"onClickSlotBotao($event)\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\r\n\t(keydown.ArrowDown)=\"onArrowDown($event)\" (keyup.ArrowUp)=\"onArrowUp($event)\" (keyup.Escape)=\"closeOverlay()\"\r\n\t[id]=\"'tr'+id()\" [class.open]=\"isOpened()\">\r\n\t<ng-content select=\"[slot='botao']\">\r\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" [icone]=\"icone()\"></ui-button>\r\n\t</ng-content>\r\n</div>\r\n\r\n<div #menuOverlay class=\"e-menu-overlay\" [class.open]=\"isOpened()\" (click)=\"onClickOverlay()\"\r\n\t(keydown.ArrowDown)=\"onArrowDown($event)\" (keyup.ArrowUp)=\"onArrowUp($event)\" [style.zIndex]=\"zIndex()\"\r\n\t[id]=\"'ov'+id()\">\r\n\r\n\t<div #menuContainer class=\"e-menu-container\" [class.smallScreen]=\"isSmallScreen()\" [style.left]=\"menuPosition().left\"\r\n\t\t[style.top]=\"menuPosition().top\" (click)=\"onClickContainer($event)\">\r\n\t\t<div [style.minWidth.px]=\"optionMinWidth()\" class=\"e-menu-area\">\r\n\t\t\t<ng-content></ng-content>\r\n\t\t</div>\r\n\t</div>\r\n\r\n</div>","import { Component, computed, effect, ElementRef, HostListener, inject, OnDestroy, signal, viewChild } from '@angular/core';\r\nimport { computePosition, flip, offset, shift } from '@floating-ui/dom';\r\nimport { LibUtil, LOG } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { IKV } from '../../interfaces/interfaces';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\nexport interface IKVAutoCompletador extends IKV {\r\n selected: boolean;\r\n choosing: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'fields-autocomplete',\r\n templateUrl: './autocomplete.html',\r\n styleUrls: ['../fields.css', './autocomplete.css'],\r\n imports: [UiListErrors],\r\n})\r\nexport class FieldsAutocomplete extends BaseFieldsForm implements OnDestroy {\r\n\r\n elementRef: ElementRef = inject(ElementRef);\r\n\r\n isOpenedOptions = signal(false);\r\n markedOptionKey = signal<string | number | null | undefined>(null);\r\n\r\n options = computed<IKVAutoCompletador[]>(() => {\r\n const options = this.campo()?.options?.() || [];\r\n // Autocompletar não exibe opções sem valor\r\n return options.filter((op: IKV) => op.v != null && op.v !== '').map((op: IKV) => ({\r\n ...op,\r\n selected: op.k === this.value(),\r\n choosing: op.k === this.markedOptionKey()\r\n }));\r\n });\r\n optionsFiltered = computed<IKVAutoCompletador[]>(() => {\r\n let words = this.value()?.toString().trim().split(\" \").filter((t: string) => t != \"\");\r\n const options = (this.options() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\r\n // Sem filtro, retorna tudo\r\n if (words.length === 0) return options;\r\n\r\n return options.filter(op => {\r\n for (const w of words) {\r\n let encontrado = false;\r\n if (op.v != null && LibUtil.contem(op.v, w)) {\r\n encontrado = true;\r\n }\r\n\r\n // Termo não encontrado na opção\r\n if (!encontrado) return false;\r\n }\r\n\r\n // Todos os termos encontrados\r\n return true;\r\n }).map(op => {\r\n let data = op.v?.toString() || '';\r\n // Substitui o valor do html, colocando uma mark em volta do texto buscado.\r\n if (words.length > 0) {\r\n for (let word of words) {\r\n let w = word.toLowerCase();\r\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\r\n if (w != \"\" && preparedData.includes(w)) {\r\n // Se w estiver dentro de < ou >, ignora (para não interferir em tags HTML)\r\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\r\n // Se a palavra for encontrada, envolve com a tag <mark>\r\n let pos = preparedData.indexOf(w);\r\n data = data.slice(0, pos)\r\n + \"<mark>\"\r\n + data.slice(pos, pos + w.length)\r\n + \"</mark>\"\r\n + data.slice(pos + w.length);\r\n data = data.replaceAll(\"</mark><mark>\", \"\");\r\n }\r\n };\r\n }\r\n\r\n return {\r\n ...op,\r\n html: data,\r\n };\r\n });\r\n });\r\n\r\n readonly displayText = viewChild<ElementRef>('displayText');\r\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\r\n readonly optionsContainer = viewChild<ElementRef>('optionsContainer');\r\n offsetWidth = signal<number>(0);\r\n menuPosition = signal<{ top: string; left: string }>({ top: '0px', left: '0px' });\r\n\r\n scrollCleanup: (() => void) | null = null;\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n effect(() => {\r\n const el = this.triggerElement()?.nativeElement as HTMLElement;\r\n if (!el) return;\r\n\r\n const resizeObserver = new ResizeObserver((entries) => {\r\n for (const entry of entries) {\r\n this.offsetWidth.set(entry.target.clientWidth - 4); // -4 para compensar borda\r\n }\r\n // Atualiza a posição do menu quando redimensiona\r\n if (this.isOpenedOptions()) {\r\n this.updatePosition();\r\n }\r\n });\r\n resizeObserver.observe(el);\r\n return () => resizeObserver.disconnect();\r\n });\r\n\r\n // Atualiza posição quando o menu abre\r\n effect(() => {\r\n if (this.isOpenedOptions()) {\r\n setTimeout(() => {\r\n this.updatePosition();\r\n this.setupScrollListeners();\r\n }, 1);\r\n } else {\r\n this.cleanupScrollListeners();\r\n }\r\n });\r\n }\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this.closeOverlay();\r\n this.cleanupScrollListeners();\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (newValue != \"\") {\r\n this.isOpenedOptions.set(true);\r\n } else {\r\n this.isOpenedOptions.set(false);\r\n }\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n if (this.campo()?.onMatchOption) {\r\n let option = this.campo()?.options?.()?.find((op: IKV) => op.v === newValue);\r\n try {\r\n this.campo()?.onMatchOption?.(this.form(), option);\r\n } catch (err) {\r\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name.toString()}'`, err);\r\n }\r\n }\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n override onClickLabel() {\r\n super.onClickLabel();\r\n this.closeOverlay();\r\n }\r\n\r\n // Fecha o overlay de opções\r\n protected closeOverlay() {\r\n this.isOpenedOptions.set(false);\r\n this.markedOptionKey.set(null);\r\n }\r\n\r\n // Seleciona uma opção\r\n onSelectOption(option?: IKV) {\r\n if (!option || option.k == null) {\r\n LOG(1, `❌ Chave nula (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\r\n return;\r\n }\r\n this.onInput(option.v?.toString() ?? '');\r\n this.closeOverlay();\r\n }\r\n\r\n // Navegação por teclado\r\n markKey(event: KeyboardEvent) {\r\n const options = this.optionsFiltered();\r\n if (options.length === 0) return;\r\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\r\n let currentKV = options.find(op => op.k === this.markedOptionKey());\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.isOpenedOptions.set(true);\r\n currentIndex = (currentIndex + 1) % options.length;\r\n this.markedOptionKey.set(options[currentIndex].k);\r\n this.moveScrollToMarkedOption();\r\n } else if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n this.isOpenedOptions.set(true);\r\n currentIndex = (currentIndex - 1 + options.length) % options.length;\r\n this.markedOptionKey.set(options[currentIndex].k);\r\n this.moveScrollToMarkedOption();\r\n } else if (event.key === 'Enter') {\r\n event.preventDefault();\r\n if (this.markedOptionKey() != null) {\r\n this.onSelectOption(currentKV);\r\n }\r\n this.closeOverlay();\r\n }\r\n }\r\n\r\n\r\n // ----------------------------------------------------\r\n // Funções de Suporte ao Overlay\r\n // ----------------------------------------------------\r\n\r\n // Fecha o overlay ao clicar fora\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\r\n if (!clickedInside && this.isOpenedOptions()) {\r\n this.isOpenedOptions.set(false);\r\n this.markedOptionKey.set(null);\r\n }\r\n }\r\n\r\n // Configura os listeners de scroll\r\n private setupScrollListeners() {\r\n const trigger = this.triggerElement()?.nativeElement;\r\n if (!trigger) return;\r\n\r\n const updatePositionHandler = () => this.updatePosition();\r\n const scrollElements: HTMLElement[] = [];\r\n window.addEventListener('scroll', updatePositionHandler, { passive: true });\r\n let parent = trigger.parentElement;\r\n while (parent) {\r\n const overflow = window.getComputedStyle(parent).overflow;\r\n const overflowY = window.getComputedStyle(parent).overflowY;\r\n const overflowX = window.getComputedStyle(parent).overflowX;\r\n if (\r\n overflow === 'auto' || overflow === 'scroll' ||\r\n overflowY === 'auto' || overflowY === 'scroll' ||\r\n overflowX === 'auto' || overflowX === 'scroll'\r\n ) {\r\n parent.addEventListener('scroll', updatePositionHandler, { passive: true });\r\n scrollElements.push(parent);\r\n }\r\n parent = parent.parentElement;\r\n }\r\n this.scrollCleanup = () => {\r\n window.removeEventListener('scroll', updatePositionHandler);\r\n scrollElements.forEach(el => {\r\n el.removeEventListener('scroll', updatePositionHandler);\r\n });\r\n };\r\n }\r\n\r\n // Limpa os listeners de scroll\r\n private cleanupScrollListeners() {\r\n if (this.scrollCleanup) {\r\n this.scrollCleanup();\r\n this.scrollCleanup = null;\r\n }\r\n }\r\n\r\n // Atualiza a posição do menu de opções\r\n private async updatePosition() {\r\n const trigger = this.triggerElement()?.nativeElement;\r\n const optionsContainer = this.optionsContainer()?.nativeElement;\r\n if (!trigger || !optionsContainer) return;\r\n const { x, y } = await computePosition(trigger, optionsContainer, {\r\n placement: 'bottom-start',\r\n middleware: [\r\n offset(2),\r\n flip({\r\n fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],\r\n }),\r\n shift({ padding: 10 }),\r\n ],\r\n });\r\n this.menuPosition.set({\r\n left: `${x}px`,\r\n top: `${y}px`\r\n });\r\n }\r\n\r\n // Move o scroll para a opção marcada\r\n private moveScrollToMarkedOption() {\r\n setTimeout(() => {\r\n const optionsContainer = this.optionsContainer()?.nativeElement?.querySelector(\".options-list\") as HTMLElement;\r\n const markedOption = optionsContainer?.querySelector('.option-item.choosing') as HTMLElement;\r\n if (optionsContainer && markedOption) {\r\n const containerTop = optionsContainer.scrollTop;\r\n const containerBottom = containerTop + optionsContainer.clientHeight;\r\n const optionTop = markedOption.offsetTop;\r\n const optionBottom = optionTop + markedOption.offsetHeight;\r\n if (optionTop < containerTop) {\r\n optionsContainer.scrollTop = optionTop - 40; // 40px do elemento Search\r\n } else if (optionBottom > containerBottom) {\r\n optionsContainer.scrollTop = optionBottom - optionsContainer.clientHeight;\r\n }\r\n }\r\n }, 1);\r\n }\r\n\r\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div #triggerElement class=\"fieldField FieldAutoComplete\">\r\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\">\r\n\t\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\r\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\r\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t\t[style]=\"campo()?.style\" (keyup)=\"markKey($event)\" (keydown.tab)=\"closeOverlay()\" [class.outlined]=\"true\"\r\n\t\t\t\t\t\t[class.input]=\"true\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>\r\n\r\n<div #optionsContainer class=\"select-options-container\" [class.open]=\"isOpenedOptions()\"\r\n\t[style.left]=\"menuPosition().left\" [style.top]=\"menuPosition().top\">\r\n\t@if(isOpenedOptions()) {\r\n\t<div class=\"options-list\">\r\n\t\t@for(option of optionsFiltered(); track option.k) {\r\n\t\t<div class=\"option-item\" [class.selected]=\"option.selected\" [style.width.px]=\"offsetWidth()\" [title]=\"option.v\"\r\n\t\t\t(click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\r\n\t\t\t[class.choosing]=\"option.choosing\">\r\n\t\t\t<div class=\"option-item-check\"></div>\r\n\t\t\t<div class=\"option-item-text\" [innerHTML]=\"option.html\"></div>\r\n\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\t}\r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\nimport { LOG } from '../../util/util';\r\n\r\n@Component({\r\n selector: 'fields-button',\r\n templateUrl: './button.html',\r\n styleUrls: ['../fields.css', './button.css'],\r\n imports: [UiButton, UiListErrors]\r\n})\r\nexport class FieldsButton extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onClickButton(ev: Event) {\r\n this.tocarCampo();\r\n if (this.campo()?.onClick) {\r\n try {\r\n this.campo()?.onClick?.(this.form());\r\n } catch (err) {\r\n LOG(1, '❌ Erro ao executar onClick do botão:', err);\r\n }\r\n }\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo ?? ' ' }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldButton\">\r\n\t\t\t\t<ui-button [tipo]=\"campo()?.tipoBotao\" [tema]=\"campo()?.tema\" [style]=\"campo()?.style\"\r\n\t\t\t\t\t(click)=\"onClickButton($event)\" [disabled]=\"campo()?.disabled\" [icone]=\"campo()?.icone\">\r\n\t\t\t\t\t<div [innerHTML]=\"campo()?.tituloClicavel\"></div>\r\n\t\t\t\t</ui-button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect, signal } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiCheckBox } from \"../../elements/ui-check-box/ui-check-box\";\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-checkbox',\r\n templateUrl: './checkbox.html',\r\n styleUrls: ['../fields.css', './checkbox.css'],\r\n imports: [UiCheckBox, UiListErrors],\r\n})\r\nexport class FieldsCheckbox extends BaseFieldsForm {\r\n\r\n signalFocus = signal<boolean>(false);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onChange(newValue: boolean) {\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let val = this.value();\r\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\r\n }\r\n\r\n toogleAtivo() {\r\n this.onChange(!this.value());\r\n this.signalFocus.set(true);\r\n setTimeout(() => {\r\n this.signalFocus.set(false);\r\n }, 1)\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldCheckbox microPos4\">\r\n\t\t\t\t<ui-check-box [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-check-box>\r\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\r\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\r\n\t\t\t\t\tcampo()?.tituloClicavel) }}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, computed, input } from '@angular/core';\r\nimport { LibUtil } from '../../../util/util';\r\n\r\n@Component({\r\n selector: 'field-color-circulocolorido',\r\n templateUrl: './circulocolorido.html',\r\n styleUrls: ['./circulocolorido.css'],\r\n})\r\nexport class CirculoColorido {\r\n\r\n valor = input<string | number | null>(null);\r\n\r\n angle = computed<number | null>(() => {\r\n let angle = this.valor();\r\n if (!angle) return null;\r\n if (LibUtil.classof(angle) === 'string') {\r\n let num = Number(angle);\r\n if (isNaN(num)) return 0;\r\n angle = num;\r\n }\r\n return angle as number | null;\r\n });\r\n\r\n}\r\n","<div class=\"container\" [style.--atualColor]=\"angle()\">\r\n\t<div class=\"circulo {{ angle() != null ? 'show' : 'hide' }}\"></div>\r\n\t@if(angle() != null){\r\n\t<div class=\"arrow\" [style.--arrowAngle]=\"(angle()! - 47) + 'deg'\">\r\n\t\t<i class=\"bi bi-cursor-fill\"></i>\r\n\t</div>\r\n\t}\r\n</div>","import { Component, effect, OnInit } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { CirculoColorido } from './CirculoColorido/circulocolorido';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-color',\r\n templateUrl: './color.html',\r\n styleUrls: ['../fields.css', './color.css'],\r\n imports: [CirculoColorido, UiListErrors],\r\n})\r\nexport class FieldsColor extends BaseFieldsForm implements OnInit {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '' || val === 0;\r\n // if (val && LibUtil.classof(val) === 'number' && (val < 0 || val > 360)) {\r\n // errors = [...errors, Valide.msg.apenasEntre(0, 360)];\r\n // }\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n this.onInput(this.value(), false);\r\n }\r\n\r\n onInput(newValue: string, touch: boolean = true) {\r\n let num = Number(newValue);\r\n if (isNaN(num)) num = 0;\r\n this.updateValue(num, touch);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n onInputRange(event: any) {\r\n let num = Number(event.target.value);\r\n if (isNaN(num)) num = 0;\r\n if (num < 0) num = 0;\r\n if (num > 360) num = 360;\r\n this.updateValue(num);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<field-color-circulocolorido [valor]=\"value()\"></field-color-circulocolorido>\r\n\t\t<div class=\"fieldComRange\">\r\n\t\t\t<div class=\"fieldEffect\">\r\n\t\t\t\t<div class=\"fieldField FieldColor\">\r\n\t\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\r\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\r\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t\t[style]=\"campo()?.style\" min=\"0\" max=\"360\" [class.outlined]=\"true\" [class.input]=\"true\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<input type=\"range\" [value]=\"value() ?? 0\" (input)=\"onInputRange($event)\" min=\"0\" max=\"360\"\r\n\t\t\t\t[disabled]=\"campo()?.disabled\" (change)=\"onChangeEmit()\" />\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { LibUtil } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-date',\r\n templateUrl: './date.html',\r\n styleUrls: ['../fields.css'],\r\n imports: [UiListErrors],\r\n})\r\nexport class FieldsDate extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldDate\">\r\n\t\t\t\t<input type=\"date\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\r\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\r\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { LibUtil } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-datetime',\r\n templateUrl: './datetime.html',\r\n styleUrls: ['../fields.css'],\r\n imports: [UiListErrors],\r\n})\r\nexport class FieldsDatetime extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldDate\">\r\n\t\t\t\t<input type=\"datetime-local\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\r\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\r\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LibUtil } from './util';\r\n\r\n@Pipe({ name: 'jsonColorido' })\r\nexport class JsonColoridoPipe implements PipeTransform {\r\n\r\n\ttransform(value: any, args?: any): string {\r\n\t\treturn LibUtil.formatJson(value, true);\r\n\t}\r\n\r\n}\r\n","import { Component, computed, effect, inject, OnInit } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { LibUtil } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\nimport { JsonColoridoPipe } from '../../util/JsonColorido.pipe';\r\n\r\n@Component({\r\n selector: 'fields-display',\r\n templateUrl: './display.html',\r\n styleUrls: ['../fields.css', './display.css'],\r\n imports: [UiListErrors, JsonColoridoPipe],\r\n})\r\nexport class FieldsDisplay extends BaseFieldsForm {\r\n\r\n sanitizer = inject(DomSanitizer);\r\n\r\n // Importante:\r\n // - Este campo não é editável, então não tem onChange ou onInput.\r\n // - Este campo não deve entrar no estado Pendente. A exibição foi removida e o fundo foi deixado transparente.\r\n\r\n readonly displayValue = computed<SafeHtml>(() => {\r\n let value = this.value();\r\n if (this.campo()?.mask) value = LibUtil.mascarar(value, this.campo()?.mask) ?? '';\r\n if (LibUtil.classof(value) === 'boolean') {\r\n value = value ? 'Sim' : 'Não';\r\n }\r\n if (value == null) {\r\n value = '';\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isEmpty]=\"campo()?.empty\" (click)=\"onClickEmit()\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldDisplay\">\r\n\t\t\t\t@if(campo()?.classe == 'displayJson') {\r\n\t\t\t\t<pre class=\"p-2\" [innerHTML]=\"value() | jsonColorido\"></pre>\r\n\t\t\t\t}@else {\r\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [innerHTML]=\"displayValue()\"></div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, computed, effect, ElementRef, inject, OnInit, viewChild } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\r\nimport { LibUtil, LOG } from '../../util/util';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-editor',\r\n templateUrl: './editor.html',\r\n styleUrls: ['../fields.css', './editor.css'],\r\n imports: [UiButton, UiListErrors],\r\n})\r\nexport class FieldsEditor extends BaseFieldsForm implements OnInit {\r\n\r\n sanitizer = inject(DomSanitizer);\r\n editavel = viewChild('editavel', { read: ElementRef });\r\n\r\n iconeJustifyLeft = 'fa fa-align-left';//'bi bi-justify-left';\r\n iconeJustifyCenter = 'fa fa-align-center';//'bi bi-text-center';\r\n iconeJustifyRight = 'fa fa-align-right';//'bi bi-justify-right';\r\n iconeJustify = 'fa fa-align-justify';//'bi bi-justify';\r\n iconeNegrito = 'fa fa-bold';//'bi bi-type-bold';\r\n iconeItalico = 'fa fa-italic';//'bi bi-type-italic';\r\n iconeUnderline = 'fa fa-underline';//'bi bi-type-underline';\r\n iconeClearFormat = 'fa fa-eraser';//'bi bi-eraser';\r\n\r\n isNegrito: boolean = false;\r\n isItalico: boolean = false;\r\n isSublinhado: boolean = false;\r\n currentJustify: 'left' | 'center' | 'right' | null = null;\r\n\r\n safeValue = computed<SafeHtml>(() => {\r\n let value = this.value();\r\n if (value == null) {\r\n value = '';\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n this.inicializarEstados();\r\n }\r\n\r\n onInput(ev?: Event, cursorPosition?: { start: number; end: number, plus: number } | null) {\r\n if (this.campo()?.disabled) return;\r\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\r\n if (!eEditavel) return;\r\n let texto = eEditavel.innerHTML;\r\n if (!texto) return;\r\n\r\n // Salva a posição do cursor apenas quando o usuário está digitando\r\n if (cursorPosition === undefined) {\r\n cursorPosition = ev ? LibUtil.saveCursorPosition(eEditavel) : null;\r\n }\r\n\r\n // Converte <br> em [br]s para preservar quebras de linha\r\n texto = texto.replace(/<br>/g, '[br]');\r\n\r\n // Ao ocorrer mudança aqui, deve-se retirar todas as tags de hipertexto e depois aplicar apenas as que estão ativas.\r\n texto = LibUtil.removeHtmlTags(texto);\r\n\r\n // Restaura as quebras de linha\r\n texto = texto.replace(/\\[br\\]/g, '<br>');\r\n if (texto === \"<br>\") {\r\n texto = \"\";\r\n }\r\n\r\n if (this.isNegrito) {\r\n texto = `<b>${texto}</b>`;\r\n }\r\n if (this.isItalico) {\r\n texto = `<i>${texto}</i>`;\r\n }\r\n if (this.isSublinhado) {\r\n texto = `<u>${texto}</u>`;\r\n }\r\n if (this.currentJustify) {\r\n texto = `<div style=\"text-align: ${this.currentJustify};\">${texto}</div>`;\r\n }\r\n eEditavel.innerHTML = texto;\r\n\r\n if (cursorPosition) {\r\n LibUtil.restoreCursorPosition(eEditavel, cursorPosition);\r\n }\r\n\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n onChange() {\r\n if (this.campo()?.disabled) return;\r\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\r\n if (!eEditavel) return;\r\n\r\n let texto = eEditavel.innerHTML;\r\n this.updateValue(texto);\r\n\r\n this.onChangeEmit();\r\n }\r\n\r\n onDragEvent(dragEvent: DragEvent) {\r\n if (this.campo()?.disabled) return;\r\n const dataTransfer = dragEvent.dataTransfer;\r\n if (!dataTransfer) return;\r\n\r\n // Drag and Drop não é suportado.\r\n dragEvent.preventDefault();\r\n dragEvent.stopPropagation();\r\n const text = dataTransfer.getData('text/plain');\r\n LOG(1, \"Drag and Drop Text: \", text, dragEvent);\r\n }\r\n\r\n onNegrito() {\r\n if (this.campo()?.disabled) return;\r\n this.isNegrito = !this.isNegrito;\r\n this.onInput();\r\n this.onChange();\r\n }\r\n onItalico() {\r\n if (this.campo()?.disabled) return;\r\n this.isItalico = !this.isItalico;\r\n this.onInput();\r\n this.onChange();\r\n }\r\n onSublinhado() {\r\n if (this.campo()?.disabled) return;\r\n this.isSublinhado = !this.isSublinhado;\r\n this.onInput();\r\n this.onChange();\r\n }\r\n onJustify(direction: 'left' | 'center' | 'right') {\r\n if (this.campo()?.disabled) return;\r\n if (this.currentJustify === direction) {\r\n this.currentJustify = null;\r\n this.onInput();\r\n this.onChange();\r\n return;\r\n }\r\n this.currentJustify = direction;\r\n this.onInput();\r\n this.onChange();\r\n }\r\n\r\n\r\n onClearFormat() {\r\n if (this.campo()?.disabled) return;\r\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\r\n if (!eEditavel) return;\r\n let texto = eEditavel.innerHTML;\r\n if (!texto) return;\r\n\r\n this.currentJustify = null;\r\n this.isNegrito = false;\r\n this.isItalico = false;\r\n this.isSublinhado = false;\r\n\r\n texto = LibUtil.removeHtmlTags(texto);\r\n eEditavel.innerHTML = texto;\r\n this.onChange();\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n if (this.campo()?.disabled) return;\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n\r\n const eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\r\n if (!eEditavel) return;\r\n\r\n // Salva a posição do cursor\r\n const cursorPosition = LibUtil.saveCursorPosition(eEditavel, 1);\r\n\r\n // Insere uma quebra de linha (<br>) na posição do cursor\r\n const selection = window.getSelection();\r\n if (selection && selection.rangeCount > 0) {\r\n const range = selection.getRangeAt(0);\r\n range.deleteContents();\r\n\r\n const br = document.createElement('br');\r\n range.insertNode(br);\r\n\r\n // Move o cursor para depois do <br>\r\n range.setStartAfter(br);\r\n range.setEndAfter(br);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n\r\n this.onInput(undefined, cursorPosition);\r\n }\r\n }\r\n\r\n inicializarEstados() {\r\n let valor = this.value();\r\n if (typeof valor !== 'string' || !valor) return;\r\n valor = valor.toLowerCase();\r\n\r\n this.isNegrito = valor.includes('<b>') && valor.includes('</b>');\r\n this.isItalico = valor.includes('<i>') && valor.includes('</i>');\r\n this.isSublinhado = valor.includes('<u>') && valor.includes('</u>');\r\n if (valor.includes('text-align: left')) {\r\n this.currentJustify = 'left';\r\n } else if (valor.includes('text-align: center')) {\r\n this.currentJustify = 'center';\r\n } else if (valor.includes('text-align: right')) {\r\n this.currentJustify = 'right';\r\n }\r\n }\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField fieldEditor\">\r\n\t\t\t\t@if(campo()?.showToolbar !== false) {\r\n\t\t\t\t<div class=\"toolbar\">\r\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isNegrito\" [disabled]=\"campo()?.disabled\"\r\n\t\t\t\t\t\t(click)=\"onNegrito()\" [icone]=\"iconeNegrito\"></ui-button>\r\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isItalico\" [disabled]=\"campo()?.disabled\"\r\n\t\t\t\t\t\t(click)=\"onItalico()\" [icone]=\"iconeItalico\"></ui-button>\r\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isSublinhado\"\r\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onSublinhado()\" [icone]=\"iconeUnderline\"></ui-button>\r\n\r\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone espaco\" [class.ativo]=\"currentJustify === 'left'\"\r\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('left')\" [icone]=\"iconeJustifyLeft\"></ui-button>\r\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'center'\"\r\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('center')\" [icone]=\"iconeJustifyCenter\"></ui-button>\r\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'right'\"\r\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('right')\" [icone]=\"iconeJustifyRight\"></ui-button>\r\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [disabled]=\"campo()?.disabled\" (click)=\"onClearFormat()\"\r\n\t\t\t\t\t\t[icone]=\"iconeClearFormat\"></ui-button>\r\n\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t\t<div #editavel [class.corpo]=\"true\" [contentEditable]=\"!campo()?.disabled && !campo()?.readonly\"\r\n\t\t\t\t\t[class]=\"campo()?.classe\" [style]=\"campo()?.style\" (input)=\"onInput($event)\" [innerHTML]=\"safeValue()\"\r\n\t\t\t\t\t(blur)=\"onChange()\" (drop)=\"onDragEvent($event)\" (keydown)=\"onKeyDown($event)\"></div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { LibUtil } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-email',\r\n templateUrl: './email.html',\r\n styleUrls: ['../fields.css'],\r\n imports: [UiListErrors],\r\n})\r\nexport class FieldsEmail extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldEmail\">\r\n\t\t\t\t<input type=\"email\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\r\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\r\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\n\r\n@Component({\r\n selector: 'fields-hidden',\r\n templateUrl: './hidden.html',\r\n styles: `.fieldHidden{display: none;}`\r\n})\r\nexport class FieldsHidden extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n}\r\n","<div class=\"fieldHidden\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"></div>","import { Component, effect } from '@angular/core';\r\nimport { LibUtil } from '../../util/util';\r\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-icon',\r\n templateUrl: './icon.html',\r\n styleUrls: ['../fields.css', './icon.css'],\r\n imports: [UiButton, UiListErrors]\r\n})\r\nexport class FieldsIcon extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<ui-button tipo=\"raised\" tema=\"secondary\" (clicked)=\"onClickEmit()\" [disabled]=\"campo()?.disabled\"\r\n\t\t\t[style.width.px]=\"100\">\r\n\t\t\t@if(value()){\r\n\t\t\t<i [class]=\"value()\" [style.fontSize]=\"'25px'\"></i>\r\n\t\t\t}@else {\r\n\t\t\t<div class=\"noIcon\">ICO</div>\r\n\t\t\t}\r\n\t\t</ui-button>\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldIconType\">\r\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\r\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\r\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { AfterViewInit, Component, effect, ElementRef, viewChild } from '@angular/core';\r\nimport { LibUtil, LOG } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\ninterface ICode {\r\n [key: string]: string;\r\n}\r\n\r\n@Component({\r\n selector: 'fields-multifactor',\r\n templateUrl: './multifactor.html',\r\n styleUrls: ['../fields.css', './multifactor.css'],\r\n imports: [UiListErrors],\r\n})\r\nexport class FieldsMultifactor extends BaseFieldsForm implements AfterViewInit {\r\n\r\n code: ICode = {};\r\n controle = viewChild('controle', { read: ElementRef });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n if (this.campo()?.autofocus && this.controle()?.nativeElement) {\r\n this.controle()?.nativeElement.focus();\r\n }\r\n }, 100);\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n\r\n onInputChar(ev: Event) {\r\n let e = (ev.target as HTMLInputElement);\r\n let v = e.value;\r\n let name = e.name;\r\n let order = \"abcdef\";\r\n let nextInputName: String = \"b\";\r\n let isLast = false;\r\n\r\n if (v && v != \"\" && \"0123456789\".includes(v)) {\r\n // Só seta no objeto se for válido\r\n this.code[name] = v;\r\n // Identificar próximo campo\r\n nextInputName = order.charAt(order.indexOf(name) + 1);\r\n // Tentativa de focar próximo elemento\r\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\r\n if (nextE) {\r\n nextE.focus();\r\n } else {\r\n isLast = true;\r\n }\r\n } else {\r\n e.value = \"\";\r\n delete this.code[name];\r\n }\r\n\r\n // Seta valor do campo de forma ordenada\r\n let novoValor = Object.values(Object.fromEntries(Object.entries(this.code).sort())).join(\"\");\r\n this.updateValue(novoValor);\r\n\r\n // Verifica se completou\r\n if (this.campo()?.onComplete && novoValor.length == 6 && isLast) {\r\n try {\r\n this.campo()?.onComplete?.(this.form(), novoValor);\r\n this.onChangeEmit();\r\n } catch (err) {\r\n LOG(1, `❌ Erro ao executar onMatch do campo '${this.name.toString()}'`, err);\r\n }\r\n }\r\n }\r\n\r\n onKeyUp(ev: KeyboardEvent) {\r\n let key = ev.key;\r\n let e = (ev.target as HTMLInputElement);\r\n let v = e.value;\r\n if (e && v == \"\" && key == \"Backspace\") {\r\n let order = \"abcdef\";\r\n let indexOf = order.indexOf(e.name);\r\n let nextInputName: String = order.charAt(indexOf - 1);\r\n // Tentativa de focar próximo elemento\r\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\r\n if (nextE) {\r\n if (nextE.value != \"\") {\r\n nextE.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n onFocus(ev: Event) {\r\n (ev.target as HTMLInputElement)?.select();\r\n }\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldMultifactor\">\r\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" [name]=\"campo()?.prop\"\r\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t[style]=\"campo()?.style\" [hidden]=\"true\" [readOnly]=\"true\" />\r\n\r\n\t\t\t\t<div class=\"gridFactor\">\r\n\t\t\t\t\t<input #controle class=\"fieldSingleInput\" name=\"a\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\r\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\r\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\r\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"b\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\r\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\r\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\r\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"c\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\r\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\r\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\r\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"d\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\r\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\r\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\r\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"e\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\r\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\r\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\r\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"f\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\r\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\r\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect, OnInit } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-multitext',\r\n templateUrl: './multitext.html',\r\n styleUrls: ['../fields.css', './multitext.css'],\r\n imports: [UiButton, UiListErrors],\r\n})\r\nexport class FieldsMultiText extends BaseFieldsForm implements OnInit {\r\n\r\n items: string[] | null = [];\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\r\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n let value = this.value();\r\n if (value && Array.isArray(value)) this.items = value ?? [];\r\n else this.items = [];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.updateValue(this.items ?? [], false);\r\n }\r\n\r\n onInput(newValue: string) {\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n onClickAddItem() {\r\n let value = \"\";\r\n if (!this.items) this.items = [];\r\n this.items = [...this.items, value];\r\n this.updateValue(this.items);\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n\r\n setTimeout(() => {\r\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\r\n if (allInputs && allInputs.length > 0) {\r\n allInputs[allInputs.length - 1].focus();\r\n }\r\n }, 1);\r\n }\r\n\r\n onClickDelItem(index: number) {\r\n this.items = this.items?.filter((v, i) => i != index) ?? [];\r\n if (this.items && this.items?.length <= 0) this.items = [];\r\n this.updateValue(this.items);\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n _onLocalInput(value: string, index: number) {\r\n if (this.items) this.items[index] = value;\r\n this.updateValue(this.items);\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldMultiText\">\r\n\t\t\t\t@if(campo()?.showHeader){\r\n\t\t\t\t<div>Itens</div>\r\n\t\t\t\t<div class=\"action\"></div>\r\n\t\t\t\t}\r\n\t\t\t\t@for (item of items; track $index) {\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<input type=\"text\" [value]=\"item\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\r\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\r\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\r\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInput($event.target.value, $index)\" />\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"action\">\r\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\r\n\t\t\t\t\t\ticone=\"bi bi-trash\">\r\n\t\t\t\t\t</ui-button>\r\n\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t\t<div class=\"add\">\r\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\r\n\t\t\t\t\t\ticone=\"bi bi-plus-circle\">\r\n\t\t\t\t\t\tAdicionar Linha\r\n\t\t\t\t\t</ui-button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { LibUtil } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-number',\r\n templateUrl: './number.html',\r\n styleUrls: ['../fields.css'],\r\n imports: [UiListErrors],\r\n})\r\nexport class FieldsNumber extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '' || val === 0;\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.onInput(this.value(), false);\r\n }\r\n\r\n onInput(newValue: string, touch: boolean = true) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n let num = parseFloat(newValue);\r\n if (isNaN(num)) num = 0;\r\n this.updateValue(num, touch);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldText\">\r\n\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\r\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\r\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t[style]=\"campo()?.style\" [readOnly]=\"campo()?.readonly ?? false\" [class.outlined]=\"true\"\r\n\t\t\t\t\t[class.input]=\"true\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect, signal } from '@angular/core';\r\nimport { LibUtil } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-password',\r\n templateUrl: './password.html',\r\n styleUrls: ['../fields.css'],\r\n imports: [UiButton, UiListErrors],\r\n})\r\nexport class FieldsPassword extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n // Exibir e Ocultar Senha\r\n hide = signal(true);\r\n _aoClicarVerSenha(event: MouseEvent) {\r\n this.hide.set(!this.hide());\r\n event.stopPropagation();\r\n }\r\n}\r\n\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldPassword\">\r\n\t\t\t\t<input [type]=\"hide() ? 'password' : 'text'\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\r\n\t\t\t\t\t(change)=\"onChangeEmit()\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\r\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\r\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.outlined]=\"true\"\r\n\t\t\t\t\t[class.input]=\"true\" />\r\n\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"_aoClicarVerSenha($event)\" aria-label=\"Oculta ou Exibe Senha\"\r\n\t\t\t\t\ttitle=\"Oculta ou Exibe Senha\" [aria-pressed]=\"hide()\"><i\r\n\t\t\t\t\t\t[class]=\"hide() ? 'bi bi-eye-slash-fill' : 'bi bi-eye-fill'\"></i></ui-button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, computed, effect, ElementRef, viewChild } from '@angular/core';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\nimport { UiProcurar } from \"../../elements/ui-procurar/ui-procurar\";\r\nimport { LibUtil } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\n\r\n@Component({\r\n selector: 'fields-search',\r\n templateUrl: './search.html',\r\n styleUrls: ['../fields.css', './search.css'],\r\n imports: [UiListErrors, UiProcurar],\r\n})\r\nexport class FieldsSearch extends BaseFieldsForm {\r\n\r\n readonly searchInput = viewChild<ElementRef>('searchInput');\r\n\r\n isCollapsed = computed(() => this.campo()?.isCollapsed?.() ?? false);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n // Limpa o filtro de opções\r\n onClearSearch() {\r\n this.updateValue(\"\");\r\n this.focusSearchInput();\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n focusSearchInput() {\r\n this.searchInput()?.nativeElement?.focus();\r\n }\r\n\r\n onClickSearchIcon() {\r\n this.focusSearchInput();\r\n this.onChangeEmit();\r\n }\r\n\r\n onSearch() {\r\n this.onChangeEmit();\r\n }\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"\r\n\t[class.isCollapsed]=\"isCollapsed()\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldSearch\">\r\n\t\t\t\t<ui-procurar [value]=\"value()\" [name]=\"campo()?.prop\" (inputed)=\"onInput($event)\" (changed)=\"onChangeEmit()\"\r\n\t\t\t\t\t[colapsed]=\"isCollapsed()\" [disabled]=\"campo()?.disabled\"\r\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? 'Procurar...'\"></ui-procurar>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, computed, effect, OnInit, signal } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiSelect } from '../../elements/ui-select/ui-select';\r\nimport { IOptionValue } from '../../elements/ui-select/ui-select';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\nimport { LOG } from '../../util/util';\r\n\r\n\r\n@Component({\r\n selector: 'fields-select',\r\n templateUrl: './select.html',\r\n styleUrls: ['../fields.css', './select.css'],\r\n imports: [UiSelect, UiListErrors],\r\n})\r\nexport class FieldsSelect extends BaseFieldsForm {\r\n\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n // Um Refill pode estar em andamento enquanto este componente é iniciado.\r\n // Utilize o campo.mapear ou campo.refill para alterar o comportamento do refill inicial.\r\n\r\n\r\n fieldOptions = computed(() => {\r\n return this.campo()?.options?.() ?? [];\r\n });\r\n\r\n\r\n // Manipula mudança de valor (valueOfK não chegará nulo ou undefined)\r\n onChange(optionValue: IOptionValue) {\r\n let newValue: any = optionValue.keys;\r\n\r\n if (this.campo()?.onMatchOption && optionValue.optionChanged) {\r\n try {\r\n this.campo()?.onMatchOption?.(this.form(), optionValue.optionChanged);\r\n } catch (err) {\r\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name()}'`, err);\r\n }\r\n }\r\n\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldSelect\">\r\n\t\t\t\t<ui-select [value]=\"this.value()\" [options]=\"fieldOptions()\" (changed)=\"onChange($event)\"\r\n\t\t\t\t\t[multiple]=\"this.campo()?.multiple ?? false\" [name]=\"this.campo()?.prop\" [textEmpty]=\"this.campo()?.textEmpty\"\r\n\t\t\t\t\t[canUnselect]=\"campo()?.canUnselect\"></ui-select>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { AfterViewInit, Component, effect, signal } from '@angular/core';\r\nimport { UiSlide } from '../../elements/ui-slide/ui-slide';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-slide',\r\n templateUrl: './slide.html',\r\n styleUrls: ['../fields.css', './slide.css'],\r\n imports: [UiSlide, UiListErrors],\r\n})\r\nexport class FieldsSlide extends BaseFieldsForm implements AfterViewInit {\r\n\r\n signalFocus = signal<boolean>(false);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onChange(newValue: boolean) {\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let val = this.value();\r\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\r\n }\r\n\r\n toogleAtivo() {\r\n this.onChange(!this.value());\r\n this.signalFocus.set(true);\r\n setTimeout(() => {\r\n this.signalFocus.set(false);\r\n }, 1)\r\n }\r\n\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldSlide microPos4\">\r\n\t\t\t\t<ui-slide [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-slide>\r\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\r\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\r\n\t\t\t\t\tcampo()?.tituloClicavel) }}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { LibUtil } from '../../util/util';\r\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\r\n\r\n@Component({\r\n selector: 'fields-text',\r\n templateUrl: './text.html',\r\n styleUrls: ['../fields.css'],\r\n imports: [UiListErrors]\r\n})\r\nexport class FieldsText extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldText\">\r\n\t\t\t\t<input type=\"text\" [value]=\"value() ?? ''\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\r\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\r\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, computed, effect, ElementRef, OnInit, signal, viewChild } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { LibUtil, LOG } from '../../util/util';\r\nimport { UiDropZone } from '../../elements/ui-drop-zone/ui-drop-zone';\r\nimport { IDropOutput, IFileMetadata } from '../../interfaces/interfaces';\r\nimport { UiFileList } from '../../elements/ui-file-list/ui-file-list';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-upload',\r\n templateUrl: './upload.html',\r\n styleUrls: ['../fields.css', './upload.css'],\r\n imports: [UiDropZone, UiFileList, UiListErrors],\r\n})\r\nexport class FieldsUpload extends BaseFieldsForm implements OnInit {\r\n\r\n multiple: boolean = false;\r\n inputFile = viewChild('inputFile', { read: ElementRef })\r\n acceptFormats: string = \"\";\r\n sobrepondo = signal<boolean>(true);\r\n\r\n acceptFormatsShow = computed<string>(() => {\r\n return this.acceptFormats.split(',').map(ext => ext.trim().toUpperCase().slice(1)).join(', ');\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n this.sobrepondo.set(empty);\r\n });\r\n }\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n this.multiple = this.campo()?.multiple ?? false;\r\n this.acceptFormats = this.campo()?.accept ?? \"\";\r\n }\r\n\r\n onChange(newValue: IFileMetadata[]) {\r\n let campo = this.campo();\r\n if (!campo) return;\r\n if (campo.disabled) return;\r\n // Filtra apenas os arquivos válidos\r\n newValue = newValue.filter(file => this.validarImagem(file));\r\n // Atualiza o valor do campo\r\n let valueToUpdate: any = this.multiple ? newValue : newValue[newValue.length - 1];\r\n this.updateValue(valueToUpdate);\r\n\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n filesList = computed<IFileMetadata[]>(() => {\r\n let val = (this.value() as IFileMetadata[] | IFileMetadata | string | undefined);\r\n if (this.multiple) {\r\n // Quando é multiplo, ja vem um array.\r\n return val as IFileMetadata[];\r\n } else {\r\n // Quando não é multiplo, vem um objeto, mas precisa ser tratado como array.\r\n if (val && val !== '') {\r\n return [val as IFileMetadata];\r\n } else {\r\n return [];\r\n }\r\n }\r\n });\r\n\r\n // Adiciona arquivos recebidos do DropZone\r\n onDropped(content: IDropOutput) {\r\n if (this.campo()?.disabled) return;\r\n if (content.tipo !== \"file\" || !content.data || !(content.data instanceof Array)) return;\r\n let dataFiles: IFileMetadata[] = content.data;\r\n this.onAddFile(dataFiles);\r\n }\r\n\r\n // Remove arquivo da lista\r\n onRemove(file: IFileMetadata) {\r\n if (this.campo()?.disabled) return;\r\n let currentFiles = this.filesList();\r\n const index = currentFiles.findIndex(f => f.size === file.size);\r\n if (index > -1) {\r\n currentFiles.splice(index, 1);\r\n this.onChange(currentFiles);\r\n }\r\n }\r\n\r\n onAddFile(newFiles: IFileMetadata[]) {\r\n if (this.campo()?.disabled) return;\r\n let newValues: IFileMetadata[] = [];\r\n if (this.multiple) {\r\n newValues = [\r\n ...this.filesList() ?? [],\r\n ...newFiles,\r\n ];\r\n } else {\r\n newValues = newFiles.slice(-1);\r\n }\r\n this.onChange(newValues);\r\n }\r\n\r\n async onChangedInputFile(ev: Event) {\r\n if (this.campo()?.disabled) return;\r\n const inputElement = ev.target as HTMLInputElement;\r\n if (inputElement.files && inputElement.files.length > 0) {\r\n for await (let newFile of inputElement.files) {\r\n let lastIndexOf = newFile.name.lastIndexOf(\".\");\r\n let extension = newFile.name.slice(lastIndexOf);\r\n let base64: string | null = await LibUtil.fileReader(newFile);\r\n if (!base64) { LOG(1, `❌ Ocorreu um erro com o arquivo ${newFile.name}.`); continue; }\r\n this.onAddFile([{\r\n base64,\r\n name: newFile.name,\r\n size: newFile.size,\r\n extension, // inclui o \".\"\r\n type: newFile.type,\r\n lastModifiedIso: new Date(newFile.lastModified).toISOString(),\r\n }]);\r\n }\r\n inputElement.value = '';\r\n }\r\n }\r\n\r\n validarImagem(file: IFileMetadata): boolean {\r\n if (!file.extension) return false;\r\n const validExtensions = this.acceptFormats.split(',').map(ext => ext.trim().toLowerCase());\r\n return validExtensions.includes(file.extension.toLowerCase());\r\n }\r\n\r\n onClickUpload() {\r\n // Se o alvo do click for mesmo o elemento dropzone (CSS ignora alguns elementos)\r\n if (this.inputFile() && this.inputFile()?.nativeElement) {\r\n this.inputFile()?.nativeElement.click();\r\n }\r\n }\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldUpload\">\r\n\r\n\t\t\t\t<ui-drop-zone (changed)=\"onDropped($event)\" [disabled]=\"campo()?.disabled\" (clicked)=\"onClickUpload()\"\r\n\t\t\t\t\t[sobrepor]=\"sobrepondo()\">\r\n\t\t\t\t\t@if(filesList().length > 0) {\r\n\r\n\t\t\t\t\t<ui-file-list [filesList]=\"filesList()\" (remove)=\"onRemove($event)\"\r\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\"></ui-file-list>\r\n\r\n\t\t\t\t\t} @else {\r\n\r\n\t\t\t\t\t<div class=\"fieldDidplayUpload\">\r\n\t\t\t\t\t\t<i class=\"bi bi-cloud-upload-fill\"></i>\r\n\t\t\t\t\t\t<div class=\"f-s-16\"><span class=\"text-primary\">Solte</span> seu arquivo aqui</div>\r\n\t\t\t\t\t\t<div class=\"f-s-14\"><span class=\"text-primary\">ou clique</span> para procurar</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t</ui-drop-zone>\r\n\r\n\t\t\t\t<div [style.display]=\"'none'\">\r\n\t\t\t\t\t<input #inputFile type=\"file\" [accept]=\"acceptFormats\" [multiple]=\"campo()?.multiple\"\r\n\t\t\t\t\t\t(change)=\"onChangedInputFile($event)\" [disabled]=\"campo()?.disabled\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t@if(acceptFormats){\r\n\t<div class=\"dica\">Formatos: {{ acceptFormatsShow() }}</div>\r\n\t}\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { LibUtil } from '../../util/util';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\n\r\n@Component({\r\n selector: 'fields-time',\r\n templateUrl: './time.html',\r\n styleUrls: ['../fields.css'],\r\n imports: [UiListErrors],\r\n})\r\nexport class FieldsTime extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onInput(newValue: string) {\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldTime\">\r\n\t\t\t\t<input type=\"time\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\r\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\r\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\r\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { LibUtil } from '../../util/util';\r\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\r\n\r\n@Component({\r\n selector: 'fields-textarea',\r\n templateUrl: './textarea.html',\r\n styleUrls: ['../fields.css', './textarea.css'],\r\n imports: [UiListErrors]\r\n})\r\nexport class FieldsTextarea extends BaseFieldsForm {\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n onInput(event: Event) {\r\n let newValue = (event.target as HTMLTextAreaElement).value;\r\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\r\n this.updateValue(newValue);\r\n this.campo()?.onInput?.(this.form());\r\n\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldTextArea\">\r\n\t\t\t\t<textarea [value]=\"value()\" (input)=\"onInput($event)\" (change)=\"onChangeEmit()\" [name]=\"campo()?.prop\"\r\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [attr.maxLength]=\"campo()?.maxl\"\r\n\t\t\t\t\t[attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [class.outlined]=\"true\"\r\n\t\t\t\t\t[rows]=\"campo()?.rows ?? 5\" [cols]=\"campo()?.cols\" [attr.readonly]=\"campo()?.readonly ? true : null\"\r\n\t\t\t\t\t[class.input]=\"true\"></textarea>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { Component, effect, OnInit } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\r\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\r\nimport { IKV } from '../../interfaces/interfaces';\r\n\r\n@Component({\r\n selector: 'fields-multikv',\r\n templateUrl: './multikv.html',\r\n styleUrls: ['../fields.css', './multikv.css'],\r\n imports: [UiButton, UiListErrors],\r\n})\r\nexport class FieldsMultiKV extends BaseFieldsForm implements OnInit {\r\n\r\n // Componente para adicionar ou retirar itens em forma KV (Como usado nos seletores)\r\n items: IKV[] | null = [];\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const val = this.value();\r\n let empty = val === null || val === undefined || val === '';\r\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\r\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\r\n this.updateCampo({ empty });\r\n });\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n let value = this.value();\r\n if (value && Array.isArray(value)) this.items = value ?? [];\r\n else this.items = [];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.updateValue(this.items ?? [], false);\r\n }\r\n\r\n onClickAddItem() {\r\n let value: IKV = this.campo()?.value ?? { k: \"\", v: \"\" };\r\n if (!this.items) this.items = [];\r\n this.items = [...this.items, value];\r\n this.updateValue(this.items);\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n\r\n setTimeout(() => {\r\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\r\n if (allInputs && allInputs.length > 0) {\r\n allInputs[allInputs.length - 1].focus();\r\n }\r\n }, 1);\r\n }\r\n\r\n onClickDelItem(index: number) {\r\n this.items = this.items?.filter((v, i) => i != index) ?? [];\r\n if (this.items && this.items?.length <= 0) this.items = [];\r\n this.updateValue(this.items);\r\n this.campo()?.onInput?.(this.form());\r\n this.onChangeEmit();\r\n }\r\n\r\n _onLocalInputK(key: string, index: number) {\r\n if (this.items) this.items[index].k = key;\r\n this.updateValue(this.items);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n _onLocalInputV(value: string, index: number) {\r\n if (this.items) this.items[index].v = value;\r\n this.updateValue(this.items);\r\n this.campo()?.onInput?.(this.form());\r\n }\r\n\r\n _onLocalChangeK(key: string, index: number) {\r\n if (this.items) this.items[index].k = key;\r\n this.updateValue(this.items);\r\n this.onChangeEmit();\r\n }\r\n\r\n _onLocalChangeV(value: string, index: number) {\r\n if (this.items) this.items[index].v = value;\r\n this.updateValue(this.items);\r\n this.onChangeEmit();\r\n }\r\n\r\n}\r\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\r\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\r\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\r\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\r\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\r\n\t\t{{ campo()?.titulo }}\r\n\t</div>\r\n\t<div class=\"fieldControl doCampo\">\r\n\t\t<div class=\"fieldEffect\">\r\n\t\t\t<div class=\"fieldField FieldMultiKv\">\r\n\t\t\t\t@if(campo()?.showHeader != false){\r\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloChave ?? 'Chaves'}}</div>\r\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloValor ?? 'Valores'}}</div>\r\n\t\t\t\t<div class=\"header action\"></div>\r\n\t\t\t\t}\r\n\t\t\t\t@for (item of items; track $index) {\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<input type=\"text\" [value]=\"item.k\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\r\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\r\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\r\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputK($event.target.value, $index)\"\r\n\t\t\t\t\t\t(change)=\"_onLocalChangeK($event.target.value, $index)\" />\r\n\t\t\t\t</div>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<input type=\"text\" [value]=\"item.v\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\r\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\r\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\r\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputV($event.target.value, $index)\"\r\n\t\t\t\t\t\t(change)=\"_onLocalChangeV($event.target.value, $index)\" />\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"action\">\r\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\r\n\t\t\t\t\t\ticone=\"bi bi-trash\">\r\n\t\t\t\t\t</ui-button>\r\n\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t\t<div class=\"add\">\r\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\r\n\t\t\t\t\t\ticone=\"bi bi-plus-circle\">\r\n\t\t\t\t\t\tAdicionar Linha\r\n\t\t\t\t\t</ui-button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\r\n</div>","import { NgComponentOutlet } from '@angular/common';\r\nimport { Component, computed } from '@angular/core';\r\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\r\n\r\nimport { FieldsAutocomplete } from '../autocomplete/autocomplete';\r\nimport { FieldsButton } from \"../button/button\";\r\nimport { FieldsCheckbox } from '../checkbox/checkbox';\r\nimport { FieldsColor } from '../color/color';\r\nimport { FieldsDate } from '../date/date';\r\nimport { FieldsDatetime } from '../datetime/datetime';\r\nimport { FieldsDisplay } from '../display/display';\r\nimport { FieldsEditor } from '../editor/editor';\r\nimport { FieldsEmail } from '../email/email';\r\nimport { FieldsHidden } from '../hidden/hidden';\r\nimport { FieldsIcon } from '../icon/icon';\r\nimport { FieldsMultifactor } from '../multifactor/multifactor';\r\nimport { FieldsMultiText } from '../multitext/multitext';\r\nimport { FieldsNumber } from '../number/number';\r\nimport { FieldsPassword } from '../password/password';\r\nimport { FieldsSearch } from '../search/search';\r\nimport { FieldsSelect } from '../select/select';\r\nimport { FieldsSlide } from '../slide/slide';\r\nimport { FieldsText } from '../text/text';\r\nimport { FieldsUpload } from '../upload/upload';\r\nimport { FieldsTime } from '../time/time';\r\nimport { FieldsTextarea } from '../textarea/textarea';\r\nimport { IField } from '../Formulario/Formulario';\r\nimport { FieldsMultiKV } from '../multikv/multikv';\r\n\r\n@Component({\r\n selector: 'fields-g',\r\n templateUrl: './generic.html',\r\n // styles: `:host.hidden {\r\n // display: none;\r\n // }`,\r\n imports: [NgComponentOutlet],\r\n})\r\nexport class FieldsGeneric extends BaseFieldsForm {\r\n\r\n readonly campos = computed(() => this.form().campos());\r\n\r\n // @HostBinding('class.hidden')\r\n // isHidden = false;\r\n\r\n // Mapeamento de tipos para componentes\r\n getComponentForType(tipo?: IField): any {\r\n // Tipo Hidden não exibe componente e coloca o host como hidden\r\n // if (tipo == IField.Hidden) {\r\n // this.isHidden = true;\r\n // return null;\r\n // }\r\n\r\n /************************************************\\\\\r\n // MAPA: Tipo de Campo - Componente Responsável \\\\\r\n //*************************************************/\r\n // Comente o campo caso haja algum problema de dependência circular ou outro...\r\n\r\n const FIELDS_MAP: Partial<Record<IField, any>> = {\r\n [IField.AutoComplete]: FieldsAutocomplete,\r\n [IField.Button]: FieldsButton,\r\n [IField.Checkbox]: FieldsCheckbox,\r\n [IField.Color]: FieldsColor,\r\n [IField.Date]: FieldsDate,\r\n [IField.DateTime]: FieldsDatetime,\r\n [IField.Display]: FieldsDisplay,\r\n [IField.Editor]: FieldsEditor,\r\n [IField.Email]: FieldsEmail,\r\n [IField.Hidden]: FieldsHidden,\r\n [IField.Icon]: FieldsIcon,\r\n [IField.MultiFactor]: FieldsMultifactor,\r\n [IField.MultiKV]: FieldsMultiKV,\r\n [IField.MultiText]: FieldsMultiText,\r\n [IField.Number]: FieldsNumber,\r\n [IField.Password]: FieldsPassword,\r\n [IField.Referencia]: FieldsDisplay,\r\n [IField.Search]: FieldsSearch,\r\n [IField.Select]: FieldsSelect,\r\n [IField.Slide]: FieldsSlide,\r\n [IField.Text]: FieldsText,\r\n [IField.Textarea]: FieldsTextarea,\r\n [IField.Time]: FieldsTime,\r\n [IField.Upload]: FieldsUpload,\r\n\r\n [IField.Custom]: this.campo()?.componente,\r\n }\r\n if (tipo) return FIELDS_MAP[tipo] || null;\r\n return null;\r\n }\r\n\r\n}\r\n\r\n","@if (getComponentForType(campo() ? campo()?.tipo : undefined); as component) {\r\n<ng-container [ngComponentOutlet]=\"component\" [ngComponentOutletInputs]=\"{ form: this.form(), name: name() }\" />\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LibUtil } from './util';\r\n\r\n@Pipe({ name: 'classOf' })\r\nexport class ClassOfPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n return LibUtil.classof(value);\r\n }\r\n\r\n}\r\n","import { Component, computed, input, model, signal } from '@angular/core';\r\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\r\nimport { Formulario } from '../Formulario';\r\nimport { JsonColoridoPipe } from '../../../util/JsonColorido.pipe';\r\nimport { ClassOfPipe } from '../../../util/ClassOf.pipe';\r\nimport { LibUtil } from '../../../util/util';\r\n\r\n@Component({\r\n selector: 'ui-form-controls',\r\n templateUrl: './form-controls.html',\r\n styleUrls: ['./form-controls.css'],\r\n imports: [UiButton, JsonColoridoPipe, ClassOfPipe],\r\n})\r\nexport class FormControls {\r\n\r\n form = input.required<Formulario>();\r\n recebido = input<any>({});\r\n hasOutline = model<boolean>(false);\r\n faseIndex = input<number>(0);\r\n totalFases = input<number>(0);\r\n\r\n colapsed = signal(true);\r\n\r\n valoresOrdenados = computed(() => {\r\n let jsonValues: any = {};\r\n let formValues = this.form().values();\r\n if (LibUtil.classof(formValues) !== 'object') {\r\n return formValues;\r\n }\r\n let keys = Object.keys(formValues);\r\n keys.sort();\r\n for (let key of keys) {\r\n jsonValues[key] = formValues[key];\r\n }\r\n return jsonValues;\r\n });\r\n\r\n // CONTROLES\r\n copiar() {\r\n let values = LibUtil.formatJson(this.valoresOrdenados(), true)\r\n LibUtil.copy(values);\r\n }\r\n\r\n\r\n fullDisabled = signal(false);\r\n desativados() {\r\n this.fullDisabled.set(!this.fullDisabled());\r\n this.form().setDisabledAll(this.fullDisabled());\r\n }\r\n\r\n fullRequired = signal(false);\r\n obrigatorio() {\r\n this.fullRequired.set(!this.fullRequired());\r\n this.form().campos.update(c => {\r\n for (const key of Object.keys(c)) {\r\n c[key].need = this.fullRequired();\r\n }\r\n return c;\r\n });\r\n }\r\n\r\n fullPending = signal(false);\r\n pendentes() {\r\n this.fullPending.set(!this.fullPending());\r\n this.form().campos.update(c => {\r\n for (const key of Object.keys(c)) {\r\n c[key].pending = this.fullPending();\r\n }\r\n return c;\r\n });\r\n }\r\n\r\n fullTouched = signal(false);\r\n tocados() {\r\n this.fullTouched.set(!this.fullTouched());\r\n this.form().setTouchedAll(this.fullTouched());\r\n }\r\n\r\n forcarVazio() {\r\n this.form().setAllValuesTo('');\r\n }\r\n\r\n setarValInicio() {\r\n this.form().resetToStartValues();\r\n }\r\n\r\n setarValRecebido() {\r\n this.form().updateValues(this.recebido());\r\n }\r\n\r\n setOutline() {\r\n this.hasOutline.set(!this.hasOutline());\r\n this.form().showTouched.update(v => !v);\r\n }\r\n\r\n sanitizar() {\r\n this.form().sanitizar();\r\n }\r\n\r\n onlyAvailable() {\r\n this.form().onlyAvailable();\r\n }\r\n\r\n async validar() {\r\n await this.form().validar();\r\n }\r\n\r\n showingErrors = signal(false);\r\n changePreview() {\r\n this.showingErrors.set(!this.showingErrors());\r\n }\r\n\r\n errorsSetted = signal(false);\r\n setErrorAll() {\r\n this.errorsSetted.set(!this.errorsSetted());\r\n if (this.errorsSetted()) {\r\n this.form().setAllCamposPartial({ errors: ['Erro exemplo'] });\r\n } else {\r\n this.form().setAllCamposPartial({ errors: [] });\r\n }\r\n }\r\n}\r\n","<div class=\"areaFormControl\" [class.collapsed]=\"colapsed()\">\r\n\t<div class=\"areaValues barStatus\">\r\n\t\t<div class=\"f-s-e status\">\r\n\t\t\t<div class=\"statusItem f-s-12 f-t-b\" [title]=\"'Fases. Atual: ' + faseIndex() + '. Total: ' + totalFases()\"\r\n\t\t\t\t[class.ativo]=\"totalFases() > 1\" [class.inativo]=\"faseIndex() < 0 || faseIndex() > totalFases()\">\r\n\t\t\t\t@if(totalFases() > 1){\r\n\t\t\t\t<div class=\"f-s-e\">\r\n\t\t\t\t\t<div>A</div>\r\n\t\t\t\t\t<div>{{ faseIndex() }}</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"f-s-e\">\r\n\t\t\t\t\t<div>U</div>\r\n\t\t\t\t\t<div>{{ totalFases() - 1 }}</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t} @else {\r\n\t\t\t\t<i class=\"fa fa-list-check f-s-18\"></i>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().algumTocado()\" [class.inativo]=\"!form().algumTocado()\"\r\n\t\t\t\ttitle=\"Algum campo tocado\">\r\n\t\t\t\t<i class=\"fa fa-handshake f-s-20\"></i>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().valido()\" [class.inativo]=\"!form().valido()\"\r\n\t\t\t\ttitle=\"Todos campos Válidos\">\r\n\t\t\t\t<i class=\"bi bi-check2-all f-s-20\"></i>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().isEnviado\" [class.inativo]=\"!form().isEnviado\"\r\n\t\t\t\ttitle=\"Estado de Enviado\">\r\n\t\t\t\t<i class=\"bi bi-send-check f-s-18\"></i>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"divider barIcoCollapse\" (click)=\"colapsed.set(!colapsed())\">\r\n\t\t\t<i class=\"bi bi-caret-down\"></i>\r\n\t\t</div>\r\n\t\t<div class=\"f-s-e status\">\r\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"dados\" (click)=\"copiar()\" icone=\"bi bi-copy\"\r\n\t\t\t\ttitle=\"Copiar o JSON de valores\"></ui-button>\r\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"estado\" (click)=\"setOutline()\" [class.ativo]=\"hasOutline()\"\r\n\t\t\t\ticone=\"fa fa-border-top-left\" [title]=\"(hasOutline() ? 'Com' : 'Sem') +' Outline'\"></ui-button>\r\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"changePreview()\" [class.ativo]=\"showingErrors()\"\r\n\t\t\t\ticone=\"bi bi-exclamation-triangle\" [title]=\"showingErrors() ? 'Errors' : 'Values'\"></ui-button>\r\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"obrigatorio()\" [class.ativo]=\"fullRequired()\"\r\n\t\t\t\ticone=\"fa fa-file-circle-exclamation\" [title]=\"fullRequired() ? 'Obrigatório' : 'Liberado'\"></ui-button>\r\n\r\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"desativados()\" [class.ativo]=\"fullDisabled()\"\r\n\t\t\t\ticone=\"bi bi-person-fill-lock\" [title]=\"fullDisabled() ? 'Desativado' : 'Ativo'\"></ui-button>\r\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"pendentes()\" [class.ativo]=\"fullPending()\"\r\n\t\t\t\ticone=\"fa fa-clock-four\" [title]=\"fullPending() ? 'Pendente' : 'Sincronizado'\"></ui-button>\r\n\r\n\t\t</div>\r\n\t</div>\r\n\t@if(!colapsed()){\r\n\t<div class=\"formColtrols\">\r\n\t\t<div class=\"areaValues jsonArea\">\r\n\t\t\t@if(showingErrors()){\r\n\t\t\t<div>Erros do Formulário (Tipo: {{ form().listaErrors() | classOf }})</div>\r\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"form().listaErrors() | jsonColorido\"></pre>\r\n\t\t\t} @else {\r\n\t\t\t<div>Valor do Formulário (Tipo: {{ form().values() | classOf }})</div>\r\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"valoresOrdenados() | jsonColorido\"></pre>\r\n\t\t\t}\r\n\t\t</div>\r\n\t\t<div class=\"areaValues controls\">\r\n\r\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"sanitizar()\" icone=\"fa fa-quidditch-broom-ball\"\r\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão definidos para este formulário.\">\r\n\t\t\t\tSanitizar\r\n\t\t\t</ui-button>\r\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"onlyAvailable()\" icone=\"fa fa-power-off\"\r\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão disponíveis para este formulário.\">\r\n\t\t\t\tDisponíveis\r\n\t\t\t</ui-button>\r\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"validar()\" icone=\"bi bi-ui-checks\"\r\n\t\t\t\ttitle=\"Valida o formulário e seus campos.\">\r\n\t\t\t\tValidar\r\n\t\t\t</ui-button>\r\n\t\t\t<ui-button tipo=\"outlined\" tema=\"warning\" class=\"dados\" (click)=\"setarValRecebido()\"\r\n\t\t\t\ticone=\"fa fa-clock-rotate-left\" title=\"Seta os valores que foram recebidos no formulário.\">\r\n\t\t\t\tRecebido\r\n\t\t\t</ui-button>\r\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"forcarVazio()\" icone=\"bi bi-eraser-fill\"\r\n\t\t\t\ttitle=\"Limpa todos os valores do formulário.\">\r\n\t\t\t\tLimpar\r\n\t\t\t</ui-button>\r\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"setarValInicio()\" icone=\"bi bi-skip-backward\"\r\n\t\t\t\ttitle=\"Reseta os valores do formulário para os valores iniciais.\">\r\n\t\t\t\tReset\r\n\t\t\t</ui-button>\r\n\t\t\t<ui-button tipo=\"outlined\" tema=\"info\" class=\"dados\" (click)=\"tocados()\"\r\n\t\t\t\t[icone]=\"fullTouched() ? 'fa fa-handshake' : 'fa fa-handshake-slash'\"\r\n\t\t\t\ttitle=\"Marca todos os campos como tocados ou não tocados.\">\r\n\t\t\t\t{{ fullTouched() ? 'Tocados' : 'Tocar Todos' }}\r\n\t\t\t</ui-button>\r\n\r\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"estado\" (click)=\"setErrorAll()\"\r\n\t\t\t\t[class.ativo]=\"form().listaErrors().length > 0\"\r\n\t\t\t\t[icone]=\"form().listaErrors().length > 0 ? 'bi bi-exclamation-triangle' : 'bi bi-circle'\"\r\n\t\t\t\t[title]=\"form().listaErrors().length > 0 ? 'Erros adicionados' : 'Erros removidos'\">\r\n\t\t\t\t{{ form().listaErrors().length > 0 ? 'Erros Forçados' : 'Erros removidos' }}\r\n\t\t\t</ui-button>\r\n\r\n\t\t</div>\r\n\t</div>\r\n\t}\r\n</div>","import { Component, computed, input, model, output } from '@angular/core';\r\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\r\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\r\nimport { FieldsGeneric } from '../../generic/generic';\r\nimport { LibUtil } from '../../../util/util';\r\nimport { IKV } from '../../../interfaces/interfaces';\r\nimport { FormControls } from \"../form-controls/form-controls\";\r\nimport { IField, IFields } from '../Formulario';\r\n\r\n@Component({\r\n selector: 'fields-form-filter',\r\n templateUrl: './form-filter.html',\r\n styleUrl: './form-filter.css',\r\n imports: [UiButton, FieldsGeneric, FormControls],\r\n})\r\nexport class FormFilter<T> extends BaseFieldsValues<T> {\r\n\r\n async onSave() {\r\n // Não faz nada. \r\n return;\r\n }\r\n\r\n hasOutline = model<boolean>(false);\r\n filtrar = output<any>();\r\n actionTitle = input<string>('Aplicar Filtro');\r\n\r\n onFiltrar() {\r\n let valores = LibUtil.clonar(this.form.values());\r\n valores = LibUtil.limparObject(valores);\r\n this.filtrar.emit(valores);\r\n }\r\n\r\n kvPreenchido = computed(() => {\r\n let propriedades: IKV[] = [];\r\n let valores = this.values() as any;\r\n if (!valores) return propriedades;\r\n let campos = this.campos();\r\n for (const key of Object.keys(campos)) {\r\n let campo = campos[key];\r\n if (campo.tipo === IField.Hidden) continue;\r\n if (valores?.[key] != null && valores?.[key] !== '' && !(Array.isArray(valores?.[key]) && valores?.[key].length === 0)) {\r\n propriedades.push({ k: campo.prop, v: campo.titulo ?? String(campo.prop) });\r\n }\r\n }\r\n return propriedades;\r\n });\r\n\r\n onDeletePropriedade(k: string | number | null | undefined) {\r\n if (k == null) return;\r\n this.form.updateValues({ [k as keyof IFields<T>]: '' });\r\n this.onFiltrar();\r\n }\r\n}\r\n","<div class=\"filtrosAtivos\">\r\n\t@for ( item of kvPreenchido(); track $index) {\r\n\t<div>\r\n\t\t{{ item.v }}\r\n\t\t<ui-button tipo=\"icon\" tema=\"error\" icone=\"bi bi-x\" (click)=\"onDeletePropriedade(item.k)\">\r\n\t\t</ui-button>\r\n\t</div>\r\n\t}\r\n</div>\r\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\r\n\r\n\t@for (campo of form.listaCampos(); track $index) {\r\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\r\n\t}\r\n\r\n</div>\r\n<div class=\"buttonsGap\">\r\n\t<ui-button tipo=\"fill\" tema=\"primary\" icone=\"bi bi-funnel\" (click)=\"onFiltrar()\">{{ actionTitle() }}</ui-button>\r\n\t<ng-content></ng-content>\r\n</div>\r\n\r\n@if(showFormControls()){\r\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\r\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\r\n}","import { Component, computed, effect, input, model, OnInit, signal } from '@angular/core';\r\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\r\nimport { IFaseCampos, IFases, IFieldComponent } from '../Formulario';\r\nimport { LOG } from '../../../util/util';\r\n\r\n@Component({\r\n selector: 'ui-form-fase',\r\n templateUrl: './form-fase.html',\r\n styleUrls: ['./form-fase.css'],\r\n imports: [UiButton],\r\n})\r\nexport class FormFase implements OnInit {\r\n\r\n fases = model<IFases<any>>();\r\n campos = input<IFieldComponent<any>[]>();\r\n\r\n isDisabledVoltar = signal(true);\r\n isDisabledAvancar = signal(true);\r\n isFaseado = computed(() => {\r\n let fases = this.fases()?.fases;\r\n return fases !== undefined && fases.length > 1; // 1 é faseado mas não tem navegação, mais de 1 é faseado com navegação\r\n });\r\n fasesList = computed(() => {\r\n return this.fases()?.fases ?? [];\r\n });\r\n faseIndex = model<number>(0);\r\n fase_historico = signal<number[]>([0]);\r\n isLinear = computed(() => this.fases()?.isLinear ?? false);\r\n\r\n constructor() {\r\n effect(() => {\r\n let fases = this.fases()?.fases;\r\n if (fases == null) {\r\n this.isDisabledAvancar.set(true);\r\n this.isDisabledVoltar.set(true);\r\n return;\r\n }\r\n this.isDisabledVoltar.set(this.faseIndex() <= 0);\r\n this.isDisabledAvancar.set(this.faseIndex() >= (fases.length - 1));\r\n });\r\n }\r\n ngOnInit(): void {\r\n let campos = this.campos();\r\n let fases = this.fases();\r\n\r\n if (campos == null || fases == null) return;\r\n let semFase = this.checkCamposInFase(campos, fases);\r\n if (semFase.length > 0) {\r\n semFase.forEach(prop => {\r\n this.fases.update(f => {\r\n if (f) {\r\n // Adiciona os campos sem fase a primeira fase, se ela existir.\r\n if (f.fases.length > 0) {\r\n let primeiraFase = f.fases[0];\r\n if (!primeiraFase.campos.includes(prop)) {\r\n primeiraFase.campos.push(prop);\r\n }\r\n } else {\r\n // Se não houver fase, cria uma nova fase e adiciona os campos sem fase nela.\r\n f.fases.push({\r\n nome: \"Geral\",\r\n campos: [prop],\r\n } as IFaseCampos<any>);\r\n }\r\n }\r\n return f;\r\n });\r\n });\r\n }\r\n // LOG(1, \"Fases configuradas:\", this.fases());\r\n }\r\n\r\n faseAvancar(faseIndex?: number): void {\r\n let fases = this.fases()?.fases;\r\n if (fases == null) return;\r\n\r\n if (faseIndex != null) {\r\n let proximaFaseIndex = fases.indexOf(fases[faseIndex]);\r\n if (proximaFaseIndex !== -1) {\r\n if (proximaFaseIndex !== this.faseIndex()) {\r\n this.faseIndex.set(faseIndex);\r\n this.fase_historico.update(h => { h = [...h, faseIndex]; return h; });\r\n }\r\n } else {\r\n LOG(1, \"Fase informada não existe.\");\r\n }\r\n } else {\r\n let proximaFaseIndex = fases.indexOf(fases[this.faseIndex() + 1]);\r\n if (proximaFaseIndex !== -1) {\r\n if (proximaFaseIndex !== this.faseIndex()) {\r\n this.faseIndex.set(proximaFaseIndex);\r\n this.fase_historico.update(h => { h = [...h, proximaFaseIndex]; return h; });\r\n }\r\n } else {\r\n LOG(1, \"Não há próxima fase para avançar.\");\r\n }\r\n }\r\n }\r\n faseVoltar(): void {\r\n let fases = this.fases()?.fases;\r\n if (fases == null) return;\r\n\r\n if (this.faseIndex() > 0) {\r\n this.fase_historico.update(h => { h.pop(); return h; });\r\n let ultimaFaseDoHistorico = this.fase_historico()[this.fase_historico().length - 1];\r\n if (ultimaFaseDoHistorico != null) {\r\n this.faseIndex.set(ultimaFaseDoHistorico);\r\n } else {\r\n LOG(1, \"Não para onde voltar.\");\r\n }\r\n } else {\r\n this.faseIndex.set(0);\r\n this.fase_historico.set([0]);\r\n LOG(1, \"Já está na primeira fase possível.\")\r\n }\r\n }\r\n\r\n\r\n\r\n checkCamposInFase(campos: IFieldComponent<any>[], fases: IFases<any>): string[] {\r\n // Verifica e informa no console se todos os campos recebidos estão presentes em alguma fase\r\n let camposNomes = campos.map(c => c.prop);\r\n let camposEmFases: string[] = [];\r\n let camposNaoEmFases: string[] = [];\r\n for (let campoNome of camposNomes) {\r\n let encontrado = false;\r\n for (let fase of fases.fases) {\r\n for (let campoOrGrupo of fase.campos) {\r\n if (typeof campoOrGrupo === 'string') {\r\n if (campoOrGrupo === campoNome) {\r\n encontrado = true;\r\n break;\r\n }\r\n } else {\r\n if (campoOrGrupo.campos.includes(campoNome)) {\r\n encontrado = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (encontrado) break;\r\n }\r\n if (encontrado) {\r\n camposEmFases.push(campoNome);\r\n } else {\r\n camposNaoEmFases.push(campoNome);\r\n }\r\n }\r\n // if (camposNaoEmFases.length > 0) {\r\n // LOG(1, \"⚠️ Campos sem fase:\", camposNaoEmFases);\r\n // } else {\r\n // LOG(1, \"✔️ Todos os campos estão presentes em alguma fase.\");\r\n // }\r\n return camposNaoEmFases;\r\n\r\n }\r\n}\r\n","@if(isFaseado()){\r\n<div class=\"faseButtons\">\r\n\t<ui-button tipo=\"icon\" tema=\"primary\" (clicked)=\"faseVoltar()\" class=\"todosBotoes\" [disabled]=\"isDisabledVoltar()\"\r\n\t\ticone=\"fa fa-arrow-left\" title=\"Voltar\" [radiusTabFormat]=\"!isLinear()\"></ui-button>\r\n\t<div class=\"faseButtons faseHeader\" [class.hasGap]=\"isLinear()\">\r\n\t\t@if(isLinear()){\r\n\t\t<div class=\"fase-linha-entre-botoes\">\r\n\t\t\t<div class=\"fase-linha-central\"></div>\r\n\t\t</div>\r\n\t\t}\r\n\t\t@for (fase of fasesList(); track $index) {\r\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" class=\"todosBotoes faseBotao\" (clicked)=\"faseAvancar($index)\"\r\n\t\t\t[class.ativo]=\"faseIndex() == $index\" [disabled]=\"fase.disabled\" [icone]=\"fase.icone\" [title]=\"fase.nome\"\r\n\t\t\t[radiusTabFormat]=\"!isLinear()\">\r\n\t\t\t<div class=\"faseHeaderText\" [innerHTML]=\"fase.nome\"></div>\r\n\t\t</ui-button>\r\n\t\t}\r\n\t</div>\r\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (clicked)=\"faseAvancar()\" class=\"todosBotoes\" [disabled]=\"isDisabledAvancar()\"\r\n\t\ticone=\"fa fa-arrow-right\" [iconeAntes]=\"false\" [iconeDepois]=\"true\" title=\"Proximo\"\r\n\t\t[radiusTabFormat]=\"!isLinear()\"></ui-button>\r\n</div>\r\n<div class=\"faseUnderline\" [class.underline-linear]=\"isLinear()\"></div>\r\n}","import { Component, input, model, OnInit, output, signal } from '@angular/core';\r\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\r\nimport { LibUtil, LOG } from '../../../util/util';\r\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\r\nimport { FieldsGeneric } from '../../generic/generic';\r\nimport { FormControls } from \"../form-controls/form-controls\";\r\nimport { FormFase } from \"../form-fase/form-fase\";\r\nimport { UiLoading } from \"../../../elements/ui-loading/ui-loading\";\r\n\r\nexport interface ISaveTasks {\r\n title: string;\r\n icone: string;\r\n task: () => Promise<boolean>;\r\n done?: boolean;\r\n success?: boolean;\r\n}\r\n\r\nexport interface IActionsDone {\r\n values: any;\r\n result: any;\r\n tasks: ISaveTasks[];\r\n ok: boolean; // Booleano que indica se todas tarefas inseridas foram concluídas com sucesso.\r\n}\r\n\r\n@Component({\r\n selector: 'fields-form-action',\r\n templateUrl: './form-action.html',\r\n styleUrls: ['./form-action.css'],\r\n imports: [UiButton, FieldsGeneric, FormControls, FormFase, UiLoading],\r\n})\r\nexport class FormAction<T> extends BaseFieldsValues<T> implements OnInit {\r\n\r\n hasOutline = model<boolean>(false);\r\n\r\n actionTitle = input<string | undefined>();\r\n sendValues = input<((values: any) => Promise<any>) | undefined>();\r\n sending = output<boolean>();\r\n done = output<IActionsDone>();\r\n\r\n // Permite customizar tarefas.\r\n taskTocar = input<boolean>(true);\r\n taskSanitizar = input<boolean>(true);\r\n taskDisponiveis = input<boolean>(true);\r\n taskValidar = input<boolean>(true);\r\n taskEnviar = input<boolean>(true);\r\n tasksToSave = signal<ISaveTasks[]>([]);\r\n\r\n result: any = null;\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this.updateDisabledAction();\r\n\r\n // Incrementa tarefa TOCAR\r\n if (this.taskTocar()) {\r\n this.tasksToSave.update(tasks => [...tasks, {\r\n title: 'Tocando campos',\r\n icone: 'fa fa-handshake',\r\n task: async () => {\r\n this.form.setTouchedAll(true);\r\n return true;\r\n }\r\n }]);\r\n }\r\n\r\n // Incrementa tarefa Sanitizando\r\n if (this.taskSanitizar()) {\r\n this.tasksToSave.update(tasks => [...tasks, {\r\n title: 'Sanitizando',\r\n icone: 'fa fa-quidditch-broom-ball',\r\n task: async () => {\r\n this.form.sanitizar();\r\n return true;\r\n }\r\n }]);\r\n }\r\n\r\n // Tarefa para filtrar apenas os campos disponíveis para envio (ex: campos desabilitados, etc).\r\n if (this.taskDisponiveis()) {\r\n this.tasksToSave.update(tasks => [...tasks, {\r\n title: 'Disponíveis para envio',\r\n icone: 'fa fa-power-off',\r\n task: async () => {\r\n this.form.onlyAvailable();\r\n return true;\r\n }\r\n }]);\r\n }\r\n\r\n // Incrementa tarefa VALIDAR\r\n if (this.taskValidar()) {\r\n this.tasksToSave.update(tasks => [...tasks, {\r\n title: 'Validando',\r\n icone: 'bi bi-ui-checks',\r\n task: async () => {\r\n try {\r\n await this.form.validar();\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n }]);\r\n }\r\n\r\n // Incrementa tarefa SENDVALUES\r\n if (this.taskEnviar() && this.sendValues()) {\r\n this.tasksToSave.update(tasks => [...tasks, {\r\n title: 'Ação de enviar',\r\n icone: 'fa fa-paper-plane',\r\n task: async () => {\r\n // Para enviar, o form deve estar válido.\r\n if (!this.form.valido()) return false;\r\n\r\n // Para enviar, deve existir a função de envio.\r\n let fnEnviar = this.sendValues();\r\n if (!fnEnviar) return false;\r\n\r\n // Reinicia o resultado anterior, se houver.\r\n this.result = null;\r\n\r\n // Obtem os valores do formulário.\r\n let valores = LibUtil.clonar(this.form.values());\r\n\r\n // Inicia o envio.\r\n try {\r\n this.form.isEnviando = true;\r\n this.sending.emit(true);\r\n this.result = await fnEnviar(valores);\r\n this.form.isEnviando = false;\r\n this.sending.emit(false);\r\n if (this.result != null) {\r\n // Indica que a tarefa de envio foi concluída com sucesso.\r\n return true;\r\n }\r\n } catch (e) {\r\n LOG(1, \"❌ ERRO ao Enviar Valores. \", e);\r\n }\r\n\r\n // Qualquer outro caso, indica falha.\r\n return false;\r\n }\r\n }]);\r\n }\r\n\r\n // Neste componente, há sempre uma ação e sempre emite tasksDone.\r\n this.tasksToSave.update(tasks => [\r\n ...tasks,\r\n {\r\n title: 'Ações concluídas',\r\n icone: 'fa fa-flag-checkered',\r\n task: async () => {\r\n let ok = this.tasksToSave().filter(task => task.title !== 'Ações concluídas').every(task => task.success);\r\n let values = LibUtil.clonar(this.form.values());\r\n let actionsDone: IActionsDone = {\r\n values,\r\n result: this.result,\r\n tasks: this.tasksToSave(),\r\n ok\r\n }\r\n this.done.emit(actionsDone);\r\n if (ok) this.form.isEnviado = true;\r\n return ok;\r\n }\r\n }\r\n ]);\r\n\r\n }\r\n\r\n async onSave() {\r\n this.tasksToSave.update(tasks => tasks.map(t => ({ ...t, done: false })));\r\n this.updateDisabledAction(true);\r\n this.isLoadingActive.set(true);\r\n\r\n for await (const task of this.tasksToSave()) {\r\n // await LibUtil.wait(1000);\r\n let r = task.task();\r\n r.then(s => task.success = s).catch(f => task.success = false);\r\n await r;\r\n task.done = true;\r\n }\r\n\r\n this.isLoadingActive.set(false);\r\n this.updateDisabledAction();\r\n }\r\n\r\n}\r\n","<ui-form-fase [fases]=\"fases()\" [campos]=\"form.listaCampos()\" [(faseIndex)]=\"faseIndex\"></ui-form-fase>\r\n@if(isFaseado()){\r\n<div class=\"containerFases\" [class.showOutlineFields]=\"hasOutline()\">\r\n\t@for (fase of listaFase(); track $index;let fIndex = $index) {\r\n\t<div class=\"areaFase g-fields\" [style.--fase]=\"faseIndex()\" [class.ativo]=\"faseIndex() == fIndex\"\r\n\t\t[style.--g-fields-min]=\"fase.gridMin\" [style.--g-fields-max]=\"fase.gridMax\"\r\n\t\t[class.showOutlineFields]=\"hasOutline()\">\r\n\t\t@for (faseGrupo of faseGrupo(); track $index) {\r\n\t\t@if(faseGrupo.faseIndex == fIndex){\r\n\r\n\t\t@if(faseGrupo.tipo == 'campo' && faseGrupo.campo){\r\n\r\n\t\t<fields-g [form]=\"form\" [name]=\"faseGrupo.campo.prop\"\r\n\t\t\t[class]=\"faseGrupo.campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\r\n\r\n\t\t} @else if (faseGrupo.tipo == 'grupo' && faseGrupo.grupo) {\r\n\r\n\t\t<div class=\"field-group\" [style.grid-area]=\"faseGrupo.grupo.area ?? 'auto / auto / auto / span 2'\">\r\n\t\t\t@if(faseGrupo.grupo.titulo){ <div class=\"group-title\"\r\n\t\t\t\t[style.grid-area]=\"faseGrupo.grupo.tituloArea ?? 'auto / auto / auto / span 2'\">{{\r\n\t\t\t\tfaseGrupo.grupo!.titulo }}</div> }\r\n\t\t\t@for(campo of faseGrupo.grupo!.campos; track $index){\r\n\t\t\t<fields-g [form]=\"form\" [name]=\"campo\"\r\n\t\t\t\t[class]=\"form.campos()[campo]?.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t}@else{\r\n\r\n\t\t<div class=\"card bg-danger\"> ❌ Falha tipo {{ faseGrupo.tipo }}.<br> Campo {{ faseGrupo.nome }} não encontrado!</div>\r\n\t\t}\r\n\r\n\t\t}\r\n\t\t}\r\n\t</div>\r\n\t}\r\n</div>\r\n\r\n}@else {\r\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\"\r\n\t[class.showOutlineFields]=\"hasOutline()\">\r\n\r\n\t@for (campo of form.listaCampos(); track $index) {\r\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\r\n\t}\r\n\r\n</div>\r\n}\r\n\r\n<div class=\"buttonsGap\">\r\n\t<ui-button tipo=\"fill\" tema=\"primary\" (clicked)=\"onSave()\" [disabled]=\"isDisabledAction()\" class=\"botaoAcaoSave\">\r\n\t\t@if(showFormControls()){\r\n\t\t<div class=\"icons\">\r\n\t\t\t@for (task of tasksToSave(); track $index) {\r\n\t\t\t<i [class]=\"task.icone\" [class.done]=\"task.done\" [class.success]=\"task.success == true\"\r\n\t\t\t\t[class.fail]=\"task.success == false\"></i>\r\n\t\t\t}\r\n\t\t</div>\r\n\t\t}\r\n\t\t<div class=\"f-1\">\r\n\t\t\t{{ actionTitle() ?? 'Salvar' }}\r\n\t\t</div>\r\n\t\t@if(isLoadingActive()){\r\n\t\t<div class=\"loadingSubmit\">\r\n\t\t\t<ui-loading></ui-loading>\r\n\t\t</div>\r\n\t\t}\r\n\t</ui-button>\r\n\t<ng-content></ng-content>\r\n</div>\r\n\r\n@if(showFormControls()){\r\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\r\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\r\n}","import { Component, model } from '@angular/core';\r\nimport { FieldsGeneric } from '../../generic/generic';\r\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\r\nimport { FormControls } from \"../form-controls/form-controls\";\r\n\r\n@Component({\r\n selector: 'fields-form-no-action',\r\n templateUrl: './form-no-action.html',\r\n styleUrl: './form-no-action.css',\r\n imports: [FieldsGeneric, FormControls],\r\n})\r\nexport class FormNoAction<T> extends BaseFieldsValues<T> {\r\n\r\n async onSave() {\r\n // Não faz nada. \r\n return;\r\n }\r\n\r\n hasOutline = model<boolean>(false);\r\n\r\n}\r\n","<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\r\n\r\n\t@for (campo of form.listaCampos(); track $index) {\r\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\r\n\t}\r\n\r\n</div>\r\n\r\n@if(showFormControls()){\r\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\r\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\r\n}","import { Component, computed, input, model } from '@angular/core';\r\nimport { LibUtil, LOG } from '../../../util/util';\r\nimport { IField, IFieldComponent } from '../Formulario';\r\n\r\nexport type IModeShowEntidade = \"centro\" | \"cantos\" | \"esquerda\" | \"grid\" | \"wrap\";\r\n\r\n@Component({\r\n selector: 'ui-formated-values',\r\n templateUrl: './formated-values.html',\r\n styleUrls: ['./formated-values.css'],\r\n imports: [],\r\n})\r\nexport class FormatedValues {\r\n\r\n campos = input<IFieldComponent<any>[] | undefined>();\r\n dados = input<any>();\r\n modo = model<IModeShowEntidade>(\"centro\");\r\n especialKeys = input<string[] | undefined>();\r\n ignoreKeys = input<string[] | undefined>([]);\r\n\r\n camposFormatados = computed(() => {\r\n let campos = this.campos();\r\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\r\n\r\n let listaDados = campos?.map(campo => {\r\n let inputs: any = {};\r\n // let isInner: boolean = this.getIsInner(campo, inputs);\r\n let titulo = campo.titulo ?? campo.prop ?? \"\";\r\n return {\r\n ...campo,\r\n label: titulo + ':',\r\n value: this.getFormattedValue(campo) ?? \"\",\r\n // isInner,\r\n inputs,\r\n isEspecial: especialKeys.includes(campo.prop?.toLowerCase()),\r\n };\r\n }).filter(campo => !this.ignoreKeys()?.includes(campo.prop));\r\n\r\n // Ordena a lista colocando os isEspecial no final\r\n listaDados = listaDados?.sort((a, b) => {\r\n if (a.isEspecial && !b.isEspecial) return 1;\r\n if (!a.isEspecial && b.isEspecial) return -1;\r\n return 0;\r\n });\r\n\r\n // Retorna\r\n return listaDados;\r\n });\r\n\r\n // changeModoTo(modo: IModeShowEntidade) {\r\n // this.modo.set(modo);\r\n // }\r\n\r\n // getIsInner(campo: IFieldComponent<any>, inputs: any): boolean {\r\n // switch (campo.tipo) {\r\n\r\n // case IField.Upload:\r\n // inputs[\"file\"] = this.dados()?.[campo.prop];\r\n // inputs[\"tipo\"] = IMGTYPE.Generic;\r\n // inputs[\"h\"] = 45;\r\n // return false;\r\n\r\n // default:\r\n // return true;\r\n\r\n // }\r\n // }\r\n\r\n getFormattedValue(campo: IFieldComponent<any>) {\r\n let value = this.dados()?.[campo.prop];\r\n if (value == null || value == undefined) return \"\";\r\n\r\n switch (campo.tipo) {\r\n\r\n case IField.AutoComplete:\r\n // A implementar...\r\n break;\r\n\r\n\r\n case IField.Button:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Checkbox:\r\n value = value === true ? \"Sim\" : \"Não\";\r\n break;\r\n\r\n case IField.Color:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Custom:\r\n LOG(1, \"ShowEntidade: A exibição do custom não deve ser alterada por aqui. (Remover o aviso quando for implementar o custom)\");\r\n break;\r\n\r\n case IField.Date:\r\n value = LibUtil.stringToDataBR(value)?.split(\" \")[0];\r\n break;\r\n\r\n case IField.DateTime:\r\n value = LibUtil.stringToDataBR(value);\r\n break;\r\n\r\n case IField.Display:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Editor:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Email:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Hidden:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Icon:\r\n value = `<i class=\"${value}\"></i> ${value}`;\r\n break;\r\n\r\n case IField.MultiFactor:\r\n // A implementar...\r\n break;\r\n\r\n case IField.MultiText:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Number:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Password:\r\n value = \"••••••••\";\r\n break;\r\n\r\n case IField.Referencia:\r\n if (campo.getDisplay) value = campo.getDisplay(value);\r\n break;\r\n\r\n case IField.Search:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Select:\r\n let options = campo.options?.();\r\n let optionValue = options?.find(o => o.k == value)?.v\r\n optionValue ? value = `${optionValue}` : value = `${value}`;\r\n break;\r\n\r\n case IField.Slide:\r\n value = value == true ? \"Sim\" : \"Não\";\r\n break;\r\n\r\n case IField.Text:\r\n // A implementar...\r\n break;\r\n\r\n case IField.Upload:\r\n // A implementar...\r\n break;\r\n\r\n }\r\n\r\n // Estes abaixo só se aplicariam se o ShowEntidade fosse mais genérico.\r\n // switch (Util.classof(value)) {\r\n // case \"boolean\":\r\n // if (value === true) value = \"Sim\";\r\n // if (value === false) value = \"Não\";\r\n // break;\r\n // case \"array\":\r\n // if (value.length && value.length > 0) {\r\n // if (Util.classof(value[0]) == \"object\") {\r\n // value = `Lista com ${value.length} registros`\r\n // } else {\r\n // value = value.join(\", \");\r\n // }\r\n // }\r\n // break;\r\n // }\r\n return value;\r\n }\r\n}\r\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\r\n\r\n\r\n\t@for (field of camposFormatados(); track $index) {\r\n\t<div class=\"linhaDado\" [class.isEspecial]=\"field.isEspecial\">\r\n\t\t<div class=\"titulo\" [innerHTML]=\"field.label\"></div>\r\n\t\t<!-- @if(field.isInner){ -->\r\n\t\t<div class=\"conteudo\" [innerHTML]=\"field.value\"></div>\r\n\t\t<!-- }@else {\r\n\t\t<build-component [componente]=\"field.value\" [inputs]=\"field.inputs\"></build-component>\r\n\t\t} -->\r\n\t</div>\r\n\t}\r\n\r\n</div>","import { Component, computed, input, model } from '@angular/core';\r\nimport { LibUtil } from '../../../util/util';\r\nimport { IModeShowEntidade } from '../formated-values/formated-values';\r\n\r\n@Component({\r\n selector: 'ui-single-values',\r\n templateUrl: './single-values.html',\r\n styleUrls: ['./single-values.css'],\r\n imports: [],\r\n})\r\nexport class SingleValues {\r\n\r\n dados = input<any>();\r\n modo = model<IModeShowEntidade>(\"centro\");\r\n especialKeys = input<string[] | undefined>();\r\n\r\n dadosAExibir = computed(() => {\r\n let dados = this.dados();\r\n let keys = Object.keys(dados ?? {}).sort();\r\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\r\n\r\n let listaDados = keys?.map(chave => {\r\n return {\r\n label: LibUtil.pascalCase(chave) + ':',\r\n value: this.getNormalizedValue(dados[chave]) ?? \"\",\r\n isEspecial: especialKeys.includes(chave.toLowerCase()),\r\n };\r\n });\r\n\r\n // Ordena a lista colocando os isEspecial no final\r\n listaDados = listaDados?.sort((a, b) => {\r\n if (a.isEspecial && !b.isEspecial) return 1;\r\n if (!a.isEspecial && b.isEspecial) return -1;\r\n return 0;\r\n });\r\n\r\n // Retorna\r\n return listaDados;\r\n });\r\n\r\n getNormalizedValue(value: any) {\r\n if (value == null || value == undefined) return \"\";\r\n\r\n let classofValue = LibUtil.classof(value);\r\n\r\n switch (classofValue) {\r\n\r\n case \"object\":\r\n value = `{ ... Objeto com ${Object.keys(value).length} itens }`\r\n break;\r\n\r\n case \"array\":\r\n if (value.length && value.length > 0) {\r\n if (LibUtil.classof(value[0]) == \"object\") {\r\n value = `[ ... Lista com ${value.length} registros ]`\r\n } else {\r\n value = value.join(\", \");\r\n }\r\n }\r\n break;\r\n\r\n }\r\n return value;\r\n }\r\n}\r\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\r\n\r\n\r\n\t@for (dado of dadosAExibir(); track $index) {\r\n\t<div class=\"linhaDado\" [class.isEspecial]=\"dado.isEspecial\">\r\n\t\t<div class=\"titulo\" [innerHTML]=\"dado.label\"></div>\r\n\t\t<div class=\"conteudo\" [innerHTML]=\"dado.value\"></div>\r\n\t</div>\r\n\t}\r\n\r\n</div>","// Exportar primeiro os tipos\r\nexport type { IKV, IKV_ext, IFileMetadata, ITipoBotao, ITiposTema, IDropZoneEvent, IDropType, IDropOutput, UiProgressMode } from './interfaces/interfaces';\r\n\r\n// Tipos mais específicos, enuns, interfaces e funções uteis.\r\nexport * from './util/util';\r\nexport * from './fields/Formulario/Formulario';\r\n\r\n// Exportar as base\r\nexport * from './fields/Base/BaseFieldsValues/BaseFieldsValues';\r\nexport * from './fields/Base/BaseFieldsForm/BaseFieldsForm.component';\r\n\r\n// Exportar componentes individuais (elementos)\r\nexport * from './elements/ui-button/ui-button';\r\nexport * from './elements/ui-chip/ui-chip';\r\nexport * from './elements/ui-drop-zone/ui-drop-zone';\r\nexport * from './elements/ui-file-list/ui-file-list';\r\nexport * from './elements/ui-select/ui-select';\r\nexport * from './elements/ui-procurar/ui-procurar';\r\nexport * from './elements/ui-progress/ui-progress';\r\nexport * from './elements/ui-slide/ui-slide';\r\nexport * from './elements/ui-check-box/ui-check-box';\r\nexport * from './elements/ui-list-errors/ui-list-errors';\r\nexport * from './elements/ui-loading/ui-loading';\r\nexport * from './elements/ui-menu/ui-menu';\r\n\r\n\r\n\r\n// Os componente de campo não são exportados. Utilize FormAction, ou similar, com os campos pré configurados.\r\n\r\n// Exportar componentes de formulário\r\nexport * from './fields/Formulario/form-filter/form-filter';\r\nexport * from './fields/Formulario/form-action/form-action';\r\nexport * from './fields/Formulario/form-no-action/form-no-action';\r\nexport * from './fields/Formulario/formated-values/formated-values';\r\nexport * from './fields/Formulario/single-values/single-values';\r\n\r\n// Exportar generic por último (depende de todos os outros)\r\nexport * from './fields/generic/generic';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|