@masterkeymaterial/ui 0.2.16 → 0.2.18
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterkeymaterial-ui.mjs","sources":["../../../projects/master-key-material/src/util/log.ts","../../../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/mk-grid/mk-grid.types.ts","../../../projects/master-key-material/src/mk-grid/grid-cell/grid-cell.service.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-handler/grid-cell-handler.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-handler/grid-cell-handler.html","../../../projects/master-key-material/src/mk-grid/grid-cell-actions/grid-cell-actions.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-actions/grid-cell-actions.html","../../../projects/master-key-material/src/mk-grid/grid-row-renderer/grid-row-renderer.ts","../../../projects/master-key-material/src/mk-grid/grid-row-renderer/grid-row-renderer.html","../../../projects/master-key-material/src/mk-grid/grid-header-row/grid-header-row.ts","../../../projects/master-key-material/src/mk-grid/grid-header-row/grid-header-row.html","../../../projects/master-key-material/src/mk-grid/grid-pagination/grid-pagination.ts","../../../projects/master-key-material/src/mk-grid/grid-pagination/grid-pagination.html","../../../projects/master-key-material/src/mk-grid/grid-filter-bar/grid-filter-bar.ts","../../../projects/master-key-material/src/mk-grid/grid-filter-bar/grid-filter-bar.html","../../../projects/master-key-material/src/mk-grid/grid-empty-list/grid-empty-list.ts","../../../projects/master-key-material/src/mk-grid/grid-empty-list/grid-empty-list.html","../../../projects/master-key-material/src/mk-grid/mk-grid.ts","../../../projects/master-key-material/src/mk-grid/mk-grid.html","../../../projects/master-key-material/src/mk-grid/grid-cell/grid-cell.ts","../../../projects/master-key-material/src/public-api.ts","../../../projects/master-key-material/src/masterkeymaterial-ui.ts"],"sourcesContent":["\n////////////////////////////////////\n// CONSOLES: LOG - WARN - ERR ...\n////////////////////////////////////\n// LibUtil.loglevel: 1,2,3 => Bigger will see more\n\nlet loglevel = 0;\n\nexport const setLogLevel = (level: number) => {\n\tloglevel = level;\n}\n\nexport const LOG = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.log(...attr);\n\t}\n}\n\n// export const WARN = (level: number, ...attr: any) => {\n// if ((loglevel ?? 0) >= level) {\n// return console.warn(...attr);\n// }\n// }\n\n// export const ERR = (level: number, ...attr: any) => {\n// if ((loglevel ?? 0) >= level) {\n// return console.error(...attr);\n// }\n// }\n\nexport const G_START = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.groupCollapsed(...attr);\n\t}\n}\n\nexport const G_START_OPEN = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.group(...attr);\n\t}\n}\n\nexport const G_END = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.groupEnd();\n\t}\n}\n\n// LOG COLAPSADO\nexport const LOGC = (level: number, title: string, ...attr: any) => {\n\tG_START(level, title);\n\tLOG(level, ...attr);\n\tG_END(level);\n}","import { WritableSignal } from \"@angular/core\";\nimport { IFieldComponent } from \"../fields/Formulario/Formulario\";\nimport { G_END, G_START, LOG } from \"./log\";\n\nexport class LibUtil {\n\n static formConfigs: Partial<IFieldComponent<any>> = {};\n\n static classof = (o: any): IClassOf => {\n let nomeClasse = Object.prototype.toString.call(o).slice(8, -1).toLowerCase();\n if (nomeClasse == \"number\") {\n if (o.toString() == \"NaN\") {\n nomeClasse = \"nan\";\n }\n }\n return nomeClasse as IClassOf;\n };\n\n static wait = (ms: number) => {\n // Essa mecânica usa um setTimeout. A mecânica do Queue não foi implementada\n return new Promise(r => setTimeout(r, ms))\n };\n\n static clonar = (i: any) => {\n // Clona com a técnica de montar e desmontar string.\n // Não funciona para objetos com serviços (Date, File, Map, Set, etc)\n let parsed = null;\n try {\n let stringified = JSON.stringify(i);\n if (stringified == null) return null;\n if (stringified == \"\") return \"\";\n parsed = JSON.parse(stringified);\n if (parsed == null) return null;\n } catch (e) {\n return null;\n }\n return parsed;\n };\n\n static limparObject = (o: any) => {\n // Converte (Object) Limpar Nulos e Vazios\n if (LibUtil.classof(o) == \"object\") {\n for (let propName in o) {\n if (\n o[propName as keyof typeof o] === null ||\n o[propName as keyof typeof o] === undefined ||\n o[propName as keyof typeof o] === \"\" ||\n o[propName as keyof typeof o] === \"undefined\"\n ) {\n delete o[propName as keyof typeof o];\n }\n }\n }\n return o;\n };\n\n static mascarar = (texto: any, mascara: any): string | undefined => {\n // Informando uma máscara e um texto, retorna dado mascarado.\n // Mascaras: 0=Numero, A=Letra, Outros repete.\n if (LibUtil.classof(mascara) != \"string\") {\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.\n if (LibUtil.classof(mascara) == \"function\") {\n mascara = mascara(texto); // Sobreextreve a mascara a ser executada pelo retorno da função.\n }\n }\n if (mascara) {\n if (texto) {\n if (LibUtil.classof(texto) != \"string\") texto = texto?.toString();\n if (LibUtil.classof(mascara) != \"string\") mascara = mascara?.toString(); // Se a chegar até aqui e ainda não for string\n let ms = [...LibUtil.clonar(mascara)];\n let ss = [...LibUtil.clonar(texto)];\n // this.l(\"ss: \", ss);\n let ts: any = [];\n let pm = 0;\n ss.forEach(s => {\n let t = null;\n if (/[0-9]/.test(s)) {\n t = \"0\";\n } else if (/[a-zA-Z]/.test(s)) {\n t = \"A\";\n } else {\n t = \" \";\n }\n ts.push(t);\n pm++;\n });\n // this.l(\"ts: \", ts);\n // this.l(\"ms: \", ms);\n let r: any = [];\n for (let tp = 0, mp = 0; (tp < ts.length) && (mp < ms.length); tp++, mp++) {\n if (((ms[mp] === \"0\" || ms[mp] === \"A\") && (ms[mp] == ts[tp]))\n || (ms[mp] === \"S\" && (ts[tp] === \"A\" || ts[tp] === \"0\"))) {\n // FORMATO IGUAL.\n r.push(ss[tp]);\n } else {\n // MESMO CARACTER\n if (ss[tp] === ms[mp]) {\n r.push(ss[tp]);\n } else {\n // this.l(\"> \", ss[tp], \" vs \", ms[mp])\n // Mágica: Coloca o especial que o usuário não colocou.\n if (ms[mp] != \"0\" && ms[mp] != \"A\" && ms[mp] != \"S\") {\n r.push(ms[mp]);\n tp--;\n } else {\n mp--;\n }\n }\n }\n }\n return r.join(\"\");\n }\n } else {\n console.log(\"❌ Mascarar Requer Texto: \", texto, \" e Mascara: \", mascara);\n }\n return undefined;\n };\n\n static tryParseJSON(val: any): any[] | null {\n try {\n return JSON.parse(val);\n } catch (e) {\n return null;\n }\n }\n\n static contem = (strMaior: string, strMenor: string): boolean => {\n // Comparardor de string CONTEM\n strMaior = LibUtil.removeAcentos(strMaior).toLowerCase();\n strMenor = LibUtil.removeAcentos(strMenor).toLowerCase();\n return (strMaior.includes(strMenor));\n };\n\n static removeAcentos = (s: string): string => {\n if (s == null) return \"\";\n // Remove acentos e depois chama Apenas Números e Letras.\n s = s.toString();\n let r = \"\";\n let sS = \"áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ\";\n let sN = \"aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC\";\n for (let p = 0; p < s.length; p++) {\n let pSS = sS.indexOf(s.charAt(p)); // <= Procura\n if (pSS != -1) {\n r += sN.charAt(pSS); // Substitui mesma posicao\n } else {\n r += s.charAt(p);\n }\n }\n return r;\n };\n\n static fileReader = async (arquivo: File, eventos?: Function): Promise<string | null> => {\n return new Promise((r) => {\n let leitor = new FileReader();\n let gatilhos = (event: any) => {\n if (event.type == \"error\") {\n r(null);\n }\n else if (event.type == \"loadend\") {\n // Quando terminar, o result já é a string completa.\n let buffer = leitor.result as string;\n r(buffer);\n }\n if (eventos)\n eventos(event, Math.trunc((event.loaded / event.total) * 100));\n }\n if (arquivo) {\n if (arquivo.name != \"\") {\n leitor.addEventListener(\"loadstart\", gatilhos);\n leitor.addEventListener(\"progress\", gatilhos);\n leitor.addEventListener(\"error\", gatilhos);\n leitor.addEventListener(\"abort\", gatilhos);\n leitor.addEventListener(\"load\", gatilhos);\n leitor.addEventListener(\"loadend\", gatilhos);\n leitor.readAsDataURL(arquivo);\n }\n else {\n LOG(1, \"⚠️ fileReader() - Nome do arquivo necessário: \", arquivo.name);\n r(null);\n }\n } else {\n LOG(1, \"⚠️ fileReader() - Arquivo Nulo: \", arquivo);\n r(null);\n }\n });\n };\n\n static removeHtmlTags(texto: string): string {\n return texto.replace(/<\\/?[^>]+(>|$)/g, \"\");\n }\n\n // Salva a posição do cursor\n static saveCursorPosition(element: any, plus: number = 0): { start: number; end: number, plus: number } | null {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return null;\n const range = selection.getRangeAt(0);\n const preCaretRange = range.cloneRange();\n if (!element) return null;\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.startContainer, range.startOffset);\n const start = preCaretRange.toString().length;\n return {\n start: start,\n end: start + range.toString().length,\n plus\n };\n }\n\n // Restaura a posição do cursor\n static restoreCursorPosition(element: any, position: { start: number; end: number, plus: number }) {\n if (!element) return;\n const selection = window.getSelection();\n if (!selection) return;\n let charIndex = 0;\n const range = document.createRange();\n range.setStart(element, 0);\n range.collapse(true);\n const nodeIterator = (node: Node): boolean => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textNode = node as Text;\n const nextCharIndex = charIndex + (textNode.length || 0);\n if (position.start >= charIndex && position.start <= nextCharIndex) {\n range.setStart(textNode, position.start - charIndex);\n range.setEnd(textNode, position.start - charIndex);\n return true;\n }\n charIndex = nextCharIndex;\n } else {\n for (let i = 0; i < node.childNodes.length; i++) {\n if (nodeIterator(node.childNodes[i])) {\n return true;\n }\n }\n }\n return false;\n };\n nodeIterator(element);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n\n static formatJson(texto: string, colorir: boolean = false): string {\n let retorno = \"\";\n try {\n retorno = JSON.stringify(texto, null, 2);\n } catch (e) {\n LOG(1, \"⚠️ JSON Inválido: Não foi possível formatar o JSON.\");\n return texto;\n }\n\n if (colorir) {\n let keyNameStart: string = '<span class=\"json-key\">';\n let nullStart: string = '<span class=\"json-null\">';\n let numberStart: string = '<span class=\"json-number\">';\n let booleanStart: string = '<span class=\"json-boolean\">';\n let stringStart: string = '<span class=\"json-string\">';\n let spanEnd: string = '</span>';\n // Identificar a posição das chaves do json e adicionar as tags de span\n retorno = retorno.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n retorno = retorno.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g, function (match) {\n let cls = nullStart;\n if (/^\"/.test(match)) {\n if (/:$/.test(match)) {\n cls = keyNameStart;\n } else {\n cls = stringStart;\n }\n } else if (/true|false/.test(match)) {\n cls = booleanStart;\n } else if (/null/.test(match)) {\n cls = nullStart;\n } else if (/undefined/.test(match)) {\n cls = nullStart;\n } else {\n cls = numberStart;\n }\n return cls + match + spanEnd;\n });\n }\n\n // Remove aspas duplas das chaves (mantém aspas dos valores string)\n retorno = retorno.replace(/\"([^\"]+)\"(\\s*):/g, '$1$2:');\n\n return retorno;\n }\n\n static async copy(content: string): Promise<void> {\n try {\n await this.copyHtml(content);\n } catch (erro) {\n LOG(1, \"❌ %cFalha ao copiar como HTML, tentando como texto puro\", \"color:red;\", erro);\n this.copyPlainText(content);\n }\n }\n\n private static copyPlainText(text: string) {\n const elemento = document.createElement('textarea');\n elemento.style.position = 'fixed';\n elemento.style.opacity = '0';\n elemento.style.whiteSpace = 'pre';\n elemento.value = text;\n document.body.appendChild(elemento);\n elemento.select();\n elemento.setSelectionRange(0, 99999);\n const result = document.execCommand('copy');\n if (!result) {\n LOG(1, \"❌ Falha ao copiar via execCommand.\");\n }\n LOG(1, \"🫤! Cópia via execCommand: \", text);\n elemento.remove();\n }\n\n private static async copyHtml(html?: string) {\n if (!html) {\n html = \"\";\n LOG(1, \"❌ %cNão foi possível copiar.\", \"color:red;\");\n return;\n }\n try {\n // Remove tags HTML para gerar a versão texto puro\n const plainText = this.stripHtmlTags(html);\n if (navigator.clipboard && window.isSecureContext) {\n const clipboardItem = new ClipboardItem({\n 'text/plain': new Blob([plainText], { type: 'text/plain' }),\n 'text/html': new Blob([html], { type: 'text/html' })\n });\n await navigator.clipboard.write([clipboardItem]);\n console.groupCollapsed(\"✅ %cCopiado para a área de transferência.\", \"color:aquamarine;\");\n LOG(1, plainText);\n console.groupEnd();\n return;\n }\n\n // Fallback: copia HTML usando execCommand\n const elemento = document.createElement('div');\n elemento.style.position = 'fixed';\n elemento.style.opacity = '0';\n elemento.innerHTML = html;\n document.body.appendChild(elemento);\n\n const range = document.createRange();\n range.selectNodeContents(elemento);\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n\n document.execCommand('copy');\n console.groupCollapsed(\"➡️ %cCopiado para a área de transferência. (execCommand)\", \"color:lightblue;\");\n LOG(1, plainText);\n console.groupEnd();\n elemento.remove();\n } catch (erro) {\n LOG(1, \"❌ Erro ao copiar:\", erro);\n throw erro;\n }\n }\n\n private static stripHtmlTags(html: string): string {\n // Cria um elemento temporário para extrair texto puro\n const temp = document.createElement('div');\n temp.innerHTML = html;\n // Substitui <br> por quebras de linha antes de extrair o texto\n temp.innerHTML = temp.innerHTML.replace(/<br\\s*\\/?>/gi, '\\n');\n return temp.textContent || temp.innerText || '';\n }\n\n static apenasNumeros = (s: string | number = \"\"): string => {\n if (s == null) return \"\";\n // Ignora qualquer outro caracter além de Numeros\n return s.toString().replace(/(?![0-9])./g, \"\");\n }\n\n static frequencia = (array: any): any => {\n // Retorna o total de encontro na array.\n // Quando é objeto converte pra string pra poder contar\n let f: any = {};\n for (let e of array) {\n let s = e;\n if (LibUtil.classof(e) == \"object\") s = JSON.stringify(e);\n f[s] ? f[s]++ : (f[s] = 1);\n }\n return f;\n }\n\n static formats: IUtilFormatters = {\n cpf: {\n mask: \"000.000.000-00\",\n regex: \"^([0-9]{3}([\\.]?[0-9]{3}){2}[-]?[0-9]{2})$\",\n validate: (cpf: any) => {\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cpf) { return false; }\n cpf = LibUtil.apenasNumeros(cpf);\n if (cpf.length != 11) { return false; }\n let temp = cpf.slice(0, 9);\n let c = 0;\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n if (cpf.charAt(10) != r.toString()) {\n return false;\n };\n let char0 = cpf.charAt(0);\n let repChar0 = LibUtil.frequencia(cpf)[char0];\n if (repChar0 >= 11) {\n return false;\n }\n return true;\n }\n },\n cnpj: {\n mask: \"00.000.000/0000-00\",\n regex: \"^([0-9]{2}([\\.]?[0-9]{3}){2}[\\/]?[0-9]{4}[-]?[0-9]{2})$\",\n validate: (cnpj: any) => {\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cnpj) { return false; }\n cnpj = LibUtil.apenasNumeros(cnpj);\n if (cnpj.length != 14) { return false; }\n let temp = cnpj.slice(0, 12);\n let c = 0;\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n return cnpj.charAt(13) == r.toString();\n }\n },\n cpf_cnpj: {\n mask: (str: string) => {\n if (LibUtil.apenasNumeros(str).length <= 11) {\n return \"000.000.000-00\"\n } else {\n return \"00.000.000/0000-00\"\n };\n },\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})$\",\n validate: (cpf_cnpj: any) => {\n if (LibUtil.apenasNumeros(cpf_cnpj).length <= 11) {\n return LibUtil.formats.cpf.validate?.(cpf_cnpj) ?? false;\n } else {\n return LibUtil.formats.cnpj.validate?.(cpf_cnpj) ?? false;\n };\n }\n },\n cnh: {\n mask: \"00000000000\",\n regex: \"^([0-9]{11})$\",\n validate: (cnh: any) => {\n if (!cnh) { return false; }\n cnh = LibUtil.apenasNumeros(cnh);\n if (cnh.length != 11) { return false; }\n return true;\n },\n },\n pis: {\n mask: \"000.00000.00-0\",\n regex: \"^([0-9]{3}[\\.]?[0-9]{5}[\\.]?[0-9]{2}[-]?[0-9]{1})$\",\n validate: (pis: any) => {\n if (!pis) { return false; }\n pis = LibUtil.apenasNumeros(pis);\n if (pis.length != 11) { return false; }\n return true;\n },\n },\n dia: {\n mask: \"00\",\n regex: \"^(0[1-9]|[1-9]|[1-2][0-9]|3[0-1])$\",\n validate: (dia: any) => {\n if (!dia) { return false; }\n dia = LibUtil.apenasNumeros(dia);\n let diaNum = Number(dia);\n return diaNum >= 1 && diaNum <= 31;\n },\n },\n mes: {\n mask: \"00\",\n regex: \"^(0[1-9]|1[0-2])$\",\n validate: (mes: any) => {\n if (!mes) { return false; }\n mes = LibUtil.apenasNumeros(mes);\n let mesNum = Number(mes);\n return mesNum >= 1 && mesNum <= 12;\n },\n },\n ano: {\n mask: \"0000\",\n regex: \"^([0-2]?([0-9]){3})$\",\n validate: (ano: any) => {\n if (!ano) { return false; }\n ano = LibUtil.apenasNumeros(ano);\n let anoNum = Number(ano);\n return anoNum >= 1000 && anoNum <= 2999;\n },\n },\n anoRecente: {\n mask: \"0000\",\n regex: \"^(19([0-9]){2})|(20([0-9]){2})|(21([0-9]){2})$\",\n validate: (anoRecente: any) => {\n if (!anoRecente) { return false; }\n anoRecente = LibUtil.apenasNumeros(anoRecente);\n let anoNum = Number(anoRecente);\n return anoNum >= 1900 && anoNum <= 2199;\n },\n },\n data: {\n mask: \"0000-00-00\",\n regex: \"^([0-9]{4}(-[0-9]{2}){2})$\",\n validate: (data: any) => {\n if (!data) { return false; }\n data = LibUtil.apenasNumeros(data);\n return new RegExp(LibUtil.formats.data.regex).test(data);\n },\n },\n dataIso: {\n mask: \"0000-00-00T00:00:00.000Z\",\n regex: \"^([0-9]{4}(-[0-9]{2}){2}T[0-9]{2}(:[0-9]{2}){2}\\.[0-9]{3}Z)$\",\n validate: (dataIso: any) => {\n if (!dataIso) { return false; }\n dataIso = LibUtil.apenasNumeros(dataIso);\n return new RegExp(LibUtil.formats.dataIso.regex).test(dataIso);\n },\n },\n numero: {\n mask: \"#0\",\n regex: \"^[0-9]*$\",\n validate: (numero: any) => {\n if (!numero) { return false; }\n numero = LibUtil.apenasNumeros(numero);\n return numero.length > 0;\n },\n },\n decimal: {\n mask: \"#0,00\",\n regex: \"^[0-9,]*$\",\n validate: (decimal: any) => {\n if (!decimal) { return false; }\n return new RegExp(LibUtil.formats.decimal.regex).test(decimal);\n },\n },\n letra: {\n mask: \"A\",\n regex: \"^[A-Za-z]*$\",\n validate: (letra: any) => {\n if (!letra) { return false; }\n return new RegExp(LibUtil.formats.letra.regex).test(letra);\n },\n },\n numeroELetra: {\n mask: \"S\",\n regex: \"^[A-Za-z0-9]*$\",\n validate: (numeroELetra: any) => {\n if (!numeroELetra) { return false; }\n return new RegExp(LibUtil.formats.numeroELetra.regex).test(numeroELetra);\n }\n },\n ip: {\n mask: \"000.000.000.000\",\n regex: \"^([0-2]?[0-9]?[0-9]([\\.][0-2]?[0-9]?[0-9]){3})$\",\n validate: (ip: any) => {\n if (!ip) { return false; }\n const regex = new RegExp(LibUtil.formats.ip.regex);\n if (!regex.test(ip)) { return false; }\n const parts = ip.split('.').map(Number);\n return parts.every((part: number) => part >= 0 && part <= 255);\n }\n },\n email: {\n mask: \"S\",\n regex: \"^(([a-zA-Z0-9_+-\\.]+)+)@([a-zA-Z0-9_+-\\.]+\\.[a-zA-Z]+)+$\",\n validate: (email: any) => {\n if (!email) { return false; }\n return new RegExp(LibUtil.formats.email.regex).test(email);\n }\n },\n cep: {\n mask: \"00000-000\",\n regex: \"^([0-9]{5}[-]?[0-9]{3})$\",\n validate: (cep: any) => {\n if (!cep) { return false; }\n cep = LibUtil.apenasNumeros(cep);\n return new RegExp(LibUtil.formats.cep.regex).test(cep);\n }\n }\n }\n\n static stringToDataBR = (data: string | null | undefined): string | null => {\n let resultado = null;\n if (LibUtil.classof(data) == \"null\" || LibUtil.classof(data) == \"undefined\") {\n return null;\n } else if (LibUtil.classof(data) == \"string\") {\n // Quando a data é \"YYYY-MM-DD\", ascrescenta 1 espaço para UTC.\n if (new RegExp(\"^[12][0-9]{3}[-][0-1][0-9][-][0-3][0-9]$\").test(data!)) {\n data += \" \";\n }\n // Tentativa Direta:\n resultado = new Date(data!).toLocaleString().replace(\",\", \"\");\n\n // Falhando, tenta converter pra número.\n if (resultado.toUpperCase() == \"INVALID DATE\") {\n resultado = new Date(Number(data)).toLocaleString().replace(\",\", \"\");\n\n // Agora tenta ver se a data inicia no formato br já\n if (resultado.toUpperCase() == \"INVALID DATE\") {\n // DD/MM/YYYY ?\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data!)) {\n resultado = new Date(LibUtil.dataToIsoData(data!)).toLocaleString().replace(\",\", \"\");\n }\n }\n }\n } else {\n LOG(1, \"❌ stringToDataBR(): A data precisa ser formato string: \", data, LibUtil.classof(data));\n }\n return resultado;\n }\n\n // ISO 8601 (Padrão Internacional)\n static dataToIsoData = (data: string): string => {\n // Converter de DD/MM/YYYY para YYYY-MM-DD\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\n\n }\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\n let novaData = data.slice(6, 10) + \"-\" + data.slice(3, 5) + \"-\" + data.slice(0, 2);\n let resto = data.slice(10, data.length);\n if (resto != \"\" && new RegExp(\"^ [0-2][0-9]:[0-5][0-9]:[0-5][0-9]\").test(resto)) {\n novaData += resto;\n }\n return novaData;\n }\n return data; // < Se falhar\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // ============================ SIGNALS DIRETO => CRUD E UTEIS ============================ \\\\\n\n // SET (SIGNAL)\n static sinalSet<T>(sinal: WritableSignal<any | undefined>, item: Partial<T>) {\n sinal.update(i => {\n if (!i) return item;\n return { ...i, ...item };\n });\n }\n\n // CREATE (SIGNAL)\n static sinalCreate<T>(sinal: WritableSignal<any[] | undefined>, item: T) {\n sinal.update(i => {\n if (!i) return [item];\n return [...i, item];\n });\n }\n\n // UPDATE (SIGNAL)\n static sinalUpdate<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, k: string, v?: string) {\n if (v != null && item) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => o[k as keyof T] === v ? { ...o, ...item } : o);\n });\n } else {\n if (v == null) {\n // PATCH UPDATE\n let value = item[k as keyof T];\n if (value != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => o[k as keyof T] === value ? { ...o, ...item } : o);\n });\n } else {\n LOG(1, `⚠️ sinalUpdate: A chave ${k} está nula. Passe o V desta chave para atualizar.`);\n }\n } else {\n LOG(1, `❌ Item ${k} chegou nulo para Update.`);\n }\n }\n }\n\n // DELETE (SIGNAL)\n static sinalDelete<T>(sinal: WritableSignal<any[] | undefined>, k: string, v?: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.filter((o: T) => o[k as keyof T] !== v);\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete.`);\n }\n }\n\n // CLEAR (SIGNAL)\n static sinalClear<T>(sinal: WritableSignal<any[] | undefined>) {\n sinal.set(undefined);\n }\n\n // EXISTS (SIGNAL) - Verifica se um item existe na lista\n static sinalExists<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string): boolean {\n if (v != null) {\n const items = sinal();\n if (!items) return false;\n return items.some((o: T) => o[k] === v);\n } else {\n return false;\n }\n }\n\n\n // MOVE UP (SIGNAL) - Move um item uma posição para cima\n static sinalMoveUp<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n const index = i.findIndex((o: T) => o[k] === v);\n if (index <= 0) return i; // Já está no topo ou não encontrado\n\n const newArray = [...i];\n [newArray[index - 1], newArray[index]] = [newArray[index], newArray[index - 1]];\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp.`);\n }\n }\n\n // MOVE DOWN (SIGNAL) - Move um item uma posição para baixo\n static sinalMoveDown<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n\n const index = i.findIndex((o: T) => o[k] === v);\n if (index < 0 || index >= i.length - 1) return i; // Já está no final ou não encontrado\n\n const newArray = [...i];\n [newArray[index], newArray[index + 1]] = [newArray[index + 1], newArray[index]];\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown.`);\n }\n }\n\n // MOVE TO INDEX (SIGNAL) - Move um item para uma posição específica\n static sinalMoveToIndex<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string, targetIndex: number) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n const currentIndex = i.findIndex((o: T) => o[k] === v);\n if (currentIndex < 0 || targetIndex < 0 || targetIndex >= i.length || currentIndex === targetIndex) {\n return i; // Item não encontrado, índice inválido ou já está na posição\n }\n const newArray = [...i];\n const [movedItem] = newArray.splice(currentIndex, 1);\n newArray.splice(targetIndex, 0, movedItem);\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveToIndex.`);\n }\n }\n\n static FlatRecursivo<T>(lista: T[], keyRecursive: keyof T): T[] {\n if (LibUtil.classof(lista) != \"array\") return [];\n\n let novaArray: T[] = [];\n lista.map(objeto => {\n if (LibUtil.classof(objeto) != \"object\") return;\n let novoObjeto: T = {} as T;\n for (let prop in objeto) {\n if (prop != keyRecursive) novoObjeto[prop] = objeto[prop];\n }\n novaArray = [...novaArray, novoObjeto];\n let children = objeto[keyRecursive] as T[];\n if (children != null) {\n novaArray = [...novaArray, ...LibUtil.FlatRecursivo(children, keyRecursive)];\n }\n })\n return novaArray;\n }\n\n // ============================ SIGNALS RECURSIVO => CRUD E UTEIS ============================ \\\\\n\n // Adiciona um novo item em uma estrutura hierárquica baseado na chave pai\n // CREATE RECURSIVE (SIGNAL)\n static sinalCreateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai?: string) {\n sinal.update(i => {\n if (!i) return [item];\n if (valuePai != null) {\n return i.map((o: T) => {\n return LibUtil._recursiveCreate<T>(o, item, keyRecursive, keyPai, valuePai);\n });\n } else {\n // Sem Pai inserir direto na raiz\n return [...i, item];\n }\n });\n }\n\n // Encontra o item pai pela chave e adiciona o novo item no array de filhos\n static _recursiveCreate<T>(atual: T, novo: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai: string): T {\n if (atual[keyPai] === valuePai) {\n // Encontrou o pai, adiciona o item no array recursivo\n if (atual[keyRecursive] == null) {\n (atual[keyRecursive] as T[]) = [novo];\n } else {\n (atual[keyRecursive] as T[]) = [...(atual[keyRecursive] as T[]), novo];\n }\n return atual;\n }\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map(child => {\n return LibUtil._recursiveCreate(child, novo, keyRecursive, keyPai, valuePai);\n })\n ];\n return atual;\n }\n\n // Atualiza um item específico em uma estrutura hierárquica\n // UPDATE RECURSIVE (SIGNAL)\n static sinalUpdateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => {\n return LibUtil._recursiveUpdate<T>(o, item, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Update Recursivo.`);\n }\n }\n\n // Encontra o item pela chave e atualiza suas propriedades\n static _recursiveUpdate<T>(atual: T, novo: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n if (atual[k] === v) {\n LOG(1, \"Editado\", { ...atual, ...novo })\n return { ...atual, ...novo };\n }\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map(child => {\n return LibUtil._recursiveUpdate(child, novo, keyRecursive, k, v);\n })\n ];\n return atual;\n }\n\n // Remove um item específico de uma estrutura hierárquica\n // DELETE RECURSIVE (SIGNAL)\n static sinalDeleteRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n // Primeiro verifica se precisa deletar no nível raiz\n const filteredRoot = i.filter((o: T) => o[k] !== v);\n // Se encontrou e removeu no nível raiz, retorna o array filtrado\n if (filteredRoot.length !== i.length) {\n return filteredRoot;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveDelete<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete Recursivo.`);\n }\n }\n // Encontra e remove o item pela chave, filtrando do array de filhos\n static _recursiveDelete<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n // Se tem filhos, processa os filhos\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Remove o item dos filhos se existir e processa recursivamente os filhos restantes\n const filteredChildren = children\n .filter(child => child[k] !== v)\n .map(child => LibUtil._recursiveDelete(child, keyRecursive, k, v));\n return { ...atual, [keyRecursive]: filteredChildren };\n }\n return atual;\n }\n\n // EXISTS RECURSIVE (SIGNAL) - Verifica se um item existe em uma estrutura hierárquica\n static sinalExistsRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\n if (v != null) {\n const items = sinal();\n if (!items) return false;\n return items.some((o: T) => {\n return LibUtil._recursiveExists<T>(o, keyRecursive, k, v);\n });\n } else {\n return false;\n }\n }\n\n // Função auxiliar para busca recursiva\n static _recursiveExists<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\n // Verifica se o item atual é o que estamos procurando\n if (atual[k] === v) return true;\n // Se tem filhos, procura recursivamente\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n return children.some(child => LibUtil._recursiveExists(child, keyRecursive, k, v));\n }\n return false;\n }\n\n // Move um item uma posição para cima na hierarquia\n // MOVE UP RECURSIVE (SIGNAL) - Para estruturas hierárquicas\n static sinalMoveUpRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n // Primeiro verifica se precisa mover no nível raiz\n const rootIndex = i.findIndex((o: T) => o[k] === v);\n if (rootIndex > 0) {\n const newArray = [...i];\n [newArray[rootIndex - 1], newArray[rootIndex]] = [newArray[rootIndex], newArray[rootIndex - 1]];\n return newArray;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveMoveUp<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp Recursivo.`);\n }\n }\n\n // Encontra o item e troca sua posição com o anterior no array\n static _recursiveMoveUp<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n // Se tem filhos, processa os filhos primeiro\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Verifica se precisa mover dentro dos filhos\n const targetIndex = children.findIndex(child => child[k] === v);\n if (targetIndex > 0) {\n const newChildren = [...children];\n [newChildren[targetIndex - 1], newChildren[targetIndex]] = [newChildren[targetIndex], newChildren[targetIndex - 1]];\n return { ...atual, [keyRecursive]: newChildren };\n }\n // Se não encontrou, processa recursivamente os filhos\n const processedChildren = children.map(child =>\n LibUtil._recursiveMoveUp(child, keyRecursive, k, v)\n );\n return { ...atual, [keyRecursive]: processedChildren };\n }\n return atual;\n }\n\n // Move um item uma posição para baixo na hierarquia\n // MOVE DOWN RECURSIVE (SIGNAL) - Para estruturas hierárquicas\n static sinalMoveDownRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n // Primeiro verifica se precisa mover no nível raiz\n const rootIndex = i.findIndex((o: T) => o[k] === v);\n if (rootIndex >= 0 && rootIndex < i.length - 1) {\n const newArray = [...i];\n [newArray[rootIndex], newArray[rootIndex + 1]] = [newArray[rootIndex + 1], newArray[rootIndex]];\n return newArray;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveMoveDown<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown Recursivo.`);\n }\n }\n\n // Encontra o item e troca sua posição com o próximo no array\n static _recursiveMoveDown<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Verifica se precisa mover dentro dos filhos\n const targetIndex = children.findIndex(child => child[k] === v);\n if (targetIndex >= 0 && targetIndex < children.length - 1) {\n const newChildren = [...children];\n [newChildren[targetIndex], newChildren[targetIndex + 1]] = [newChildren[targetIndex + 1], newChildren[targetIndex]];\n return { ...atual, [keyRecursive]: newChildren };\n }\n // Se não encontrou, processa recursivamente os filhos\n const processedChildren = children.map(child =>\n LibUtil._recursiveMoveDown(child, keyRecursive, k, v)\n );\n return { ...atual, [keyRecursive]: processedChildren };\n }\n return atual;\n }\n\n static sinalSetOrderRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T, i) => {\n return LibUtil._recursiveSetOrder<T>(o, keyRecursive, k, propOrder, i);\n });\n });\n }\n\n static _recursiveSetOrder<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T, index: number): T {\n atual = { ...atual, [propOrder]: index };\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map((child, i) => {\n return LibUtil._recursiveSetOrder(child, keyRecursive, k, propOrder, i);\n })\n ];\n return atual;\n }\n\n // ============================ ATALHOS PERSONALIZADOS ============================ \\\\\n\n static Q = (query: any) => {\n // Busca elemento único, podendo buscar ele mesmo. (Bifurcacado)\n if (LibUtil.classof(query) == \"string\") return document.querySelector(query);\n return query;\n };\n\n static QAll = (query: any): any[] => {\n // Sempre retorna uma array de encontrados. Inclusive uma array com um LibUtil.Q\n if (LibUtil.classof(query) == \"string\") {\n // Se buscando uma string, retorna a array do select encontrado\n return Array.from(document.querySelectorAll(query));\n } else if (LibUtil.classof(query).endsWith(\"Element\")) {\n // Quando buscar um único elemento, retorna o elemento em uma lista.\n return [query];\n } else if (LibUtil.classof(query) == \"array\") {\n // Quando buscar uma array, retorna a propria array. (Bifurcado)\n return query;\n } else {\n LOG(1, \"⚠️ QAll() - Requer String / Elemento / Array. ClassOf: \", LibUtil.classof(query), \" Query: \", query);\n return [];\n }\n };\n\n static QverOff = (query: Element | HTMLElement | string | null = \"body\"): any[] => {\n // Adiciona Classe Oculto em todos os elementos do Query\n // Retorna uma array de elementos por causa do QAll\n return LibUtil.aCadaElemento(query, (e: any) => {\n e?.classList.add(\"oculto\");\n });\n };\n\n static QverOn = (query: Element | HTMLElement | string | null = \"body\") => {\n // Remove classe Oculto em todos os elementos do Query\n // Retorna uma array de elementos por causa do QAll\n return LibUtil.aCadaElemento(query, (e: any) => {\n e?.classList.remove(\"oculto\");\n });\n };\n\n static dataGetMs = (data: string | null = null): number => {\n // Retorna Milisegundos da data no formato Javascript\n if (data != null) {\n if (data.length > 10) {\n // Recomendado que os dados cheguem: 'YYYY-MM-DD HH:MM:SS'\n return new Date(data).getTime(); // Recomendado que os dados \n } else {\n let dataCortada = data.split(\"-\");\n let oDia: number = Number(dataCortada[2]);\n let oMes: number = Number(dataCortada[1]) - 1;\n let oAno: number = Number(dataCortada[0]);\n return new Date(oAno, oMes, oDia).getTime();\n }\n } else return new Date().getTime();\n };\n\n static dataMsToSegundos = (num: number, reverse: boolean = false) => {\n if (reverse) {\n return num * 1000;\n }\n return Math.trunc(num / 1000); // 1000 ms == 1s\n }\n\n static dataMsToDias = (num: number, reverse: boolean = false) => {\n // 1000 * 3600 * 24 Considerando todo dia tiver 24 horas (~23h 56m 4.1s)\n // (360º translacao / 86400000) = ~4.1\n // Então o erro de 1 dia ocorre 1x ao ano (Dia represeta 1436min).\n // Por isso, é melhor trabalhar com Dias em vez de outro formato maior.\n if (reverse) {\n return Math.trunc(num * 86400000);\n }\n return Math.trunc(num / 86400000);\n };\n\n static dataGetSegundosDiferenca = (msDe: number, msAte: number | null = null): number => {\n // Retorna a diferença de segundos entre dois MS\n if (msAte == null) msAte = LibUtil.dataGetMs();\n return LibUtil.dataMsToSegundos(msAte - msDe);\n };\n\n static dataGetDiasDiferenca = (msDe: number, msAte: number | null = null): number => {\n // Retorna a diferença de dias entre dois MS\n if (msAte == null) msAte = LibUtil.dataGetMs();\n return LibUtil.dataMsToDias(msAte - msDe);\n };\n\n static dataShowTempoDiferenca = (msDe: number | string, msAte: number | string | null = null) => {\n if (LibUtil.classof(msDe) == \"string\") msDe = LibUtil.dataGetMs(msDe as string);\n if (LibUtil.classof(msAte) == \"string\") msAte = LibUtil.dataGetMs(msAte as string);\n let dias = LibUtil.dataGetDiasDiferenca(msDe as number, msAte as number | null);\n if (dias < 0) {\n dias = dias * -1;\n }\n let strTempo = \"\";\n if (dias > 29) { // Em Meses\n if (dias < 60) {\n strTempo = \"1 mês\";\n } else {\n if (dias > 365) { // Em Anos (+ Meses restantes)\n let anos = Math.floor(dias / 365);\n let diasRestoAno = dias % 365;\n if (anos < 2) {\n strTempo += anos + \" ano \";\n } else {\n strTempo += anos + \" anos \";\n }\n if (diasRestoAno > 30) {\n if (diasRestoAno < 60) {\n strTempo += \"1 mês\";\n } else {\n strTempo += Math.floor(diasRestoAno / 30) + \" meses\";\n }\n }\n } else {\n strTempo = Math.floor(dias / 30) + \" meses\";\n }\n }\n } else {\n if (dias < 1) {\n let segundos = LibUtil.dataGetSegundosDiferenca(msDe as number, msAte as number);\n if (segundos > 7199) { // Em Horas\n strTempo = Math.floor(segundos / 3600) + \" horas\";\n } else {\n if (segundos > 3599) {\n strTempo = \"1 hora\";\n } else {\n if (segundos > 119) { // Em Minutos\n strTempo = Math.floor(segundos / 60) + \" minutos\";\n } else {\n if (segundos > 59) {\n strTempo = \"1 minuto\";\n } else {\n strTempo = Math.floor(segundos) + \" segundos\";\n }\n }\n }\n }\n } else { // Em Dias\n strTempo = dias + \" dias\";\n }\n }\n if (strTempo.includes(\"NaN\")) return \"\";\n return strTempo;\n }\n\n static displayCelular = (area: string, numero: string, isoDDI?: string): string => {\n if (numero == null) numero = \"\"\n else numero = LibUtil.apenasNumeros(numero);\n if (area == null) area = \"\";\n else area = LibUtil.apenasEstes(area, \"0-9\\+\");\n if (numero == \"\" && area == \"\") return \"\";\n let displayArea = area;\n let displayNumero = numero;\n let displayFlag = \"\";\n if (numero != \"\" && displayArea == \"\") displayArea = \"+55\"\n if (displayArea == \"+55\") {\n numero = numero.slice(0, 11); // No brasil o limite é 9.\n displayNumero = numero;\n let apenasCelular = numero.slice(2, 11);\n if (apenasCelular.length == 9) {\n apenasCelular = apenasCelular.slice(0, 5) + \"-\" + apenasCelular.slice(5, 9);\n }\n displayNumero = \"(\" + numero.slice(0, 2) + \") \" + apenasCelular;\n }\n if (isoDDI != null) {\n displayFlag = LibUtil.displayFlag(isoDDI);\n }\n return `${displayFlag}<a href=\"tel:${area || \"\"}${numero || \"\"}\">${displayArea} ${displayNumero}</a>`\n }\n\n static displayFlag = (pais: string): string => {\n if (pais != null) {\n return `<img class=\"flagSizeIco\" src=\"/images/Paises/${pais || \"transparent\"}.svg\" alt=\"${pais || \"transparent\"}\" onerror=\"base_imgonerror(this);\"> `\n }\n return \"\";\n }\n\n static diaEMes(data: string): string {\n //Retorna: 01 de Abril\n let arrData = LibUtil.stringToDataBR(data)?.split(\" \")?.[0]?.split(\"/\");\n return arrData?.[0] + \" de \" + LibUtil.meses.get(Number(arrData?.[1] || 0))?.[0];\n }\n\n // =============== Gerenciamento Monetário / Numérico / Locale =================== \\\\\n static toNumber = (valor: any, casas: number = 2): number => {\n // Informando String/Number, converte para o número de casas c.casas (padrão 2).\n // LibUtil.toNumber(\"R$ 1.222,333\") => 1222.33\n if (valor != null) {\n if (LibUtil.classof(valor) == \"string\") {\n // Possiveis separadores\n let us = [\".\", \",\"].reduce((x, y) => (valor.lastIndexOf(x) > valor.lastIndexOf(y)) ? x : y);\n let posPonto = valor.lastIndexOf(us)\n if (posPonto >= 0) {\n let i = valor.slice(0, posPonto);\n let d = valor.slice(posPonto + 1).slice(0, 2).padEnd(2, \"0\");\n i = [...i.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\n d = [...d.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\n valor = i + \".\" + d;\n } else {\n valor = [...valor.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\").padStart(3, \"0\")\n valor = valor.padStart(casas, \"0\");\n valor = valor.slice(0, -(casas)) + (casas > 0 ? \".\" : \"\") + valor.slice(-(casas));\n }\n } else if (LibUtil.classof(valor) == \"number\") {\n valor = valor.toFixed(casas); // <= Vira String, mas essa função apenas devolve Number\n } else {\n LOG(1, \"❌ toNumber() - Formato de entrada não implementado: \", LibUtil.classof(valor));\n }\n return Number(valor); // <= OutPut Number\n }\n return 0; // <= OutPut Number\n };\n\n // ============================= ARMAZENADORES ESTÁTICOS ============================ \\\\\n static a: any = {\n ALL: \"*/*\", // ContentType Blob\n FORMDATA: \"multipart/form-data\", // ContentType FORM\n GET: \"GET\", // Api Method GET\n HTML: \"text/html\", // ContentType HTML\n JSON: \"application/json\", // ContentType JSON\n POST: \"POST\", // Api Method POST\n DELETE: \"DELETE\", // Api Method DELETE\n SVGINI: \"<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'>\",\n SVGFIM: \"</svg>\",\n timers: [] as any, // Array para guardar timers em andamento ou finalizados\n wpool: null as any | null, // WorkerPool quando iniciado\n }\n\n static meses = new Map([\n [1, [\"Janeiro\", \"JAN\", \"01\"]],\n [2, [\"Fevereiro\", \"FEV\", \"02\"]],\n [3, [\"Março\", \"MAR\", \"03\"]],\n [4, [\"Abril\", \"ABR\", \"04\"]],\n [5, [\"Maio\", \"MAI\", \"05\"]],\n [6, [\"Junho\", \"JUN\", \"06\"]],\n [7, [\"Julho\", \"JUL\", \"07\"]],\n [8, [\"Agosto\", \"AGO\", \"08\"]],\n [9, [\"Setembro\", \"SET\", \"09\"]],\n [10, [\"Outubro\", \"OUT\", \"10\"]],\n [11, [\"Novembro\", \"NOV\", \"11\"]],\n [12, [\"Dezembro\", \"DEZ\", \"12\"]],\n ]);\n\n // ============================ TOOLS e JS HELPERS ================================ \\\\\n\n static isJson = (s: any): boolean => {\n try {\n JSON.parse(s);\n } catch (e) {\n return false;\n }\n return true;\n };\n\n static stringify = (o: any): string => {\n // Converte o Objeto em String JSON, e aproveita e já remove alguns caracteres de controle.\n return JSON.stringify(o)\n ?.replace(new RegExp(\"\\n\", 'g'), \"\")\n ?.replace(new RegExp(\"\\r\", 'g'), \"\")\n ?.replace(new RegExp(\"\\t\", 'g'), \"\")\n ?.replace(new RegExp(\"\\b\", 'g'), \"\")\n ?.replace(new RegExp(\"\\f\", 'g'), \"\")\n };\n\n static parseJSON = (t: any) => {\n // Se for um JSON válido. Retorna o objeto, se não null.\n if (t === \"\") return \"\";\n let resultado = null;\n try {\n resultado = JSON.parse(t);\n } catch (e) {\n LOG(1, \"❌ JSON Inválido: Não foi possível converter o JSON.\");\n return null;\n }\n return resultado;\n };\n\n // String qualquer em string com números\n static convertToNumeric = (texto: string): Array<number> => {\n let arrayDeNumeros = [];\n for (const char of texto) {\n arrayDeNumeros.push(char.codePointAt(0) || 0);\n }\n return arrayDeNumeros;\n }\n\n // COnversor para Texto.\n static convertToTexto = (arrayNumeros: Array<number>): string => {\n return String.fromCodePoint(...arrayNumeros);\n }\n\n // Conversor para Texto, separado por virgula\n static convertToTexto2 = (stringNumeros: string): string => {\n return String.fromCodePoint(...stringNumeros.split(\",\").map(i => Number(i)));\n }\n\n static aCadaElemento = (query: any, fn: Function): any[] => {\n // A cada elemento encontrado pelo QAll executa a funcao\n let elementos = LibUtil.QAll(query);\n elementos.forEach((e: any) => {\n fn(e);\n });\n // Sempre retorna uma array por caus do QAll\n return elementos;\n };\n\n // Executa a FUNCAO em todas as propriedades deste OA. Inclusive Obj.Obj... (Matriz de Dados)\n static aCadaSubPropriedade = (OA: any, funcao: Function | null = null, exceto: string = \"Object\") => {\n let c = 0;\n for (let a in OA) {\n if (LibUtil.classof(OA[a]) != exceto) {\n if (funcao) {\n funcao(OA[a], a, OA);\n }\n }\n c++;\n // Se o atual é objeto, itera internamente\n if (LibUtil.classof(OA[a]) == \"object\") {\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\n }\n // Se o atual é array, itera internamente\n if (LibUtil.classof(OA[a]) == \"array\") {\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\n }\n }\n return c;\n };\n\n static apenasEstes = (s: string = \"\", regexPossiveis: string = \"0-9\\+\"): string => {\n if (s == null) return \"\";\n let regex = new RegExp(\"(?![\" + regexPossiveis + \"]).\");\n return s.toString().replace(regex, \"\");\n }\n\n static getV = (keys: string | string[], objeto: any): any => {\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\n // LibUtil.getV(\"a.b.c\",{a:{b:{c:\"d\"}}})\n if (LibUtil.classof(objeto) == \"object\") {\n if (LibUtil.classof(keys) == \"string\") {\n if (keys.includes(\".\")) {\n // Multi\n let ks: string[] = (keys as string).split(\".\");\n let lastObj = objeto;\n let lastV = {};\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\n ks.forEach((k) => {\n if (lastObj) { // Pode ficar nulo durante\n lastV = lastObj[k];\n if (typeof lastV == \"object\") {\n lastObj = lastV;\n } else {\n lastObj = null;\n }\n }\n });\n return lastV;\n } else {\n // Simples\n return objeto[(keys as string)];\n }\n } else if (LibUtil.classof(keys) == \"array\") {\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.\n let lastV = null;\n for (let k of (keys as string[])) {\n lastV = LibUtil.getV(k, objeto);\n if (lastV != null) {\n return lastV;\n }\n }\n } else {\n LOG(1, \"❌ getV() - Nome da propriedade precisa ser em String. (\" + LibUtil.classof(keys) + \"):\", keys);\n }\n } else {\n LOG(1, \"❌ Para ver a chave, o parametro objeto precisa receber um objeto. (\" + typeof objeto + \")\");\n }\n return null;\n };\n\n static setV = (keys: string, value: any, objeto: any) => {\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\n // LibUtil.setV(\"a.b.c\",\"mudei\",{a:{b:{c:\"d\"}}})\n if (typeof objeto == \"object\") {\n if (LibUtil.classof(keys) == \"string\") {\n if (keys.includes(\".\")) {\n // Multi\n let ks: string[] = keys.split(\".\");\n let lastObj = objeto;\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\n ks.forEach((k) => {\n if (ks.indexOf(k) == (ks.length - 1)) {\n // Último\n lastObj[k] = value;\n } else {\n if (LibUtil.classof(lastObj[k]) != \"object\") {\n lastObj[k] = {};\n }\n }\n lastObj = lastObj[k];\n });\n return objeto;\n } else {\n // Set direto, não tem ponto e é string\n objeto[keys] = value;\n return objeto;\n }\n } else {\n LOG(1, \"❌ setV() - Nome da propriedade precisa ser em string. (\" + LibUtil.classof(keys) + \"):\", keys);\n }\n } else {\n LOG(1, \"❌ setV() - Objeto precisa receber um objeto. (\" + typeof objeto + \")\");\n }\n return null;\n };\n\n static geraObjForm = (form: any) => {\n // Gerar Objeto a partir de um Form Entries\n if (LibUtil.classof(form) != \"object\") {\n // Se vier o Elemento Form / o Query do Form\n form = LibUtil.Q(form);\n }\n // Coleta apenas os campos com value.\n let rObjeto: any = [...form.querySelectorAll(\" *[name]\")]\n .map(o => { return { [o.name]: o.value } })\n .reduce((a, o) => { a = { ...a, ...o }; return a; }, {});\n if (form) {\n\n for (let [k, v] of Object.entries(rObjeto)) {\n LibUtil.setV(k, v, rObjeto);\n if (k.includes(\".\")) {\n delete rObjeto[k];\n }\n }\n Array.from(form.querySelectorAll(\"mk-sel\")).forEach((e: any) => {\n // rObjeto[mk.name] = mk.value;\n LibUtil.setV(e.name, e.value, rObjeto);\n });\n // Aqui apenas coleta os mkBot que foram modificados pelo usuário.\n Array.from(form.querySelectorAll(\"mk-bot.changed\")).forEach((e: any) => {\n // rObjeto[mk.name] = mk.value;\n LibUtil.setV(e.name, e.value, rObjeto);\n });\n }\n return rObjeto;\n }\n\n static funcoesDinamicas = new Map<string, Function>();\n static aCada1s = () => {\n Array.from(LibUtil.funcoesDinamicas.values()).map((fn: Function) => { if (fn != null) fn() });\n setTimeout(() => {\n LibUtil.aCada1s();\n }, 1000);\n };\n\n static cortarString = (linha: string, regex: string, casas: any) => {\n let resultado: any = \"\";\n try {\n resultado = new RegExp(regex).exec(linha)?.groups?.[\"ok\"];\n } catch (e) {\n LOG(1, \"Regex Inválido. \", e);\n return \"0\";\n }\n if ((!casas) || (casas == \"\") || (casas <= 0)) casas = 0;\n return `${LibUtil.toNumber(resultado, casas)}`;\n }\n\n static uuid = () => {\n // Padrão UUIDV4 - Gerador de identificador unico\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (c: any) => { // c = String\n return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);\n }).toString().toUpperCase();\n }\n\n // mk.isRoute(\"/Pesagem$\") // <= Rota termina com /Pesagem\n static isRoute = (rotaRegex: string) => {\n return new RegExp(rotaRegex).test(window.location.pathname);\n }\n\n static verificarIgualdade(array: any[], propriedades: string[]) {\n // Verifica se várias propriedades estão iguais em todos os objetos de um array.\n if (array.length <= 1) return true;\n const primeiro = array[0];\n return array.every(objeto => {\n return propriedades.every(propriedade => {\n // Verifica se a propriedade existe em ambos os objetos antes da comparação\n if (!(propriedade in objeto) || !(propriedade in primeiro)) {\n LOG(1, `⚠️ Propriedade '${propriedade}' ausente em um ou mais objetos.`);\n return false; // considera falso se a propriedade não existir\n }\n return objeto[propriedade] === primeiro[propriedade];\n });\n });\n }\n\n static individualNoObjeto(array: any[], propriedade: string): any[] {\n // Ignora os Objetos que esta Propriedade se repetir.\n let novoSet = new Set(array.map((o) => { return o[propriedade] }));\n return array.map((o) => {\n if (novoSet.has(o[propriedade])) {\n novoSet.delete(o[propriedade]);\n return o;\n } else return null;\n }).filter(o => o);\n }\n\n static hasFaltante(array: any[], propriedades: string[]) {\n // Verifica as propriedades informadas estão disponíveis em todos os objetos do array.\n if (array.length <= 0) return false;\n return array.every(objeto => {\n return propriedades.every(propriedade => {\n if (!(propriedade in objeto)) {\n return true;\n }\n return false;\n });\n });\n }\n\n static somarEmObjeto(lista: any[], propriedade: string) {\n // Soma uma determinada propriedade em uma lista\n return lista.reduce((acc: number, val: any) => {\n if (LibUtil.classof(val[propriedade]) == \"number\") {\n return acc + val[propriedade];\n }\n return acc;\n }, 0);\n }\n\n static capitalize = (texto?: string | null): string => {\n let arrayTexto = texto?.toString().split(\" \");\n return arrayTexto?.map(str => {\n let str_low = str.toLowerCase();\n if ([\"da\", \"de\", \"do\", \"das\", \"dos\", \"e\"].includes(str_low)) {\n return str_low;\n } else {\n return str_low.charAt(0).toUpperCase() + str_low.slice(1);\n }\n }).join(\" \") || \"\";\n };\n\n static GetParam = (name: string | null = null, url: string | null = null) => {\n // Coleta o valor do parametro da url.\n if (!url) url = document.location.toString();\n if (name != null) {\n return new URL(url).searchParams.get(name);\n } else {\n return new URL(url).searchParams.toString();\n }\n }\n\n static getParamObject = (url?: string) => {\n if (!url) url = document.location.toString();\n return url?.split(\"?\")[1]?.split(\"&\")?.reduce((acc: any, val: string) => {\n const [key, value] = val.split(\"=\");\n acc[key] = value;\n return acc;\n }, {});\n }\n\n static toQueryString(obj?: any, urlAtual: string = \"\"): string {\n if (obj) {\n // Quando é GET, modifica a URL e acrescenta os QUERYSTRING do objeto enviado por parametro.\n if (obj != null) {\n if (!urlAtual.includes(\"?\")) {\n urlAtual = urlAtual + \"?\"; // Cria o divisor entre os dados do query e o endereço destino.\n }\n let queryStrings = \"\";\n if (LibUtil.classof(obj) == \"object\") {\n for (let propriedade in obj) {\n if (LibUtil.classof(obj[propriedade]) == \"object\") {\n let propJson = JSON.stringify(obj[propriedade]);\n queryStrings += `&${propriedade}=${propJson}`;\n LOG(1, `⚠️ toQueryString() - Uma propriedade enviada: '${propriedade}' era um objeto. Url`, urlAtual);\n } else {\n if (obj[propriedade] != null) {\n queryStrings += `&${propriedade}=${obj[propriedade]}`;\n }\n }\n }\n } else {\n LOG(1, \"❌ Dados enviados via GET precisam ser Object. Dados: \", LibUtil.classof(obj));\n }\n urlAtual = urlAtual + queryStrings;\n }\n }\n if (urlAtual.endsWith(\"?\")) urlAtual = urlAtual.slice(0, -1); // Remove o ? final se não tiver nada depois.\n urlAtual = urlAtual.replaceAll(\"?&\", \"?\");\n return urlAtual;\n }\n\n /**\n * Mapeia uma EntidadeA para EntidadeB usando o TRANSFORMA\n * É nescessário informar o DE/PARA/TRANSFORMA de cada propriedade.\n */\n static mapearEntidade<T, U>(\n entidadeOrigem: T,\n mapeamento: MapeamentoItem<T, U>[]\n ): U {\n const entidadeDestino: any = {};\n mapeamento.forEach(item => {\n const valor = entidadeOrigem[item.de];\n if (valor !== undefined) {\n entidadeDestino[item.para] = item.transforma(valor);\n } else {\n entidadeDestino[item.para] = null;\n }\n });\n return entidadeDestino as U;\n\n }\n\n /**\n * Faz uma tentativa de obter uma url, mas se falhar, retorna nulo\n */\n static getURL(urlQuery?: string) {\n let url;\n if (urlQuery) {\n try {\n url = new URL(urlQuery);\n } catch (e) {\n LOG(1, \"❌ URL INVÁLIDA: \", urlQuery);\n }\n }\n return url;\n }\n\n static conversorCSS(texto: string): string[] {\n const regex = /\\.([a-z0-9-]+)\\s*{.*?}/g;\n let arrayTexto = texto.replace(/\\s+/g, ' ').replace(/[\\r\\n]/g, '').replace(regex, (match, group1) => group1 + \",\").trim().split(\",\");\n return arrayTexto.map(i => i.trim()).filter(o => o != \"\");\n }\n\n static sort<T, K extends keyof T>(array: T[], propriedade: K): T[] {\n return array.sort((a, b) => (a[propriedade] < b[propriedade] ? -1 : 1));\n }\n\n static converteEnterEmBr(texto: string): string {\n return texto.replace(/\\n/g, \"<br>\");\n }\n\n static hasHtmlTags(texto: string): boolean {\n const regex = /<\\/?[a-z][\\s\\S]*>/i;\n return regex.test(texto);\n }\n\n\n /**\n * Une duas listas quando elas tem uma propriedade em comum\n * @param listaA Lista a ser sobreescrita ou preenchida\n * @param listaB Lista com os dados para preencher ou sobreescrever\n * @param propEmComum Nome da propriedade que, se estiver em comum nas listas, será populado, do contrário não.\n * @returns Lista Unida por um Filtro.\n */\n static Union(listaA: any[], listaB: any[], propEmComum?: string): any[] {\n let resultado = listaA.map(itensA => ({\n ...itensA,\n ...listaB.filter(o => o[propEmComum as keyof typeof o]?.toString() == itensA[propEmComum as keyof typeof listaA]?.toString())[0],\n }));\n G_START(3, \"Unindo Listas...\")\n LOG(3, \"ListaA: \", listaA);\n LOG(3, \"ListaB: \", listaB);\n LOG(3, \"Resultado: \", resultado);\n G_END(3);\n return resultado;\n }\n\n /**\n * Gera uma string menor que a informada.\n * @returns \n */\n static gerarHashCurto(texto: string, tamanho: number = 8): string {\n let hash = 0;\n for (let i = 0; i < texto.length; i++) {\n hash = ((hash << 5) - hash) + texto.charCodeAt(i);\n hash = hash & hash; // Converte para inteiro de 32 bits\n }\n // Converter para string hexadecimal positiva e pegar os primeiros caracteres\n return Math.abs(hash).toString(16).substring(0, tamanho);\n }\n\n static gerarNomeColection(nomeSistema: string, colecao: string): string {\n return LibUtil.gerarHashCurto(nomeSistema) + \"_\" + colecao;\n }\n\n\n static apenasNumerosLetras = (s: string = \"\"): string => {\n if (s == null) return \"\";\n // Ignora qualquer outro caracter além de Numeros e Letras formato ocidental\n return s.replace(/(?![a-zA-Z0-9])./g, \"\");\n };\n\n static removeEspecias = (s: string): string => {\n if (s == null) return \"\";\n // Remove acentos e depois chama Apenas Números e Letras.\n s = s.toString();\n return LibUtil.apenasNumerosLetras(LibUtil.removeAcentos(s));\n };\n\n static LerTexto = async (texto = \"Teste som: 1, 2, 3.\", locutor = 0) => {\n let lerVoz = window.speechSynthesis;\n let listaVozes = lerVoz.getVoices().filter(o => o.lang.toLowerCase() == \"pt-br\");\n let locutorEncontrado = listaVozes[locutor] || listaVozes[0] || null;\n return new Promise((r) => {\n if (lerVoz.speaking) {\n LOG(1, \">> Ainda está reproduzindo. Tente mais tarde.\");\n return;\n }\n if (texto != \"\") {\n const ssu = new SpeechSynthesisUtterance(texto);\n ssu.lang = \"pt-BR\";\n ssu.voice = locutorEncontrado;\n ssu.pitch = 0; // Tom de voz\n ssu.rate = 1.5; // Velocidade\n ssu.onend = (ev) => { r(true) };\n ssu.onerror = (ev) => { LOG(1, \"❌ Erro: \", ev.error); r(false) };\n lerVoz.cancel();\n lerVoz.speak(ssu);\n }\n });\n }\n\n static async LerProximoERemover(playlist: string[]) {\n if (await LibUtil.LerTexto(playlist[0]) == true) {\n playlist.shift();\n }\n return playlist;\n }\n\n static LeituraInterrompida() {\n window.speechSynthesis.cancel();\n }\n\n static gerarNumeroInteiro(min: number, max: number): any {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n static SelectInner(e: HTMLInputElement) {\n // Seleciona texto do elemento\n if (window.getSelection) {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(e);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n\n static generatePrimaryKey(item: any, primarykey: string): any {\n if (item == null) {\n LOG(1, \"❌ Não foi possível gerar uma chave, pois o objeto ainda não está preenchido.\")\n return item;\n }\n\n if (LibUtil.classof(item) != \"object\") {\n LOG(1, \"⚠️ Não foi possível gerar uma chave neste tipo de variável: \", LibUtil.classof(item));\n return item;\n }\n\n if (item[primarykey] != null) {\n LOG(5, \"Chave não gerada no objeto, pois já estava preenchido com:\", item[primarykey]);\n return item;\n }\n\n item[primarykey] = LibUtil.uuid();\n return item;\n }\n\n static hslToHex(h: number, s: number, l: number) {\n // Normalize saturation and lightness to a 0-1 range\n s /= 100;\n l /= 100;\n\n let c = (1 - Math.abs(2 * l - 1)) * s,\n x = c * (1 - Math.abs(((h / 60) % 2) - 1)),\n m = l - c / 2,\n r = 0,\n g = 0,\n b = 0;\n\n if (0 <= h && h < 60) {\n r = c;\n g = x;\n b = 0;\n } else if (60 <= h && h < 120) {\n r = x;\n g = c;\n b = 0;\n } else if (120 <= h && h < 180) {\n r = 0;\n g = c;\n b = x;\n } else if (180 <= h && h < 240) {\n r = 0;\n g = x;\n b = c;\n } else if (240 <= h && h < 300) {\n r = x;\n g = 0;\n b = c;\n } else if (300 <= h && h < 360) {\n r = c;\n g = 0;\n b = x;\n }\n\n // Convert RGB values to 0-255 range\n r = Math.round((r + m) * 255);\n g = Math.round((g + m) * 255);\n b = Math.round((b + m) * 255);\n\n // Convert RGB components to hexadecimal and pad with leading zero if needed\n const toHex = (c: any) => {\n const hex = c.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n\n static isFilled(dados: any): boolean {\n if (LibUtil.classof(dados) == \"array\") {\n if ((dados as Array<any>).length && (dados as Array<any>).length > 0) {\n return true;\n }\n }\n return false;\n }\n\n static replace(regex: string, valor: string | number): string {\n if (typeof valor === \"number\") valor = valor.toString();\n return valor.replace(new RegExp(regex, 'g'), '');\n }\n\n // Mínimo 2 timestamps\n static calculateJitter(timestamps: number[]): number {\n if (timestamps.length < 2) return 0;\n\n const delays = [];\n for (let i = 1; i < timestamps.length; i++) {\n delays.push(timestamps[i] - timestamps[i - 1]);\n }\n\n if (delays.length < 2) return 0;\n let totalJitterDifference = 0;\n\n for (let i = 1; i < delays.length; i++) {\n totalJitterDifference += Math.abs(delays[i] - delays[i - 1]);\n }\n\n return totalJitterDifference / (delays.length - 1);\n }\n\n // Soma os valores dos arrays por índice\n static somarPorIndice = (arrays: number[][]): number[] => {\n if (arrays.length === 0) return [];\n return arrays.reduce((acc, arr) =>\n arr.map((val, i) => (acc[i] || 0) + val)\n );\n }\n\n // Soma os valores dos arrays\n static somarArrayInterna = (arrays: number[][]): number[] => {\n if (arrays.length === 0) return [];\n return arrays.map(a => a.reduce((acc, v) => acc + v, 0));\n }\n\n // Faz o download de um Blob()\n static downloadBlob = (blob: Blob, nomeArquivo: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = nomeArquivo;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n static wordsToCamelCase(texto: string): string {\n // Se houver espaços, traços, undercores, converte para camelCase\n return texto.split(/[\\s-_]+/)\n .map((word, index) =>\n index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)\n ).join('');\n }\n\n static camelCase(texto: string): string {\n return texto.charAt(0).toLowerCase() + texto.slice(1);\n }\n\n static pascalCase(texto: string): string {\n return texto.charAt(0).toUpperCase() + texto.slice(1);\n }\n\n static dashedCase(texto: string): string {\n // Converte camelCase ou PascalCase para dashed-case\n return texto.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n static separaWordsCase(texto: string): string {\n // Separa as palavras ao trocar de letra minúscula para maiúscula.\n // CodigoIBGE => Codigo IBGE\n let textoSeparado = texto.replace(/([a-z])([A-Z])/g, '$1 $2');\n return textoSeparado;\n }\n\n // Separa as palavras por espaço, traço ou underline, e retorna um array com as palavras.\n static wordsArray(texto: string): string[] {\n return texto.split(/[\\s-_]+/).filter(word => word.length > 0);\n }\n\n static tentaAcentuarTexto(s: string | string[]): string {\n // Utiliza regras de acentuação de português para tentar acentuar a palavra informada.\n if (LibUtil.classof(s) == \"array\") {\n return (s as string[]).map((palavra) => LibUtil.tentaAcentuarTexto(palavra)).join(\" \");\n }\n let texto = (s as string);\n if (texto.endsWith(\"ao\")) {\n texto = texto.slice(0, -2) + \"ão\"; // Ex: mão\n }\n if (texto.endsWith(\"oes\")) {\n texto = texto.slice(0, -3) + \"ões\"; // Ex: permissões\n }\n if (texto.endsWith(\"cao\") || texto.endsWith(\"çao\") || (texto.endsWith(\"cão\") && texto != \"cão\")) {\n texto = texto.slice(0, -3) + \"ção\"; // Ex: ação\n }\n if (texto.endsWith(\"coes\") || texto.endsWith(\"çoes\") || texto.endsWith(\"cões\")) {\n texto = texto.slice(0, -4) + \"ções\"; // Ex: observações\n }\n\n return texto;\n }\n\n static pluralOf(word: string | string[]): string {\n // Retorna o plural da palavra informada em português\n if (LibUtil.classof(word) == \"array\") {\n return (word as string[]).map((palavra) => LibUtil.pluralOf(palavra)).join(\" \");\n }\n\n let texto = (word as string);\n if (texto.endsWith(\"ão\")) {\n return texto.slice(0, -2) + \"ões\";\n } else if (texto.endsWith(\"ões\")) {\n return texto.slice(0, -3) + \"ões\";\n } else if (texto.endsWith(\"r\") || texto.endsWith(\"s\") || texto.endsWith(\"z\")) {\n return texto + \"es\";\n } else if (texto.endsWith(\"m\")) {\n return texto.slice(0, -1) + \"ns\";\n } else if (texto.endsWith(\"l\")) {\n return texto.slice(0, -1) + \"is\";\n } else {\n return texto + \"s\";\n }\n }\n\n static setFormConfigs(configs: Partial<IFieldComponent<any>>): void {\n LibUtil.formConfigs = configs;\n }\n\n static paraPortugues(texto: string): string {\n let acentuado = LibUtil.tentaAcentuarTexto(LibUtil.wordsArray(LibUtil.separaWordsCase(texto)))\n return LibUtil.replaceDicionario(acentuado);\n }\n\n static paraPortuguesPlural(texto: string): string {\n let plural = LibUtil.pluralOf(LibUtil.paraPortugues(texto))\n return plural;\n }\n\n // Dicionário\n static replaceDicionario(texto: string): string {\n if (texto.startsWith(\"Is \")) {\n texto = texto.replace(/^Is /, \"É \");\n }\n texto = texto.replaceAll(\"Codigo\", \"Código\");\n texto = texto.replaceAll(\"Icone\", \"Ícone\");\n texto = texto.replaceAll(\"Enderec\", \"Endereç\");\n texto = texto.replaceAll(\"Balanc\", \"Balanç\");\n texto = texto.replaceAll(\"Usuari\", \"Usuári\");\n texto = texto.replaceAll(\"Lancamento\", \"Lançamento\");\n texto = texto.replaceAll(\"Referencia\", \"Referência\");\n texto = texto.replaceAll(\"Ultim\", \"Últim\");\n texto = texto.replaceAll(\"Numero\", \"Número\");\n texto = texto.replaceAll(\"Inicio\", \"Início\");\n texto = texto.replaceAll(\"Socio\", \"Sócio\");\n texto = texto.replaceAll(\"Socia\", \"Sócia\");\n texto = texto.replaceAll(\"Especie\", \"Espécie\");\n texto = texto.replaceAll(\"Cobranca\", \"Cobrança\");\n texto = texto.replaceAll(\"Modulo\", \"Módulo\");\n texto = texto.replaceAll(\"Servico\", \"Serviço\");\n texto = texto.replaceAll(\"Aliquota\", \"Alíquota\");\n texto = texto.replaceAll(\"Calculo\", \"Cálculo\");\n texto = texto.replaceAll(\"Unitario\", \"Unitário\");\n texto = texto.replaceAll(\"Procedencia\", \"Procedência\");\n texto = texto.replaceAll(\"Mudanca\", \"Mudança\");\n texto = texto.replaceAll(\"Pratica\", \"Prática\");\n texto = texto.replaceAll(\"Propria\", \"Própria\");\n texto = texto.replaceAll(\"Impropria\", \"Imprópria\");\n texto = texto.replaceAll(\"Responsavel\", \"Responsável\");\n texto = texto.replaceAll(\"Conjuge\", \"Cônjuge\");\n texto = texto.replaceAll(\"Cafe\", \"Café\");\n texto = texto.replaceAll(\"Transferencia\", \"Transferência\");\n texto = texto.replaceAll(\"Bancaria\", \"Bancária\");\n texto = texto.replaceAll(\"Agencia\", \"Agência\");\n texto = texto.replaceAll(\"Digito\", \"Dígito\");\n\n if (texto.includes(\"Mes \")) texto = texto.replaceAll(\"Mes \", \"Mês \");\n if (texto.endsWith(\"Mes\")) texto = texto.replace(/Mes$/, \"Mês\");\n if (texto.includes(\"Ate \")) texto = texto.replaceAll(\"Ate \", \"Até \");\n if (texto.endsWith(\"Ate\")) texto = texto.replace(/Ate$/, \"Até\");\n if (texto.includes(\"Socio \")) texto = texto.replaceAll(\"Socio \", \"Sócio \");\n if (texto.endsWith(\"Socio\")) texto = texto.replace(/Socio$/, \"Sócio\");\n if (texto.includes(\"Socia \")) texto = texto.replaceAll(\"Socia \", \"Sócia \");\n if (texto.endsWith(\"Socia\")) texto = texto.replace(/Socia$/, \"Sócia\");\n return texto;\n }\n\n}\n\n\nexport type IClassOf = \"string\" | \"number\" | \"nan\" | \"object\" | \"array\" | \"boolean\" | \"undefined\" | \"null\" | \"function\" | \"date\" | \"regexp\" | \"error\" | \"symbol\" | \"bigint\"\n\nexport interface IFormatter {\n mask: string | ((value: any) => string);\n regex: string;\n validate: (value: any) => boolean;\n}\n\nexport interface IUtilFormatters {\n cpf: IFormatter;\n cnpj: IFormatter;\n cpf_cnpj: IFormatter;\n cnh: IFormatter;\n pis: IFormatter;\n dia: IFormatter;\n mes: IFormatter;\n ano: IFormatter;\n anoRecente: IFormatter;\n data: IFormatter;\n dataIso: IFormatter;\n numero: IFormatter;\n decimal: IFormatter;\n letra: IFormatter;\n numeroELetra: IFormatter;\n ip: IFormatter;\n email: IFormatter;\n cep: IFormatter;\n}\n\nexport interface MapeamentoItem<T, U> {\n de: keyof T;\n para: keyof U;\n transforma: (v: T[keyof T]) => U[keyof U];\n}\n","import { computed, signal, Type, WritableSignal } from \"@angular/core\";\nimport { IKV, IKV_ext, ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\nimport { LibUtil } from \"../../util/util\";\nimport { LOG } from '../../util/log';\n\nexport class Formulario {\n\n campos = signal<IFields<any>>({});\n listaCampos = computed<IFieldComponent<any>[]>(() => Object.values(this.campos()));\n listaErrors = computed<string[]>(() => {\n let errors: string[] = [];\n for (const key of Object.keys(this.campos())) {\n const campoErros = this.campos()?.[key]?.errors;\n if (campoErros && campoErros.length > 0) {\n errors = [...errors, ...campoErros.map(e => `${String(key)}: ${e}`)];\n }\n }\n return errors;\n });\n values = signal<any>({});\n registredFields = signal<{ [key in keyof IFields<any>]: any }>({});\n\n showTouched = signal<boolean>(false);\n isEnviado: boolean = false;\n isEnviando: boolean = false;\n instance: any = null;\n\n valido = computed(() => {\n for (const key of Object.keys(this.campos())) {\n const campo = this.campos()[key];\n const errors = campo.errors;\n if (errors && errors.length > 0) {\n return false;\n }\n }\n return true;\n });\n algumTocado = computed(() => {\n return this.listaCampos().some(campo => campo.touched);\n });\n\n constructor(campos: IFields<any>, startValues: any = {}, instance: any = null) {\n this.instance = instance;\n let values: any = this._startValues(campos, startValues);\n let camposStarted: IFields<any> = {};\n for (const key of Object.keys(campos)) {\n camposStarted[key] = {\n ...campos[key],\n touched: false,\n invalid: false,\n errors: [], // [Valide.msg.naoValidado]\n ...LibUtil.formConfigs,\n };\n }\n this.campos.set(camposStarted);\n this.values.set(values);\n this.obterOpcoes();\n return this;\n }\n\n updateValues(newValues: any) {\n if (LibUtil.classof(newValues) !== 'object') {\n LOG(1, \"❌ Formulario.updateValues deve receber um objeto.\");\n }\n this.values.update(v => {\n return { ...v, ...newValues }\n });\n }\n\n removeValue(prop: keyof IFields<any>) {\n this.values.update(v => {\n if (v.hasOwnProperty(prop)) {\n delete v[prop];\n } else {\n LOG(1, `❌ Formulario.removeValue: Propriedade '${String(prop)}' não existe nos valores.`);\n }\n return { ...v };\n });\n }\n\n updateCampo(prop: keyof IFields<any>, newCampoData: Partial<IFieldComponent<any>>) {\n if (newCampoData.hasOwnProperty('errors')) {\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\n }\n this.campos.update(c => {\n if (c[prop]) {\n c[prop] = { ...c[prop], ...newCampoData };\n } else {\n LOG(1, `❌ Formulario.updateCampo: Campo '${String(prop)}' não existe.`);\n }\n return { ...c };\n });\n }\n\n setAllCamposPartial(newCampoData: Partial<IFieldComponent<any>>) {\n if (newCampoData.hasOwnProperty('errors')) {\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\n }\n this.campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key] = { ...c[key], ...newCampoData };\n }\n return { ...c };\n });\n }\n\n setAllValuesTo(value: any) {\n this.values.update(v => {\n for (const key of Object.keys(v)) {\n v[key] = value;\n }\n return { ...v };\n });\n }\n\n resetToStartValues() {\n const campos = this.campos();\n const startValues = this._startValues(campos);\n this.values.set(startValues);\n }\n\n private _startValues(campos: IFields<any>, startValues: any = {}) {\n let values: any = {};\n for (const key of Object.keys(campos)) {\n values[key] = campos[key].value ?? '';\n }\n values = { ...values, ...startValues };\n return values;\n }\n\n setDisabledAll(disabled: boolean) {\n this.setAllCamposPartial({ disabled });\n }\n\n setTouchedAll(touched: boolean) {\n this.setAllCamposPartial({ touched });\n }\n\n async validar(): Promise<any> {\n let camposComErros: string[] = [];\n let camposPendentes: string[] = [];\n\n // Executa validações diretamente nos campos registrados\n for (const key of Object.keys(this.registredFields())) {\n const campoComponent = this.registredFields()[key];\n if (campoComponent && typeof campoComponent.executarValidacoes === 'function') {\n try {\n await campoComponent.executarValidacoes();\n } catch (error) {\n LOG(1, `❌ Erro ao validar o campo '${key}':`, error);\n }\n }\n }\n\n // Verifica cada campo para erros e pendências\n for (const key of Object.keys(this.campos())) {\n const campo = this.campos()[key];\n if (campo.errors && campo.errors.length > 0) {\n LOG(1, `❌ Erro de validação no campo '${key}':`, campo.errors);\n camposComErros.push(key);\n }\n if (campo.pending) {\n LOG(1, `⏳ Campo '${key}' ainda está pendente.`);\n camposPendentes.push(key);\n }\n }\n\n // Se houver campos pendentes ou com erros rejeita a validação\n if (camposPendentes.length > 0) {\n return Promise.reject(`${camposPendentes.length} Campos pendentes: ${camposPendentes.join(', ')}`);\n }\n if (camposComErros.length > 0) {\n return Promise.reject(`${camposComErros.length} Campos com erros (inválidos): ${camposComErros.join(', ')}`);\n }\n return this.values();\n }\n\n private async obterOpcoes() {\n let campos = this.campos();\n for (const key of Object.keys(campos)) {\n let campo = campos[key];\n // Ignora campos que não são de seleção\n if ([IField.AutoComplete, IField.Select].indexOf(campo.tipo) === -1) continue;\n this.updateCampo(campo.prop, { pending: false });\n\n // Inicializa o signal de opções se não existir\n if (campo.options === undefined) campo.options = signal<IKV[]>([]);\n\n // Opções atuais\n const opcoesAtuais = campo.options?.();\n\n // Se já houver opções E não estiverem vazias, não executa o refill neste momento\n if (opcoesAtuais && opcoesAtuais.length > 0) continue;\n\n // Um refill inicial será executado se definido\n if (campo.refill) {\n LOG(4, `🔄 Refill em '${key}'. Opções iniciais:`, opcoesAtuais);\n this.updateCampo(campo.prop, { pending: true });\n let options: IKV[] | null = null;\n try {\n options = await campo.refill(this);\n\n // await LibUtil.wait(1000);\n if (campo.mapear) {\n options = await campo.mapear(options);\n }\n // let opcoesKV: IKV[] = this.conveterEntidadesParaKV(options, campo.servico.configService.propsDisplay);\n if (options === null || LibUtil.classof(options) !== 'array') {\n options = [];\n }\n\n // Só atualiza as opções se houver conteúdo, pois já está iniciado o signal.\n if (options.length > 0) {\n // campo.options.set(options);\n this.updateCampo(campo.prop, { options: signal(options) });\n LOG(3, `🔄 Refill em '${key}'. recebido:`, options);\n }\n } catch (error) {\n LOG(1, `❌ Erro ao obter opções para o campo '${key}':`, error);\n }\n this.updateCampo(campo.prop, { pending: false });\n\n // Se o onMatchOptionOnInit estiver definido, executa o onMatchOption com a opção correspondente ao valor atual do campo.\n if (campo.onMatchOptionOnInit) {\n const optionValue = options?.find(opt => opt.k === this.values()[campo.prop]);\n if (campo.onMatchOption && optionValue) {\n try {\n campo.onMatchOption?.(this, optionValue);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${key}'`, err);\n }\n }\n }\n\n // Ao concluir o refill executa afterRefill, se definido.\n if (campo.afterRefill) {\n await campo.afterRefill(this, options);\n }\n }\n }\n }\n\n // Remove os valores que não estão nos campos e os tipos campos que não devem ter valor.\n sanitizar() {\n const campos = this.campos();\n const valoresAtuais = this.values();\n const novosValores: any = {};\n const tiposSemValor = [IField.Display, IField.Button];\n for (const key of Object.keys(campos)) {\n if (key in valoresAtuais && tiposSemValor.indexOf(campos[key].tipo) === -1) {\n novosValores[key] = valoresAtuais[key];\n }\n }\n this.values.set(novosValores);\n }\n\n // Remove os valores que não estão nos campos ou que estão em campos desabilitados.\n onlyAvailable() {\n const novosValores: any = {};\n const valoresAtuais = this.values();\n const campos = this.campos();\n for (const campo of Object.values(campos)) {\n if (campo.prop in valoresAtuais && !campo.disabled) {\n novosValores[campo.prop] = valoresAtuais[campo.prop];\n }\n }\n this.values.set(novosValores);\n }\n\n save() {\n if (this.instance && typeof this.instance.onSave === 'function') {\n this.instance.onSave();\n } else {\n LOG(1, \"❌ Formulario.save: instância não encontrada.\");\n }\n }\n\n}\n\n\n\n/************************************************\\\\\n// Modo de uso\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFields<T> {\n [key: string]: IFieldComponent<T>;\n}\n\n/************************************************\\\\\n// Tipos de Campos disponíveis para uso\t \\\\\n//*************************************************/\n\nexport enum IField {\n AutoComplete = 'autocomplete',\n Button = 'button',\n Checkbox = 'checkbox',\n Color = 'color',\n Custom = 'custom',\t\t\t\t\t\t\t\t// <== Componentes customizados para uma determinada área.\n Date = 'date',\n DateTime = 'datetime',\n Display = 'display',\t\t\t\t\t\t\t// Representa um campo apenas para exibição\n Editor = 'editor',\t\t\t\t\t\t\t\t// Texto multilinha e com Editor\n Email = 'email',\n Hidden = 'hidden',\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.\n MultiFactor = 'multifactor',\t\t\t// Combo de 6 campos texto para preenchimento individual por caracter.\n MultiKV = 'multikv', // Permite adicionar ou retirar itens em forma KV (Como usado nos seletores e no Importar)\n MultiText = 'multitext',\t\t\t\t\t// Lista com: Texto em unica linha.\n Number = 'number',\n Password = 'password',\n Referencia = 'referencia',\t\t\t\t// Campo que referencia um registro de outra entidade. Utilizado para exibir objetos recebidos de relacionamento.\n Search = 'search',\n Select = 'select',\n Slide = 'slide',\n Text = 'text',\t\t\t\t\t\t\t\t\t\t// Texto em unica linha.\n Textarea = 'textarea',\t\t\t\t\t\t// Texto multilinha.\n Time = 'time',\t\t\t\t\t\t\t\t\t\t// Campo de hora (HH:MM)\n Upload = 'upload', \t\t\t\t\t\t\t\t// (Padrão 1 Imagem)(Padrao Accept: \".png,.svg,.jpg,.jpeg,.gif\")\n\n}\n\n/************************************************\\\\\n// Propriedades para Campos\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFieldComponent<T> {\n tipo: IField,\t\t\t\t\t\t\t\t\t\t\t// [OBRIGATORIO] Tipo do campo.\n prop: keyof T & string,\t\t\t\t\t\t// [OBRIGATORIO] nome da propriedade a ser enviada e do controle do formulário.\n value?: any,\t\t\t\t\t\t\t\t\t\t\t// Valor do campo.\n titulo?: string,\t\t\t\t\t\t\t\t\t// nome do campo a ser exibido ao usuário (Display)\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\n icone?: string,\t\t\t\t\t\t\t\t\t\t// Ícone a ser exibido no campo.\n placeholder?: string,\t\t\t\t\t\t\t// Texto exibido que não representam o valor.\n style?: string,\t\t\t\t\t\t\t\t\t\t// Estilos CSS a serem aplicados no campo.\n classe?: string,\t\t\t\t\t\t\t\t\t// Classes CSS a serem aplicadas no campo.\n hideLabel?: boolean,\t\t\t\t\t\t\t// Controla se o campo deve ocultar o label (titulo).\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).\n autofocus?: boolean,\t\t\t\t\t\t\t// Define se o campo deve receber foco automaticamente ao ser exibido.\n regras?: IRegra[],\t\t\t\t\t\t\t\t// Regras de validação do campo.\t\n maxl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho máximo do valor.\n minl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho mínimo do valor.\n errors?: (string | undefined)[],\t// Lista de mensagens de erro para o campo.\n dica?: string,\t\t\t\t\t\t\t\t\t\t// Texto de ajuda para o campo.\n onInput?: (form: Formulario) => any;// Executada a cada alteração simples no campo.\n onChange?: (form: Formulario) => any;// Executada ao fim de uma alteração no campo.\n\n // Indicadores\n readonly?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza a edição.\n need?: boolean,\t\t\t\t\t\t\t\t\t\t// Valida se o campo está preenchido.\n touched?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo foi tocado/editado.\n disabled?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza todos os controles.\n invalid?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo está inválido.\n empty?: boolean,\t\t\t\t\t\t\t\t\t// Indica se o campo está vazio.\n pending?: boolean,\t\t\t\t\t\t\t\t// Indica que o campo está em estado de espera (loading).\n\n // Configurações específicas por tipo de campo\n tema?: ITiposTema,\t\t\t\t\t\t\t\t// Tema do botão (para button, etc).\n tituloClicavel?: string,\t\t\t\t\t// Título do botão (para button, slide, etc).\n textoAtivo?: string,\t\t\t\t\t\t\t// Texto quando ativo (para slide).\n textoInativo?: string,\t\t\t\t\t\t// Texto quando inativo (para slide).\n tituloChave?: string,\t\t\t\t\t\t // Titulo para a chave (para multikv).\n tituloValor?: string,\t\t\t\t\t\t // Titulo para o valor (para multikv).\n rows?: number,\t\t\t\t\t\t\t\t\t\t// Número de linhas (para textarea, select).\n cols?: number,\t\t\t\t\t\t\t\t\t\t// Número de colunas (para textarea).\n mask?: string | ((valor?: string) => string),\t// Máscara a ser aplicada ao valor.\n options?: WritableSignal<IKV[]>// Opções para campos que possuem seleção (select, radio, etc).\n multiple?: boolean,\t\t\t\t\t\t\t\t// Permitir múltiplas seleções (para select, upload, etc).\n canUnselect?: boolean,\t\t\t\t\t\t// Permitir desselecionar a opção selecionada (para select, radio, etc).\n componente?: Type<any>;\t\t\t\t\t\t// Componente Angular personalizado para renderizar este campo. (para custom)\n tipoBotao?: ITipoBotao;\t\t\t\t\t\t// Tipo do botão (para button).\n onClick?: (form: Formulario) => any;// Função chamada quando o campo é clicado (para button, etc).\n afterRefill?: (form: Formulario, options: IKV[] | null) => any;// Função chamada após o refill do campo (para select, autocomplete, etc).\n onMatchOption?: (form: Formulario, option?: IKV_ext) => any;\t// Função chamada quando uma opção é selecionada (para autocomplete, select, etc).\n onMatchOptionOnInit?: boolean,\t\t// Indica se deve disparar onMatchOption ao iniciar o componente.\n onComplete?: (form: Formulario, value: any) => any\t// Função chamada quando o campo é completado (para multifactor, etc).\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.\n showToolbar?: boolean,\t\t\t\t\t\t// Define se o campo deve exibir a toolbar de formatação (para editor).\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\"\n refill?: (form: Formulario) => Promise<IKV[] | null>;\t// Função que retorna os dados para popular o campo (para select, autocomplete, etc).\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.\n subFields?: IFields<any>; \t\t\t\t// Define os sub-campos (para multiobject).\n isCollapsed?: () => boolean;\t\t\t// Indica se o campo deve colapsar.\n getDisplay?: (value: any, form?: Formulario) => any;\t// Função para obter o valor a ser exibido no campo, normalmente no campo Referencia.\n textEmpty?: string;\t\t\t\t\t\t\t\t// Texto a ser exibido quando o campo estiver vazio (para select).\n}\n\n/************************************************\\\\\n// FASES\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFases<T> {\n fases: IFaseCampos<T>[],\n isLinear?: boolean,\n orientation?: 'horizontal' | 'vertical',\n}\n\nexport interface IFaseCampos<T> {\n nome: string,\n icone?: string | null,\n completed?: boolean,\n optional?: boolean,\n hasErrors?: boolean,\n errorMessage?: string,\n campos: (IFaseCamposAgrupados<T> | keyof T & string)[],\n disabled?: boolean,\n gridMin?: string,\t// Valor padrão para grid-template-columns mínimo das fases. Ex: \"150px\"\n gridMax?: string,\t// Valor padrão para grid-template-columns máximo das fases. Ex: \"1fr\"\n}\n\nexport interface IFaseCamposAgrupados<T> {\n campos: (keyof T & string)[],\n titulo?: string,\n area?: string,\n tituloArea?: string,\n}\n\n/************************************************\\\\\n// CAMPOS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport class CampoDe {\n\n static AutoComplete<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.AutoComplete,\n prop,\n titulo,\n ...config,\n };\n }\n\n static Button<T>(prop: any, tituloClicavel: string, click: (form: Formulario) => void, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Button,\n prop,\n tituloClicavel,\n onClick: click,\n ...config,\n }\n }\n\n static Checkbox<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Checkbox,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Color<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Color,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Cpf<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cpf.mask,\n placeholder: \"000.000.000-00\",\n regras: [Regra.CPF()],\n ...config,\n }\n }\n\n static Cnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cnpj.mask,\n placeholder: \"00.000.000/0000-00\",\n regras: [Regra.CNPJ()],\n ...config,\n }\n }\n\n static CpfCnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cpf_cnpj.mask,\n placeholder: \"000.000.000-00 ou 00.000.000/0000-00\",\n maxl: 18,\n // regras: [Regra.CPF_CNPJ()],\n ...config,\n }\n }\n\n static Custom<T>(prop: keyof T & string, componente: Type<any>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Custom,\n prop,\n titulo,\n componente,\n ...config,\n }\n }\n\n static Date<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Date,\n prop,\n titulo,\n ...config,\n }\n }\n\n static DateTime<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.DateTime,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Display<T>(prop: any, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Display,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Editor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Textarea,\n prop,\n titulo,\n area: 'auto / auto / span 2 / auto',\n ...config,\n }\n }\n\n static Email<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Email,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Hidden<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Hidden,\n need: false,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Icon<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Icon,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiFactor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiFactor,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiKV<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiKV,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiText<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiText,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Number<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Number,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Password<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Password,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Referencia<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Referencia,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Search<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Search,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Select<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Select,\n prop,\n titulo,\n ...config,\n };\n }\n\n static Slide<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Slide,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Upload<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Upload,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Text<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Textarea<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Textarea,\n prop,\n titulo,\n rows: 15,\n cols: 30,\n ...config,\n }\n }\n\n static Time<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Time,\n prop,\n titulo,\n ...config,\n }\n }\n\n static UploadImage<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Upload,\n prop,\n titulo,\n accept: \".png,.svg,.jpg,.jpeg,.gif\",\n ...config,\n }\n }\n\n}\n\n/************************************************\\\\\n// FILTROS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport class FiltroDe {\n\n static Boolean<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Select<T>((prop as any), titulo, {\n options: signal([{ k: \"\", v: \"Todos\" }, { k: \"true\", v: \"Sim\" }, { k: \"false\", v: \"Não\" }])\n }),\n ...config,\n };\n };\n\n static Hidden<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return CampoDe.Hidden<T>((prop as any), titulo, config);\n };\n\n /** Usar este FiltroTexto quando não for Hidden, Select ou Booleano */\n static Text<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return CampoDe.Text<T>((prop as any), titulo, config);\n };\n\n static Select<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Select<T>((prop as any), titulo),\n ...config,\n };\n };\n\n static Date<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Date<T>((prop as any), titulo),\n ...config,\n };\n };\n\n}\n\n/************************************************\\\\\n// VALIDAÇÃO de campos\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport enum IRegraTipo {\n ApenasNumeros = \"apenasNumeros\",\n}\n\nexport interface IRegra {\n nome: string;\n mensagem: string;\n validar: (value: any) => boolean | Promise<boolean>;\n}\n\nexport class Regra {\n\n static ApenasNumeros(): IRegra {\n return {\n nome: IRegraTipo.ApenasNumeros,\n mensagem: Regra.mensagens.apenasNumeros,\n validar: (value: any): boolean => {\n let s = value.replace(/(?![0-9])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static ApenasLista(): IRegra {\n return {\n nome: \"apenasLista\",\n mensagem: Regra.mensagens.apenasLista,\n validar: (value: any): boolean => {\n return Array.isArray(value);\n }\n }\n }\n\n static ApenasListaDeObjetos(): IRegra {\n return {\n nome: \"apenasListaDeObjetos\",\n mensagem: Regra.mensagens.apenasListaDeObjetos,\n validar: (value: any): boolean => {\n if (!Array.isArray(value)) return false;\n for (let item of value) {\n if (typeof item !== 'object' || item === null) return false;\n }\n return true;\n }\n }\n }\n\n static EntreValores(min: number, max: number): IRegra {\n return {\n nome: \"apenasEntre\",\n mensagem: Regra.mensagens.apenasEntre(min, max),\n validar: (value: any): boolean => {\n if (typeof value !== 'number') return false;\n return value >= min && value <= max;\n }\n }\n }\n\n static TamanhoMinimo(qntCaracteres: number): IRegra {\n return {\n nome: \"temSizeMin\",\n mensagem: Regra.mensagens.temSizeMin,\n validar: (value: any): boolean => {\n if (!value) return false;\n return value.length >= qntCaracteres;\n }\n }\n }\n\n static TamanhoMaximo(qntCaracteres: number): IRegra {\n return {\n nome: \"temSizeMax\",\n mensagem: Regra.mensagens.temSizeMax,\n validar: (value: any): boolean => {\n if (!value) return true;\n return value.length <= qntCaracteres;\n }\n }\n }\n\n static ApenasLetras(): IRegra {\n return {\n nome: \"temApenasLetras\",\n mensagem: Regra.mensagens.temApenasLetras,\n validar: (value: any): boolean => {\n if (!value) return true;\n let s = value.replace(/(?![A-Za-z])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static ApenasNumerosELetras(): IRegra {\n return {\n nome: \"temApenasNumerosELetras\",\n mensagem: Regra.mensagens.temApenasNumerosELetras,\n validar: (value: any): boolean => {\n if (!value) return true;\n let s = value.replace(/(?![0-9A-Za-z])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static TemMaiuscula(): IRegra {\n return {\n nome: \"temMaiuscula\",\n mensagem: Regra.mensagens.temMaiuscula,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n }\n }\n\n static TemMinuscula(): IRegra {\n return {\n nome: \"temMinuscula\",\n mensagem: Regra.mensagens.temMinuscula,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n }\n }\n\n static TemNumero(): IRegra {\n return {\n nome: \"temNumero\",\n mensagem: Regra.mensagens.temNumero,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[0-9]/.test(value);\n }\n }\n }\n\n static TemEspecial(): IRegra {\n return {\n nome: \"temEspecial\",\n mensagem: Regra.mensagens.temEspecial,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /(?![0-9a-zA-Z])./.test(value);\n }\n }\n }\n\n static Email(): IRegra {\n return {\n nome: \"isEmail\",\n mensagem: Regra.mensagens.isEmail,\n validar: (value: any): boolean => {\n if (!value) return true;\n return LibUtil.formats.email.validate(value);\n }\n }\n }\n\n static Same(compareValue: any, mensagem?: string): IRegra {\n return {\n nome: \"isSame\",\n mensagem: mensagem || Regra.mensagens.isSame,\n validar: (value: any): boolean => {\n return value === compareValue;\n }\n }\n }\n\n static SenhaForte(): IRegra {\n return {\n nome: \"senhaForte\",\n mensagem: Regra.mensagens.senhaForte,\n validar: (value: any): boolean => {\n if (!value) return true;\n const hasNumber = /[0-9]/.test(value);\n const hasMaiuscula = /[A-Z]/.test(value);\n const hasMinuscula = /[a-z]/.test(value);\n const hasEspecial = /(?![0-9a-zA-Z])./.test(value);\n\n return hasNumber && hasMaiuscula && hasMinuscula && hasEspecial;\n }\n }\n }\n\n static Unique(asyncValidate: (value: any) => Promise<boolean>): IRegra {\n return {\n nome: \"isUnique\",\n mensagem: Regra.mensagens.isUnique,\n validar: async (value: any): Promise<boolean> => {\n return await asyncValidate(value);\n }\n }\n }\n\n static CepBR(): IRegra {\n return {\n nome: \"isCepBR\",\n mensagem: Regra.mensagens.isCepBR,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /^([0-9]{2}[\\.]?[0-9]{3}[-]?[0-9]{3})$/.test(value);\n }\n }\n }\n\n static CPF(): IRegra {\n return {\n nome: \"isCPF\",\n mensagem: Regra.mensagens.isCPF,\n validar: (value: any): boolean => {\n if (!value) return true;\n let c = 0;\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n let cpf = LibUtil.apenasNumeros(value);\n if (cpf.length != 11) { return false; }\n let temp = cpf.slice(0, 9);\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n return cpf.charAt(10) == r.toString();\n }\n }\n }\n\n static CNPJ(): IRegra {\n return {\n nome: \"isCNPJ\",\n mensagem: Regra.mensagens.isCNPJ,\n validar: (value: any): boolean => {\n if (!value) return true;\n let digitCnpj = (cnpj: string) => {\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cnpj) { return false; }\n cnpj = LibUtil.apenasNumeros(cnpj);\n if (cnpj.length != 14) { return false; }\n let temp = cnpj.slice(0, 12);\n let c = 0;\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n return cnpj.charAt(13) == r.toString();\n }\n return digitCnpj(value);\n }\n }\n }\n\n static ClickRequired(): IRegra {\n return {\n nome: \"clickRequired\",\n mensagem: Regra.mensagens.clickRequired,\n validar: (value: any): boolean => {\n return value === true;\n }\n }\n }\n\n static Obrigatorio(): IRegra {\n return {\n nome: \"obrigatorio\",\n mensagem: Regra.mensagens.obrigatorio,\n validar: (value: any): boolean => {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string' && value.trim() === '') return false;\n if (Array.isArray(value) && value.length === 0) return false;\n return true;\n }\n }\n }\n\n static mensagens = {\n obrigatorio: \"Campo Obrigatório.\",\n apenasNumeros: \"Apenas Números.\",\n apenasLista: \"O valor deve ser uma lista.\",\n apenasListaDeObjetos: \"O valor deve ser uma lista de objetos.\",\n apenasEntre: (min: number, max: number) => `O valor deve estar entre ${min} e ${max}.`,\n temSizeMin: \"Tamanho Mínimo.\",\n temSizeMax: \"Tamanho Excedido.\",\n temApenasNumeros: \"Apenas Números.\",\n temApenasLetras: \"Apenas Letras.\",\n temApenasNumerosELetras: \"Apenas Números e Letras.\",\n temMaiuscula: \"Faltou maiúscula.\",\n temMinuscula: \"Faltou minúscula.\",\n temNumero: \"Faltou numero.\",\n temEspecial: \"Faltou caracter Especial.\",\n isEmail: \"Email inválido.\",\n isSame: \"Valores diferentes.\",\n senhaForte: \"Senha Fraca.\",\n isUnique: \"Já está em uso.\",\n isCepBR: \"CEP inválido no Brasil.\",\n isCPF: \"CPF inválido.\",\n isCNPJ: \"CNPJ inválido.\",\n clickRequired: \"Clique Necessário.\",\n }\n\n\n}\n","import { Component, computed, effect, input, model, OnInit, output, signal } from '@angular/core';\nimport { Formulario, IFaseCamposAgrupados, IFases, IFieldComponent, IFields } from '../../Formulario/Formulario';\nimport { LOG } from '../../../util/log';\n\ninterface IFaseCampoGrupo {\n tipo: 'campo' | 'grupo',\n faseIndex: number,\n nome?: string,\n campo?: IFieldComponent<any>,\n grupo?: IFaseCamposAgrupados<any>,\n}\n\n@Component({\n selector: 'fields-base-fields-values',\n template: '',\n})\nexport abstract class BaseFieldsValues<T> implements OnInit {\n\n abstract onSave(): Promise<any>;\n\n form!: Formulario;\n\n values = model<Partial<T>>();\n campos = input.required<IFields<T>>();\n fases = input<IFases<T>>();\n\n gmin = input<string | undefined>();\n gmax = input<string | undefined>();\n showFormControls = input<boolean>(false);\n camposNaoEncontrados = new Set<string>();\n gruposNaoEncontrados = new Set<string>();\n\n formulario = output<Formulario>();\n\n isFaseado = computed(() => {\n let fases = this.fases()?.fases;\n return fases !== undefined && fases.length > 0;\n });\n isDisabledAction = signal<boolean>(true);\n isLoadingActive = signal<boolean>(false);\n faseIndex = signal<number>(0);\n\n listaFase = computed(() => {\n return this.fases()?.fases ?? [];\n });\n faseGrupo = computed<IFaseCampoGrupo[]>(() => {\n let listaFase = this.listaFase();\n if (!listaFase || listaFase.length === 0) {\n return [];\n }\n let resultado: IFaseCampoGrupo[] = [];\n for (let i = 0; i < listaFase.length; i++) {\n for (let campoOrGrupo of listaFase[i].campos) {\n if (typeof campoOrGrupo === 'string') {\n let campo = this.form.campos()[campoOrGrupo];\n if (!campo) {\n this.camposNaoEncontrados.add(campoOrGrupo);\n }\n resultado = [...resultado, { tipo: 'campo', nome: campoOrGrupo, campo: campo, grupo: undefined, faseIndex: i }];\n } else {\n if (campoOrGrupo.area === undefined) {\n // Para cada campo deste grupo encontrado em this.form.campos(), deve retornar a area de algum dos campos ou undefined\n let areaEncontrada = undefined;\n for (let campoNome of campoOrGrupo.campos) {\n let campo = this.form.campos()[campoNome];\n if (campo && campo.area) {\n areaEncontrada = campo.area;\n break;\n }\n }\n campoOrGrupo.area = areaEncontrada;\n }\n if (!campoOrGrupo) {\n this.gruposNaoEncontrados.add(campoOrGrupo);\n }\n resultado = [...resultado, { tipo: 'grupo', campo: undefined, grupo: campoOrGrupo, faseIndex: i }];\n }\n }\n }\n return resultado;\n });\n\n constructor() {\n effect(() => {\n let faseIndex = this.faseIndex();\n this.updateDisabledAction();\n });\n }\n ngOnInit(): void {\n this.form = new Formulario(this.campos(), this.values(), this);\n this.formulario.emit(this.form);\n\n // Verifica campos e grupos não encontrados após um pequeno delay para garantir que todos os cálculos foram feitos\n setTimeout(() => {\n if (this.camposNaoEncontrados.size > 0) LOG(1, \"❌ Campos não encontrados nas fases:\", Array.from(this.camposNaoEncontrados));\n if (this.gruposNaoEncontrados.size > 0) LOG(1, \"❌ Grupos não encontrados nas fases:\", Array.from(this.gruposNaoEncontrados));\n }, 1)\n }\n\n updateDisabledAction(forcedDisabled: boolean = false) {\n if (forcedDisabled) return this.isDisabledAction.set(true);\n\n let isFaseado = this.isFaseado();\n if (!isFaseado) return this.isDisabledAction.set(false);\n\n let isLinear = this.fases()?.isLinear ?? false;\n if (!isLinear) return this.isDisabledAction.set(false);\n\n let isUltimaFase = this.faseIndex() >= (this.listaFase().length - 1);\n this.isDisabledAction.set(!isUltimaFase);\n }\n}\n","import { Component, computed, HostBinding, input, OnDestroy, OnInit, output, Signal } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { LOG } from '../../../util/log';\nimport { Formulario, IFieldComponent, IFields, Regra } from '../../Formulario/Formulario';\n\n@Component({ selector: 'app-BaseFieldsForm', template: '' })\nexport class BaseFieldsForm implements OnInit, OnDestroy {\n\n readonly form = input.required<Formulario>()\n readonly name = input.required<keyof IFields<any>>();\n change = output<string>();\n\n readonly value = computed(() => this.form().values()[this.name()]);\n readonly campo: Signal<IFieldComponent<any> | undefined> = computed(() => this.form().campos()[this.name()]);\n\n ngOnInit(): void {\n this.form().registredFields.update(old => ({ ...old, [this.name()]: this }));\n }\n ngOnDestroy(): void {\n this.form().registredFields.update(old => {\n const updated = { ...old };\n delete updated[this.name()];\n return updated;\n });\n }\n\n updateCampo(newCampoData: Partial<IFieldComponent<any>>) {\n this.form().updateCampo(this.name(), newCampoData);\n }\n\n updateValue(newValue: any, touch: boolean = true) {\n if (touch) this.tocarCampo();\n this.form().updateValues({ [this.name()]: newValue })\n }\n\n tocarCampo() {\n this.updateCampo({ touched: true });\n }\n\n onClickLabel() {\n LOG(2, \"Valor:\", this.value());\n LOG(2, \"Campo: \", this.campo());\n LOG(2, \"ClassOf: \", LibUtil.classof(this.value()));\n LOG(2, \"Opcoes: \", this.campo()?.options?.());\n }\n\n @HostBinding('style.grid-area')\n get gridArea() {\n return this.campo()?.area ?? 'auto';\n }\n\n onClickEmit() {\n this.campo()?.onClick?.(this.form());\n }\n\n // Executa o onChange com delay para utilizar o valor após ter executado o effect do empty.\n async onChangeEmit() {\n setTimeout(async () => {\n await this.executarValidacoes();\n this.campo()?.onChange?.(this.form());\n this.change.emit(this.value());\n }, 1)\n }\n\n async executarValidacoes() {\n // Padrão para todos os campos\n this.validarRequired();\n // Validações específicas\n await this.validarRegrasDoCampo();\n\n }\n\n validarRequired() {\n let isEmpty = this.campo()?.empty;\n if (this.campo()?.need && isEmpty) {\n LOG(1, `Campo '${this.name()}' é obrigatório e está vazio.`, this.campo());\n this.adicionaErro(Regra.mensagens.obrigatorio);\n } else {\n this.removerErro(Regra.mensagens.obrigatorio);\n }\n }\n\n async validarRegrasDoCampo() {\n let regrasDefinidas = this.campo()?.regras ?? [];\n if (!regrasDefinidas.length) return;\n for (const regra of regrasDefinidas) {\n if (regra) {\n let isValid = await regra.validar(this.value());\n if (!isValid) {\n this.adicionaErro(regra.mensagem);\n } else {\n this.removerErro(regra.mensagem);\n }\n } else {\n console.warn(`Regra de validação não encontrada para o campo \"${this.name()}\".`);\n }\n }\n }\n\n adicionaErro(erroNovo: string) {\n let errosAtuais = this.campo()?.errors ?? [];\n if (!errosAtuais.includes(erroNovo)) {\n this.updateCampo({ errors: [...errosAtuais, erroNovo] });\n }\n }\n\n removerErro(erroRemover: string) {\n let errosAtuais = this.campo()?.errors ?? [];\n if (errosAtuais.includes(erroRemover)) {\n this.updateCampo({ errors: errosAtuais.filter(e => e !== erroRemover) });\n }\n }\n\n}\n","import { Component, computed, effect, ElementRef, input, model, OnInit, output, signal, viewChild } from '@angular/core';\nimport { ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './ui-button.html',\n styleUrl: './ui-button.css',\n})\nexport class UiButton {\n\n botao = viewChild('botao', { read: ElementRef });\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\n ripple = viewChild('ripple', { read: ElementRef });\n\n icone = model<string | undefined | null>(null);\n iconeAntes = model<boolean>(true);\n iconeDepois = model<boolean>(false);\n iconeCategory = model<string>('fa fa-chevron-right');\n\n clicked = output<PointerEvent>();\n\n disabled = input<boolean>();\n eventPropagation = input<boolean>(false);\n radiusTabFormat = input<boolean>(false);\n tabindex = input<number | string>();\n tipo = input<ITipoBotao | undefined>(\"fill\");\n tema = model<ITiposTema | undefined>(\"\");\n classes = input<string>(\"\");\n ativo = input<boolean>(false);\n\n isCategory = computed(() => this.tipo() === 'menu-item-category' || this.tipo() === 'sidebar-item-category');\n buttonClasses = computed(() => {\n return `btnr ${this.tipo() || 'fill'} ${this.classes()}`;\n });\n\n corFundo = signal<string | undefined>(undefined);\n corFrente = signal<string | undefined>(undefined);\n\n constructor() {\n effect(() => {\n let tema = this.tema();\n switch (tema) {\n case \"primary\":\n this.corFundo.set(`var(--sys-primary)`);\n this.corFrente.set(`var(--sys-on-primary)`);\n break;\n case \"secondary\":\n this.corFundo.set(`var(--sys-secondary)`);\n this.corFrente.set(`var(--sys-on-secondary)`);\n break;\n case \"high\":\n this.corFundo.set(`var(--sys-high)`);\n this.corFrente.set(`var(--sys-on-high)`);\n break;\n case \"success\":\n this.corFundo.set(`var(--sys-success)`);\n this.corFrente.set(`var(--sys-on-success)`);\n break;\n case \"warning\":\n this.corFundo.set(`var(--sys-warning)`);\n this.corFrente.set(`var(--sys-on-warning)`);\n break;\n case \"error\":\n this.corFundo.set(`var(--sys-error)`);\n this.corFrente.set(`var(--sys-on-error)`);\n break;\n case \"info\":\n this.corFundo.set(`var(--sys-info)`);\n this.corFrente.set(`var(--sys-on-info)`);\n break;\n case \"white\":\n this.corFundo.set(`var(--sys-white)`);\n this.corFrente.set(`var(--sys-on-white)`);\n break;\n case \"black\":\n this.corFundo.set(`var(--sys-black)`);\n this.corFrente.set(`var(--sys-on-black)`);\n break;\n case \"card\":\n this.corFundo.set(`var(--sys-card)`);\n this.corFrente.set(`var(--sys-on-card)`);\n break;\n case \"\": // Sem Tema \n default: // Tema Desconhecido\n this.corFundo.set(undefined);\n this.corFrente.set(undefined);\n break;\n }\n });\n }\n\n\n onKeyPressed(ev: Event) {\n this.onClickExpanded(ev as any);\n }\n\n onClickExpanded(ev: PointerEvent) {\n if (this.disabled()) {\n ev.preventDefault();\n if (this.eventPropagation()) {\n ev.stopPropagation();\n }\n return;\n }\n this.botao()?.nativeElement.focus();\n if (ev instanceof PointerEvent) {\n this.createRipple(ev);\n }\n this.clicked.emit(ev);\n if (this.eventPropagation()) {\n ev.stopPropagation();\n }\n }\n\n createRipple(e: PointerEvent) {\n const rippleEffect = e.currentTarget ?? this.rippleEffect()?.nativeElement;\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\n const rect = rippleEffect.getBoundingClientRect();\n // Calcula a posição do clique relativa ao botão\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n // Define o tamanho do ripple (maior dimensão do botão * 2)\n const size = Math.max(rect.width, rect.height) * 2;\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (x - size / 2) + 'px';\n ripple.style.top = (y - size / 2) + 'px';\n ripple.classList.add('ripple');\n rippleEffect.appendChild(ripple);\n ripple.addEventListener('animationend', () => {\n ripple.remove();\n });\n }\n}\n","<button #botao type=\"button\" [class]=\"buttonClasses()\" [style.--btnr-corFundo]=\"corFundo()\"\n\t[style.--btnr-corFrente]=\"corFrente()\" [disabled]=\"disabled()\" [tabIndex]=\"tabindex()\"\n\t[class.radiusTabFormat]=\"radiusTabFormat()\" [class.disabled]=\"disabled()\" [class.ativo]=\"ativo()\"\n\t(keyup.Enter)=\"onKeyPressed($event)\" [class.category]=\"isCategory()\">\n\t@if(icone() && iconeAntes()){ <div class=\"icone iconeAntes\"><i [class]=\"icone()\"></i></div> }\n\t<ng-content />\n\t@if(icone() && iconeDepois()){ <div class=\"icone iconeDepois\"><i [class]=\"icone()\"></i></div> }\n\t@if(isCategory()){ <div class=\"icone iconeCategory\"><i [class]=\"iconeCategory()\"></i></div> }\n\t<span #rippleEffect class=\"expandedClick\" (click)=\"onClickExpanded($event)\">\n\t\t<span #ripple class=\"ripple\"></span>\n\t</span>\n</button>","import { Component, computed, input } from '@angular/core';\nimport { LibUtil } from '../../util/util';\n\n@Component({\n selector: 'ui-chip',\n templateUrl: './ui-chip.html',\n styleUrl: './ui-chip.css',\n})\nexport class UiChip {\n\n // HSL\n cor = input<number | null | undefined>();\n\n hue = computed<number | null>(() => {\n let hue = this.cor();\n if (LibUtil.classof(hue) == 'number') {\n if (hue! < 0) { return 0; };\n if (hue! > 359) { return 359; };\n return hue!;\n }\n return null;\n });\n\n\n}\n","<span class=\"baseChip\" [style.--ChipHue]=\"hue() ?? 'var(--sys-hue-color1)'\">\n\t<ng-content></ng-content>\n</span>","import { Component, ElementRef, input, model, output, viewChild } from '@angular/core';\nimport { IDropOutput, IDropZoneEvent, IFileMetadata } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\n\n@Component({\n selector: 'ui-drop-zone',\n templateUrl: './ui-drop-zone.html',\n styleUrl: './ui-drop-zone.css',\n})\nexport class UiDropZone {\n\n value = model<IDropOutput>();\n disabled = input<boolean>();\n sobrepor = input<boolean>();\n clicked = output<Event>();\n changed = output<IDropOutput>();\n\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\n ripple = viewChild('ripple', { read: ElementRef });\n // dropzonearea = viewChild('dropzonearea', { read: ElementRef })\n isDragging: boolean = false;\n\n async onDropZone(tipo: IDropZoneEvent, ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n if (this.disabled()) return;\n\n let target = ((ev as Event).target as HTMLDivElement);\n if (tipo == \"dragenter\" && !this.disabled()) this.isDragging = true;\n if (tipo == \"dragleave\" && !this.disabled()) this.isDragging = false;\n if (tipo == \"click\" && target && target.classList?.contains(\"dropzone\")) {\n this.clicked.emit(ev);\n }\n }\n\n async onDrop(ev: DragEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n this.isDragging = false;\n if (this.disabled()) return;\n\n const dataTransfer = ev.dataTransfer;\n if (!dataTransfer) {\n this.createRipple(ev as DragEvent, \"red\");\n return;\n }\n this.createRipple(ev as DragEvent);\n\n const output: IDropOutput = {\n timestamp: new Date().toISOString(),\n types: (dataTransfer.types as any),\n tipo: \"unknown\",\n };\n\n // 1. Verificar se há arquivos\n if (dataTransfer.files && dataTransfer.files.length > 0) {\n\n output.data = ([] as IFileMetadata[]);\n output.tipo = \"file\";\n\n for await (let file of dataTransfer.files) {\n let lastIndexOf = file.name.lastIndexOf(\".\");\n if (lastIndexOf < 0) {\n LOG(1, `❌ O arquivo ${file.name} está sem uma extensão.`);\n continue;\n }\n let base64: string | null = await LibUtil.fileReader(file);\n if (!base64) {\n LOG(1, `❌ Ocorreu um erro com o arquivo ${file.name}.`);\n continue;\n }\n\n (output.data as IFileMetadata[]).push({\n base64: base64,\n name: file.name,\n size: file.size,\n extension: file.name.slice(lastIndexOf), // inclui o \".\"\n type: file.type,\n lastModifiedIso: new Date(file.lastModified).toISOString(),\n });\n }\n\n }\n\n // 2. Verificar se há texto\n const text = dataTransfer.getData('text/plain');\n if (text) {\n output.data = text;\n output.tipo = \"text\";\n }\n\n // 3. Verificar se há HTML\n const html = dataTransfer.getData('text/html');\n if (html) {\n output.data = html;\n output.tipo = \"html\";\n }\n\n // 4. Verificar se há URL\n const url = dataTransfer.getData('text/uri-list');\n if (url) {\n output.data = url;\n output.tipo = \"url\";\n }\n\n // 5. Verificar se há dados JSON customizados\n try {\n const json = dataTransfer.getData('application/json');\n if (json) {\n output.data = JSON.parse(json);\n output.tipo = \"json\";\n }\n } catch (e) {\n // JSON inválido, ignorar\n }\n\n // 6. Capturar todos os outros tipos de dados disponíveis\n dataTransfer.types.forEach(type => {\n if (!['text/plain', 'text/html', 'text/uri-list', 'application/json', 'Files'].includes(type)) {\n const data = dataTransfer.getData(type);\n if (data) {\n output.data = data;\n output.tipo = \"unknown\";\n }\n }\n });\n\n this.value.set(output);\n this.changed.emit(output);\n }\n\n createRipple(ev: DragEvent, classColor: string = \"\") {\n const rippleEffect = ev.currentTarget ?? this.rippleEffect()?.nativeElement;\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\n const rect = rippleEffect.getBoundingClientRect();\n // Calcula a posição do clique relativa ao botão\n const x = ev.clientX - rect.left;\n const y = ev.clientY - rect.top;\n // Define o tamanho do ripple (maior dimensão do botão * 2)\n const size = Math.max(rect.width, rect.height) * 2;\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (x - size / 2) + 'px';\n ripple.style.top = (y - size / 2) + 'px';\n ripple.classList.add('ripple');\n if (classColor) {\n ripple.classList.add(classColor);\n }\n rippleEffect.appendChild(ripple);\n ripple.addEventListener('animationend', () => {\n ripple.remove();\n });\n }\n}\n","<div #dropzonearea class=\"dropzone\" [class.naosobrepor]=\"!sobrepor()\" (dragenter)=\"onDropZone('dragenter',$event)\"\n\t(dragleave)=\"onDropZone('dragleave',$event)\" (drop)=\"onDrop($event)\" (dragover)=\"onDropZone('dragover',$event)\"\n\t(click)=\"onDropZone('click',$event)\" [class.disabled]=\"disabled()\" [class.dragging]=\"isDragging\">\n\t<span #rippleEffect class=\"rippleArea\">\n\t\t<span #ripple class=\"ripple\"></span>\n\t</span>\n</div>\n<ng-content></ng-content>","import { Component, input, output } from '@angular/core';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { IFileMetadata } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-file-list',\n templateUrl: './ui-file-list.html',\n styleUrl: './ui-file-list.css',\n imports: [UiButton]\n})\nexport class UiFileList {\n\n disabled = input<boolean>();\n filesList = input<IFileMetadata[]>();\n remove = output<IFileMetadata>();\n\n onDelete(file: IFileMetadata) {\n if (this.disabled()) return;\n this.remove.emit(file);\n }\n\n}\n","<div class=\"e-filelist-area\">\n\t@for (file of filesList(); track $index) {\n\t<div class=\"e-filelist-item\">\n\t\t<div class=\"e-filelist-item-icon\">\n\t\t\t<i class=\"bi bi-file-earmark-fill\"></i>\n\t\t\t<div class=\"e-filelist-item-icon-ext\">{{ file.extension?.slice(1) }}</div>\n\t\t</div>\n\t\t<div class=\"e-filelist-item-text\">{{ file.name }}</div>\n\t\t<div class=\"e-filelist-action\">\n\t\t\t@if(!disabled()){\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" [disabled]=\"disabled()\" (click)=\"onDelete(file)\" icone=\"bi bi-x-lg\">\n\t\t\t</ui-button>\n\t\t\t}\n\t\t</div>\n\t</div>\n\t}\n</div>","import { AfterViewInit, Component, computed, effect, ElementRef, HostListener, inject, input, model, OnDestroy, output, signal, viewChild } from '@angular/core';\nimport { computePosition, flip, offset, shift, detectOverflow, Elements, autoUpdate } from '@floating-ui/dom';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { IKV } from '../../interfaces/interfaces';\nimport { UiButton } from \"../ui-button/ui-button\";\n\nexport interface IOptionValue {\n optionChanged?: IKV;\n keys: string | number | string[] | number[];\n values: string | number | string[] | number[];\n}\n\ninterface IKVSeletor extends IKV {\n selected: boolean;\n choosing: boolean;\n}\n\n@Component({\n selector: 'ui-select',\n templateUrl: './ui-select.html',\n styleUrl: './ui-select.css',\n host: { '[class]': 'hostClasses()' },\n imports: [UiButton],\n})\nexport class UiSelect implements OnDestroy, AfterViewInit {\n\n elementRef: ElementRef = inject(ElementRef);\n\n value = model<string | number | string[] | number[] | undefined>();\n options = input<IKV[] | undefined | null>();\n\n name = input<string | number | undefined>();\n placeholder = input<string>();\n disabled = input<boolean>();\n multiple = input<boolean>(false);\n canUnselect = input<boolean | undefined>(false);\n textEmpty = input<string | undefined>(\"Nada selecionado\");\n\n changed = output<IOptionValue>();\n\n isOpenedOptions = signal(false);\n markedOptionKey = signal<string | number | null | undefined>(null);\n elementoAcima: HTMLElement | null = null;\n // isUnderOverflow = signal(false);\n isSmallScreen = signal(window.innerWidth < 500);\n\n\n textoFiltrado = signal<string>(\"\");\n\n readonly optionsList = computed<IKVSeletor[]>(() => {\n const options = this.options?.() ?? [];\n if (this.multiple() !== true) {\n let valor = (this.value() as string | number | undefined);\n return options.map(op => ({\n ...op,\n selected: String(op.k) == String(valor),\n choosing: op.k == this.markedOptionKey()\n }));\n } else {\n let valor = (this.value() as string[] | number[] | undefined);\n if (!Array.isArray(valor)) {\n valor = [];\n }\n return options.map(op => ({\n ...op,\n selected: op.k != null ? valor.some(v => String(op.k) == String(v)) : false,\n choosing: op.k == this.markedOptionKey()\n }));\n }\n });\n readonly optionsFiltered = computed<IKVSeletor[]>(() => {\n let words = this.textoFiltrado().trim().split(\" \").filter(t => t != \"\");\n const options = (this.optionsList() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\n // Sem filtro, retorna tudo\n if (words.length === 0) return options;\n return options.filter(op => {\n for (const w of words) {\n let encontrado = false;\n if (op.v != null && LibUtil.contem(op.v, w)) {\n encontrado = true;\n }\n // Termo não encontrado na opção\n if (!encontrado) return false;\n }\n // Todos os termos encontrados\n return true;\n }).map(op => {\n let data = op.v?.toString() || '';\n\n // Substitui o valor do html, colocando uma mark em volta do texto buscado.\n if (words.length > 0) {\n for (let word of words) {\n let w = word.toLowerCase();\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n // Se w estiver dentro de < ou >, ignora (para não interferir em tags HTML)\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\n // Se a palavra for encontrada, envolve com a tag <mark>\n let pos = preparedData.indexOf(w);\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n return {\n ...op,\n html: data,\n };\n });\n });\n\n readonly textoExibindo = computed<string>(() => {\n const val = this.value();\n if (this.multiple() !== true) {\n let selectedOption = this.optionsList().find(op => String(op.k) == String(val));\n return selectedOption?.v ?? (selectedOption?.k ? `⚠️ Chave: ${selectedOption?.k}` : (this.textEmpty() ?? 'Nada selecionado'));\n }\n\n let valor = (this.value() as string[] | number[] | undefined);\n if (valor == undefined || !Array.isArray(valor)) {\n valor = [];\n }\n const textosSelecionados = this.optionsList()\n .filter(op => valor.some(v => String(v) == String(op.k)))\n .map(op => op.v);\n return textosSelecionados.length > 0 ? `[${textosSelecionados.length}] ${textosSelecionados.join(\", \")}` : (this.textEmpty() ?? 'Nada selecionado');\n\n });\n\n readonly displayText = viewChild<ElementRef>('displayText');\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\n readonly optionsOverlay = viewChild<ElementRef>('optionsOverlay');\n readonly optionsContainer = viewChild<ElementRef>('optionsContainer');\n readonly optionSearchInput = viewChild<ElementRef>('optionSearchInput');\n optionMinWidth = signal<number>(0);\n menuPosition = signal<{ top: string; left: string }>({ top: '0px', left: '0px' });\n\n // scrollCleanup: (() => void) | null = null;\n\n constructor() {\n effect(() => {\n const eTrigger = this.triggerElement()?.nativeElement as HTMLElement;\n if (!eTrigger) return;\n\n if (!this.isOpenedOptions()) return;\n\n const cleanupAutoUpdate = autoUpdate(\n eTrigger,\n this.optionsContainer()?.nativeElement,\n () => this.updatePosition()\n );\n return () => {\n cleanupAutoUpdate();\n };\n\n\n // const resizeObserver = new ResizeObserver((entries) => {\n // // Atualiza a posição do menu quando redimensiona\n // if (this.isOpenedOptions()) {\n // this.updatePosition();\n // }\n // });\n // resizeObserver.observe(eTrigger);\n // return () => resizeObserver.disconnect();\n });\n\n // Atualiza posição quando o menu abre\n effect(() => {\n if (this.isOpenedOptions()) {\n setTimeout(() => {\n this.updatePosition();\n // this.setupScrollListeners();\n this.focusToSearchInput();\n }, 1);\n } else {\n // this.cleanupScrollListeners();\n }\n });\n }\n\n ngOnDestroy() {\n if (this.isOpenedOptions() == true) this.closeOverlay();\n // this.cleanupScrollListeners();\n }\n ngAfterViewInit() {\n this.checkScreenSize();\n this.setOverlaySizeToSizeViewport();\n\n\n this.updatePosition();\n }\n\n\n // Manipula mudança de valor (valueOfK não chegará nulo ou undefined)\n onChange(valueOfK: string | number | null): string | number | string[] | number[] {\n if (valueOfK == null) return '';\n\n let optionChanged = this.options?.()?.find(op => String(op.k) === String(valueOfK));\n let newKeys = valueOfK;\n let newValues = optionChanged?.v ?? newKeys;\n\n // SINGLE\n if (this.multiple() !== true) {\n if (this.canUnselect() === true && this.value() === newKeys) {\n newKeys = '';\n newValues = '';\n }\n this.changed.emit({ optionChanged, keys: newKeys, values: newValues });\n return newKeys;\n }\n\n // MULTIPLE (canUnselect sempre é true)\n let currentKeys = this.value() ?? [] as any[];\n let currentValues = [];\n if (!Array.isArray(currentKeys)) {\n currentKeys = [];\n }\n\n if (currentKeys.indexOf(newKeys) === -1) {\n currentKeys = [...currentKeys, newKeys];\n } else {\n currentKeys = currentKeys.filter(v => v !== newKeys);\n }\n setTimeout(() => {\n this.updatePosition();\n }, 1);\n\n currentValues = currentKeys.map(k => this.options?.()?.find(op => op.k === k)?.v ?? k);\n this.changed.emit({ optionChanged, keys: currentKeys, values: currentValues });\n return currentKeys;\n }\n\n // Abre ou fecha o overlay de opções\n onOpenOrCloseOptions() {\n if (!this.disabled()) {\n if (this.isOpenedOptions()) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n }\n }\n\n // Fecha o overlay de opções\n protected closeOverlay() {\n setTimeout(() => {\n this.isOpenedOptions.set(false);\n }, 2)\n\n this.textoFiltrado.set(\"\");\n this.markedOptionKey.set(null);\n this.focusToDisplayText();\n }\n\n // Abre o overlay de opções\n protected openOverlay() {\n this.updatePosition();\n setTimeout(() => {\n this.isOpenedOptions.set(true);\n }, 2)\n }\n\n // Seleciona uma opção\n onSelectOption(option?: IKV) {\n if (!option || option.k == null) {\n LOG(1, `❌ (SelectOption) Chave nula! (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\n return;\n }\n this.value.set(this.onChange(option.k));\n if (this.multiple() !== true) {\n this.closeOverlay();\n } else {\n this.focusToSearchInput();\n }\n }\n\n // Filtra as opções\n onInputSearch(text: string) {\n this.textoFiltrado.set(text);\n this.markedOptionKey.set(null);\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.textoFiltrado.set(\"\");\n this.focusToSearchInput();\n }\n\n focusToSearchInput() {\n this.optionSearchInput()?.nativeElement?.focus();\n }\n\n focusToDisplayText() {\n this.displayText()?.nativeElement?.focus();\n }\n\n // Navegação por teclado\n markKey(event: KeyboardEvent) {\n const options = this.optionsFiltered();\n if (options.length === 0) return;\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\n let currentKV = options.find(op => op.k === this.markedOptionKey());\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + options.length) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n event.preventDefault();\n this.closeOverlay();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (this.markedOptionKey() != null) {\n this.onSelectOption(currentKV);\n }\n this.closeOverlay();\n }\n }\n\n // ----------------------------------------------------\n // Funções de Suporte ao Overlay\n // ----------------------------------------------------\n\n // Quando o overlay estiver aberto, define a classe showing no host\n readonly hostClasses = computed(() => {\n return this.isOpenedOptions() ? 'opened' : '';\n })\n\n\n // Fecha o overlay ao clicar fora\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n if (!clickedInside && this.isOpenedOptions()) {\n setTimeout(() => {\n this.isOpenedOptions.set(false);\n }, 2)\n this.textoFiltrado.set(\"\");\n this.markedOptionKey.set(null);\n }\n }\n\n // Configura os listeners de scroll (Só necessita se não utilizar o autoUpdate do floating-ui, que já faz isso automaticamente)\n // private setupScrollListeners() {\n // const trigger = this.triggerElement()?.nativeElement;\n // if (!trigger) return;\n\n // const updatePositionHandler = () => this.updatePosition();\n // const scrollElements: HTMLElement[] = [];\n // window.addEventListener('scroll', updatePositionHandler, { passive: true });\n // let parent = trigger.parentElement;\n // while (parent) {\n // const overflow = window.getComputedStyle(parent).overflow;\n // const overflowY = window.getComputedStyle(parent).overflowY;\n // const overflowX = window.getComputedStyle(parent).overflowX;\n // if (\n // overflow === 'auto' || overflow === 'scroll' ||\n // overflowY === 'auto' || overflowY === 'scroll' ||\n // overflowX === 'auto' || overflowX === 'scroll'\n // ) {\n // parent.addEventListener('scroll', updatePositionHandler, { passive: true });\n // scrollElements.push(parent);\n // }\n // parent = parent.parentElement;\n // }\n // this.scrollCleanup = () => {\n // window.removeEventListener('scroll', updatePositionHandler);\n // scrollElements.forEach(el => {\n // el.removeEventListener('scroll', updatePositionHandler);\n // });\n // };\n // }\n\n // Limpa os listeners de scroll (Só necessita se não utilizar o autoUpdate do floating-ui, que já faz isso automaticamente)\n // private cleanupScrollListeners() {\n // if (this.scrollCleanup) {\n // this.scrollCleanup();\n // this.scrollCleanup = null;\n // }\n // }\n\n // Atualiza a posição do menu de opções\n private async updatePosition() {\n if (this.isSmallScreen()) return;\n\n const trigger = this.triggerElement()?.nativeElement;\n const optionsContainer = this.optionsContainer()?.nativeElement;\n if (!trigger || !optionsContainer) return;\n\n const { x, y } = await computePosition(trigger, optionsContainer, {\n placement: 'bottom-start',\n middleware: [\n offset(2),\n flip({\n fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],\n }),\n shift({ padding: 10 }),\n ],\n });\n this.menuPosition.set({\n left: `${x}px`,\n top: `${y}px`\n });\n }\n\n setOverlaySizeToSizeViewport() {\n // if (!this.isOpenedOptions()) return;\n\n // Obtem o tamanho da largura da viewport\n const viewportWidth = window.innerWidth;\n const parcialViewport = viewportWidth * 0.92;\n\n const overlay = this.optionsOverlay()?.nativeElement as HTMLElement;\n if (overlay) {\n let currentElement = overlay.parentElement as HTMLElement | null;\n while (currentElement) {\n let larguraOverlay = overlay.clientWidth;\n\n // Se chegar no body, para (para evitar mover o overlay para fora do body)\n if (currentElement.tagName.toLowerCase() === \"body\") break;\n\n // Move o overlay para o próximo nível acima\n currentElement.appendChild(overlay);\n\n if (larguraOverlay >= parcialViewport) {\n currentElement = null;\n break;\n }\n\n currentElement = currentElement.parentElement as HTMLElement;\n }\n\n }\n }\n\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\n this.isSmallScreen.set(e.matches);\n const eTrigger = this.triggerElement()?.nativeElement as HTMLElement;\n if (eTrigger) {\n if (this.isSmallScreen()) {\n this.optionMinWidth.set(0);\n } else {\n this.optionMinWidth.set(eTrigger.offsetWidth - 4);\n }\n }\n }\n\n checkScreenSize() {\n const mediaQuery = window.matchMedia('(max-width: 500px)');\n this.onChangeMediaQuery(mediaQuery);\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\n }\n\n // Move o scroll para a opção marcada\n private moveScrollToMarkedOption() {\n setTimeout(() => {\n const optionsContainer = this.optionsContainer()?.nativeElement?.querySelector(\".e-select-options-list\") as HTMLElement;\n const markedOption = optionsContainer?.querySelector('.e-select-option.choosing') as HTMLElement;\n if (optionsContainer && markedOption) {\n const containerTop = optionsContainer.scrollTop;\n const containerBottom = containerTop + optionsContainer.clientHeight;\n const optionTop = markedOption.offsetTop;\n const optionBottom = optionTop + markedOption.offsetHeight;\n if (optionTop < containerTop) {\n optionsContainer.scrollTop = optionTop - 40; // 40px do elemento Search\n } else if (optionBottom > containerBottom) {\n optionsContainer.scrollTop = optionBottom - optionsContainer.clientHeight;\n }\n }\n }, 1);\n }\n}\n","<div #triggerElement class=\"e-select-container\" (click)=\"onOpenOrCloseOptions()\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\n\t(keyup.ArrowDown)=\"onOpenOrCloseOptions()\" (keyup.ArrowUp)=\"onOpenOrCloseOptions()\">\n\t<div class=\"e-select\">\n\t\t<input #displayText type=\"text\" [name]=\"'select_'+(name() ?? '')\" [value]=\"textoExibindo()\" readonly\n\t\t\t[placeholder]=\"placeholder() ?? ''\" [disabled]=\"disabled()\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t</div>\n\t<div class=\"e-select-arrow-area\">\n\t\t<div class=\"e-select-arrow\" [class.open]=\"isOpenedOptions()\"></div>\n\t</div>\n</div>\n\n\n<div #optionsOverlay class=\"e-select-overlay\" [class.open]=\"isOpenedOptions()\" (click)=\"closeOverlay()\">\n\n\t<div #optionsContainer class=\"e-select-options-container\" [class.open]=\"isOpenedOptions()\"\n\t\t[class.smallScreen]=\"isSmallScreen()\" [style.left]=\"menuPosition().left\" [style.top]=\"menuPosition().top\">\n\t\t@if(isOpenedOptions()) {\n\t\t<div class=\"e-select-search-area\" [style.minWidth.px]=\"optionMinWidth()\">\n\t\t\t<input #optionSearchInput type=\"text\" name=\"e-select-search-input\" class=\"e-select-search\"\n\t\t\t\t(keyup)=\"markKey($event)\" placeholder=\"Procurar...\" [value]=\"textoFiltrado()\" (keydown.Escape)=\"closeOverlay()\"\n\t\t\t\tsize=\"8\" (keydown.Tab)=\"closeOverlay()\" (input)=\"onInputSearch($event.target.value)\" />\n\t\t\t@if(textoFiltrado().length > 0) {\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" class=\"e-select-search-clearicon\" (click)=\"onClearSearch()\"\n\t\t\t\ticone=\"fa fa-times\"></ui-button>\n\t\t\t}\n\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-select-search-icon\" (click)=\"focusToSearchInput()\"\n\t\t\t\ticone=\"fa fa-search\"></ui-button>\n\t\t</div>\n\t\t<div class=\"e-select-options-list\">\n\t\t\t@for(option of optionsFiltered(); track $index) {\n\t\t\t<div class=\"e-select-option\" [class.selected]=\"option.selected\" [style.minWidth.px]=\"optionMinWidth()\"\n\t\t\t\t[title]=\"option.v\" (click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\n\t\t\t\t[class.choosing]=\"option.choosing\">\n\t\t\t\t<div class=\"e-select-option-check\"></div>\n\t\t\t\t<div class=\"e-select-option-text\" [innerHTML]=\"option.html\"></div>\n\t\t\t</div>\n\t\t\t}@empty {\n\t\t\t<div class=\"e-select-option empty\">\n\t\t\t\tNenhuma opção disponível\n\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t\t}\n\t</div>\n\n</div>","import { Component, computed, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\nimport { UiButton } from \"../ui-button/ui-button\";\n\n@Component({\n selector: 'ui-procurar',\n templateUrl: './ui-procurar.html',\n styleUrl: './ui-procurar.css',\n host: { '[class.focused]': 'focused()' },\n imports: [UiButton],\n})\nexport class UiProcurar {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n\n inputed = output<string>();\n changed = output<string>();\n value = model<string>('');\n colapsed = model<boolean | undefined>(false);\n autoColapse = model<boolean | undefined>(false);\n\n computedColapsed = computed(() => {\n if (this.focused() || this.value().length > 0) {\n return false;\n }\n if (this.autoColapse()) {\n return this.value().length === 0;\n }\n return this.colapsed() ?? false;\n });\n\n name = input<string | number | undefined>();\n placeholder = input<string>();\n disabled = input<boolean>();\n\n focused = signal<boolean | undefined>(false);\n\n onInput(value: string) {\n this.value.set(value);\n this.inputed.emit(value);\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.value.set('');\n this.focusSearchInput();\n this.onInputed();\n this.onChange();\n }\n\n focusSearchInput() {\n this.searchInput()?.nativeElement?.focus();\n }\n\n onClickSearchIcon() {\n this.focusSearchInput();\n this.onInputed();\n this.onChange();\n }\n\n onSearch() {\n this.onInputed();\n this.onChange();\n }\n\n onInputed() {\n this.inputed.emit(this.value());\n }\n\n onChange() {\n this.changed.emit(this.value());\n }\n\n\n onFocus(ev: FocusEvent) {\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n}\n","<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-procurar-icone-search\" (clicked)=\"onClickSearchIcon()\" tabindex=\"-1\"\n\ticone=\"fa fa-search\">\n</ui-button>\n<div class=\"e-procurar-input-container\" [class.colapsed]=\"computedColapsed()\">\n\t<input #searchInput type=\"text\" class=\"e-procurar-input\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\n\t\t[name]=\"'procurar_'+(name() ?? '')\" (change)=\"onChange()\" [placeholder]=\"placeholder() ?? 'Procurar...'\"\n\t\t[disabled]=\"disabled()\" (keyup.Enter)=\"onSearch()\" (keyup.Escape)=\"onClearSearch()\" (focus)=\"onFocus($event)\"\n\t\t(blur)=\"onBlur($event)\" />\n</div>\n@if(value().length > 0) {\n<ui-button tipo=\"icon\" tema=\"error\" class=\"e-procurar-botao-clear\" (clicked)=\"onClearSearch()\" title=\"Limpar\"\n\ticone=\"fa fa-times\">\n</ui-button>\n}","import { Component, input } from '@angular/core';\nimport { IUiProgressMode } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-progress',\n templateUrl: './ui-progress.html',\n styleUrl: './ui-progress.css',\n})\nexport class UiProgress {\n\n value = input<number | undefined>(0);\n bufferValue = input<number | undefined>(0);\n mode = input<IUiProgressMode | undefined>('indeterminate');\n\n}\n","@switch (mode()) {\n@case ('determinate'){\n<div class=\"bar-progress determinate\">\n\t<div class=\"bar-progress-filled\" [style.width.%]=\"value() ?? 0\"></div>\n</div>\n}\n\n@case ('indeterminate'){\n<div class=\"bar-progress indeterminate\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n@case ('buffer'){\n<div class=\"bar-progress buffer\">\n\t<div class=\"bar-progress-filled\" [style.width.%]=\"value() ?? 0\"></div>\n\t<div class=\"bar-progress-buffer\" [style.width.%]=\"bufferValue() ?? 0\"></div>\n</div>\n}\n\n@case ('query'){\n<div class=\"bar-progress query\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n@default {\n<div class=\"bar-progress indeterminate\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n}","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ui-slide',\n templateUrl: './ui-slide.html',\n styleUrl: './ui-slide.css',\n host: { '[class.focused]': 'focused()' }\n})\nexport class UiSlide implements AfterViewInit {\n\n sliderbox = viewChild('sliderbox', { read: ElementRef });\n\n value = model<boolean>(false);\n disabled = input<boolean>();\n focused = model<boolean>(false);\n focus = input<boolean>(false);\n changed = output<boolean>();\n\n ativo = computed(() => {\n const val = (this.value() as any);\n return val === true || val === 'true' || val === 1 || val === '1';\n });\n\n constructor() {\n effect(() => {\n if (this.focus()) {\n this.sliderbox()?.nativeElement.focus();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.sliderbox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onClickSlide();\n }\n });\n }\n\n onClickSlide() {\n if (this.disabled()) return;\n\n const currentValue = (this.value() as any);\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\n this.value.set(newValue);\n this.changed.emit(newValue);\n }\n\n onFocus(ev: FocusEvent) {\n if (this.disabled()) return;\n\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n\n}\n","<div #sliderbox class=\"sliderbox\" tabindex=\"0\" (click)=\"onClickSlide()\" [class.ativo]=\"ativo()\"\n\t[class.disabled]=\"disabled()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\">\n\t<div class=\"slidercircle\">\n\t\t<i class=\"checkmark bi bi-check-lg\"></i>\n\t\t<i class=\"nocheckmark bi bi-dash\"></i>\n\t</div>\n</div>","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ui-check-box',\n templateUrl: './ui-check-box.html',\n styleUrl: './ui-check-box.css',\n host: {\n '[class.focused]': 'focused()',\n }\n})\nexport class UiCheckBox implements AfterViewInit {\n\n marcabox = viewChild('marcabox', { read: ElementRef });\n\n value = model<boolean>(false);\n disabled = input<boolean>();\n focused = model<boolean>(false);\n focus = input<boolean>(false);\n changed = output<boolean>();\n single = input<boolean>(false);\n hasDash = input<boolean>(false);\n\n ativo = computed(() => {\n const val = (this.value() as any);\n return val === true || val === 'true' || val === 1 || val === '1';\n });\n\n constructor() {\n effect(() => {\n if (this.focus()) {\n this.marcabox()?.nativeElement.focus();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.marcabox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onClickMarcador();\n }\n });\n }\n\n onClickMarcador() {\n if (this.disabled()) return;\n\n const currentValue = (this.value() as any);\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\n this.value.set(newValue);\n this.changed.emit(newValue);\n }\n\n onFocus(ev: FocusEvent) {\n if (this.disabled()) return;\n\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n\n}\n","<div #marcabox class=\"marcador-area\" tabindex=\"0\" (click)=\"onClickMarcador()\" [class.ativo]=\"ativo()\"\n\t[class.multiple]=\"!single()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\" [class.disabled]=\"disabled()\">\n\t<div class=\"checkmark {{ single() ? 'simples' : 'multiple' }}\" [class.hasDash]=\"hasDash()\" [class.ativo]=\"ativo()\">\n\t</div>\n</div>","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ui-list-errors',\n templateUrl: './ui-list-errors.html',\n styleUrl: './ui-list-errors.css',\n})\nexport class UiListErrors {\n\n show = input.required<boolean | undefined>();\n\n errors = input.required<(string | undefined)[] | undefined>();\n dica = input.required<string | undefined>();\n}\n","@if(show()){\n<div class=\"erroArea\" [class.hide]=\"(!errors() || errors()?.length === 0) && (!dica())\">\n\t@for (erro of errors(); track $index) {\n\t<span class=\"erroText\">{{ erro ?? 'Erro desconhecido' }}</span>\n\t}\n\t@if(dica()){\n\t<span class=\"dicaText\">{{ dica() ?? '' }}</span>\n\t}\n</div>\n}","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ui-loading',\n templateUrl: './ui-loading.html',\n styleUrl: './ui-loading.css',\n})\nexport class UiLoading {\n\n}\n","<i class=\"fa fa-spinner\"></i>","import { AfterViewInit, Component, effect, ElementRef, inject, input, model, OnDestroy, OnInit, signal, viewChild } from '@angular/core';\nimport { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { LibUtil } from '../../util/util';\nimport { IPosicoesFloating } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-menu',\n templateUrl: './ui-menu.html',\n styleUrl: './ui-menu.css',\n imports: [UiButton],\n host: { '[class.opened]': 'isOpened()' }\n})\nexport class UiMenu implements OnDestroy, OnInit, AfterViewInit {\n // UTILIZE:\n // 'slot:botao' para colocar o botão que irá abrir o menu, ou utilize o botão padrão (três pontos verticais)\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\n\n elementRef: ElementRef = inject(ElementRef);\n\n readonly disabled = input<boolean>();\n readonly icone = input<string | undefined | null>(\"bi bi-three-dots-vertical\");\n autoCloseInCascade = model<boolean>(true);\n\n posicao = model<IPosicoesFloating & string>('right-start');\n isOpened = model(false);\n id = signal(LibUtil.uuid().split('-')[0]);\n internalId = signal<{ id: string | undefined; changed: boolean } | undefined>({ id: undefined, changed: false });\n isSmallScreen = signal(window.innerWidth < 500);\n optionMinWidth = signal<number>(0);\n menuPosition = signal<{ top: string; left: string }>({ top: '0px', left: '0px' });\n zIndex = signal<string>('999');\n closeOverlayObserver = new MutationObserver((mutations) => {\n let hasOpenClass = false;\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n const target = mutation.target as HTMLElement;\n if (target.classList.contains('open')) {\n hasOpenClass = true;\n break;\n }\n }\n }\n if (!hasOpenClass) {\n // LOG(1, \"%cObserver detectou overlay fechado:\", 'color: lightcoral;', mutations?.[0]);\n this.closeOverlay(true); // Callback para fechar o overlay quando a mutação indicar que perdeu a classe 'open'\n }\n });\n\n\n readonly menuTrigger = viewChild<ElementRef>('menuTrigger');\n readonly menuOverlay = viewChild<ElementRef>('menuOverlay');\n readonly menuContainer = viewChild<ElementRef>('menuContainer');\n\n constructor() {\n effect(() => {\n\n const eTrigger = this.menuTrigger()?.nativeElement as HTMLElement;\n if (!eTrigger) return;\n\n if (!this.isOpened()) return;\n\n const cleanupAutoUpdate = autoUpdate(\n eTrigger,\n this.menuContainer()?.nativeElement,\n () => this.updatePosition()\n );\n return () => {\n cleanupAutoUpdate();\n };\n\n });\n\n // Atualiza posição quando o menu abre\n effect(() => {\n if (this.isOpened()) {\n setTimeout(() => {\n this.updatePosition();\n }, 1);\n }\n });\n effect(() => {\n let internalId = this.internalId();\n if (internalId?.id === undefined && internalId?.changed === true) {\n // LOG(1, \"%cAlterado Internal:\", 'color: lightcoral;', internalId, \" - Menu ID:\", this.id());\n this.closeOverlay();\n };\n });\n }\n ngOnInit() {\n // Inicializa o zIndex com base no valor armazenado no sessionStorage\n this.zIndex.set(sessionStorage.getItem(`ui-menu-index`) ? (Number(sessionStorage.getItem(`ui-menu-index`)) + 1).toString() : '1001');\n sessionStorage.setItem(`ui-menu-index`, this.zIndex());\n }\n ngOnDestroy() {\n if (this.isOpened() == true) this.closeOverlay();\n this.closeOverlayObserver.disconnect();\n // this.cleanupScrollListeners();\n }\n ngAfterViewInit() {\n this.checkScreenSize();\n this.setOverlaySizeToSizeViewport();\n\n this.updatePosition();\n }\n\n // Abre ou fecha o overlay de opções\n onOpenOrCloseOptions() {\n if (!this.disabled()) {\n if (this.isOpened()) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n this.menuTrigger()?.nativeElement.focus();\n }\n }\n // Abre ou fecha o overlay de opções\n onClickSlotBotao(event: Event) {\n if (!this.disabled()) {\n this.openOverlay();\n this.menuTrigger()?.nativeElement.focus();\n }\n // LOG(1, \"%cAbriu ID:\", 'color: lightgreen;', this.id());\n }\n\n onClickOverlay() {\n // LOG(1, \"%cFECHOU OVERLAY ID:\", 'color: lightblue;', this.id());\n this.closeOverlay();\n }\n\n\n onClickContainer(event: Event) {\n event.stopPropagation();\n let closestOverlay = (event.target as HTMLElement).closest('.e-menu-overlay');\n let overlayId = closestOverlay?.id?.replaceAll('ov', '');\n let closestTrigger = (event.target as HTMLElement).closest('.e-menu-trigger');\n let triggerId = closestTrigger?.id?.replaceAll('tr', '');\n this.internalId.set({ id: triggerId, changed: true });\n\n // LOG(1, 'Triger ID:', triggerId, ' - Overlay ID:', overlayId);\n\n if (overlayId == this.id() && triggerId != null && triggerId != this.id()) {\n // Um menu interno foi clicado, não fecha o overlay\n // O atual nível de menu irá observar o elemento closestTrigger e só irá fechar o overlay quando o elemento trigger fechar.\n this.closeOverlayObserver.observe(closestTrigger as HTMLElement, { attributes: true, attributeFilter: ['class'] });\n } else {\n // Clicou no container, fecha o overlay\n this.closeOverlay();\n }\n\n }\n\n // Fecha o overlay de opções\n protected closeOverlay(fromCascade: boolean = false) {\n if (fromCascade && !this.autoCloseInCascade()) return;\n\n this.closeOverlayObserver.disconnect();\n setTimeout(() => {\n this.isOpened.set(false);\n }, 2)\n }\n\n // Abre o overlay de opções\n protected openOverlay() {\n this.updatePosition();\n setTimeout(() => {\n this.isOpened.set(true);\n }, 2)\n }\n\n // Atualiza a posição do menu de opções\n private async updatePosition() {\n if (this.isSmallScreen()) return;\n\n const trigger = this.menuTrigger()?.nativeElement;\n const menuContainer = this.menuContainer()?.nativeElement;\n if (!trigger || !menuContainer) return;\n\n const { x, y } = await computePosition(trigger, menuContainer, {\n placement: this.posicao(),\n middleware: [\n offset(2),\n flip({\n fallbackPlacements: ['left-start', 'bottom-start', 'top-start', 'bottom-end', 'top-end'],\n }),\n shift({ padding: 10 }),\n ],\n });\n this.menuPosition.set({\n left: `${x}px`,\n top: `${y}px`\n });\n }\n\n setOverlaySizeToSizeViewport() {\n // if (!this.isOpened()) return;\n\n // Obtem o tamanho da largura da viewport\n const viewportWidth = window.innerWidth;\n const parcialViewport = viewportWidth * 0.92;\n\n const overlay = this.menuOverlay()?.nativeElement as HTMLElement;\n if (overlay) {\n let currentElement = overlay.parentElement as HTMLElement | null;\n while (currentElement) {\n let larguraOverlay = overlay.clientWidth;\n\n // Se chegar no body, para (para evitar mover o overlay para fora do body)\n if (currentElement.tagName.toLowerCase() === \"body\") break;\n\n // Move o overlay para o próximo nível acima\n currentElement.appendChild(overlay);\n\n if (larguraOverlay >= parcialViewport) {\n currentElement = null;\n break;\n }\n\n currentElement = currentElement.parentElement as HTMLElement;\n }\n\n }\n }\n\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\n this.isSmallScreen.set(e.matches);\n const eTrigger = this.menuTrigger()?.nativeElement as HTMLElement;\n if (eTrigger) {\n if (this.isSmallScreen()) {\n this.optionMinWidth.set(0);\n } else {\n this.optionMinWidth.set(eTrigger.offsetWidth - 4);\n }\n }\n }\n\n checkScreenSize() {\n const mediaQuery = window.matchMedia('(max-width: 500px)');\n this.onChangeMediaQuery(mediaQuery);\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\n }\n\n onArrowUp(event: Event) {\n event.preventDefault();\n // this.moveFocoPara('cima', event);\n }\n\n onArrowDown(event: Event) {\n event.preventDefault();\n // this.moveFocoPara('baixo', event);\n }\n\n // moveFocoPara(direcao: 'cima' | 'baixo', event: Event) {\n // this.openOverlay();\n // LOG(1, `Moverá para ${direcao} - Event:`, event);\n // const container = this.menuContainer()?.nativeElement as HTMLElement;\n // if (!container) return;\n\n // const focusableElements = Array.from(container.querySelectorAll('.e-menu-area>*')).filter(el => el instanceof HTMLElement && !el.hasAttribute('disabled')) as HTMLElement[];\n // if (focusableElements.length === 0) return;\n\n // // \n\n // }\n\n}\n","<div #menuTrigger class=\"e-menu-trigger\" (click)=\"onClickSlotBotao($event)\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\n\t(keydown.ArrowDown)=\"onArrowDown($event)\" (keyup.ArrowUp)=\"onArrowUp($event)\" (keyup.Escape)=\"closeOverlay()\"\n\t[id]=\"'tr'+id()\" [class.open]=\"isOpened()\">\n\t<ng-content select=\"[slot='botao']\">\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" [icone]=\"icone()\"></ui-button>\n\t</ng-content>\n</div>\n\n<div #menuOverlay class=\"e-menu-overlay\" [class.open]=\"isOpened()\" (click)=\"onClickOverlay()\"\n\t(keydown.ArrowDown)=\"onArrowDown($event)\" (keyup.ArrowUp)=\"onArrowUp($event)\" [style.zIndex]=\"zIndex()\"\n\t[id]=\"'ov'+id()\">\n\n\t<div #menuContainer class=\"e-menu-container\" [class.smallScreen]=\"isSmallScreen()\" [style.left]=\"menuPosition().left\"\n\t\t[style.top]=\"menuPosition().top\" (click)=\"onClickContainer($event)\">\n\t\t<div [style.minWidth.px]=\"optionMinWidth()\" class=\"e-menu-area\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t</div>\n\n</div>","import { Component, computed, effect, ElementRef, HostListener, inject, OnDestroy, signal, viewChild } from '@angular/core';\nimport { computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { IKV } from '../../interfaces/interfaces';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\nexport interface IKVAutoCompletador extends IKV {\n selected: boolean;\n choosing: boolean;\n}\n\n@Component({\n selector: 'fields-autocomplete',\n templateUrl: './autocomplete.html',\n styleUrls: ['../fields.css', './autocomplete.css'],\n imports: [UiListErrors],\n})\nexport class FieldsAutocomplete extends BaseFieldsForm implements OnDestroy {\n\n elementRef: ElementRef = inject(ElementRef);\n\n isOpenedOptions = signal(false);\n markedOptionKey = signal<string | number | null | undefined>(null);\n\n options = computed<IKVAutoCompletador[]>(() => {\n const options = this.campo()?.options?.() || [];\n // Autocompletar não exibe opções sem valor\n return options.filter((op: IKV) => op.v != null && op.v !== '').map((op: IKV) => ({\n ...op,\n selected: op.k === this.value(),\n choosing: op.k === this.markedOptionKey()\n }));\n });\n optionsFiltered = computed<IKVAutoCompletador[]>(() => {\n let words = this.value()?.toString().trim().split(\" \").filter((t: string) => t != \"\");\n const options = (this.options() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\n // Sem filtro, retorna tudo\n if (words.length === 0) return options;\n\n return options.filter(op => {\n for (const w of words) {\n let encontrado = false;\n if (op.v != null && LibUtil.contem(op.v, w)) {\n encontrado = true;\n }\n\n // Termo não encontrado na opção\n if (!encontrado) return false;\n }\n\n // Todos os termos encontrados\n return true;\n }).map(op => {\n let data = op.v?.toString() || '';\n // Substitui o valor do html, colocando uma mark em volta do texto buscado.\n if (words.length > 0) {\n for (let word of words) {\n let w = word.toLowerCase();\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n // Se w estiver dentro de < ou >, ignora (para não interferir em tags HTML)\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\n // Se a palavra for encontrada, envolve com a tag <mark>\n let pos = preparedData.indexOf(w);\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n\n return {\n ...op,\n html: data,\n };\n });\n });\n\n readonly displayText = viewChild<ElementRef>('displayText');\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\n readonly optionsContainer = viewChild<ElementRef>('optionsContainer');\n offsetWidth = signal<number>(0);\n menuPosition = signal<{ top: string; left: string }>({ top: '0px', left: '0px' });\n\n scrollCleanup: (() => void) | null = null;\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n effect(() => {\n const el = this.triggerElement()?.nativeElement as HTMLElement;\n if (!el) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n this.offsetWidth.set(entry.target.clientWidth - 4); // -4 para compensar borda\n }\n // Atualiza a posição do menu quando redimensiona\n if (this.isOpenedOptions()) {\n this.updatePosition();\n }\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n });\n\n // Atualiza posição quando o menu abre\n effect(() => {\n if (this.isOpenedOptions()) {\n setTimeout(() => {\n this.updatePosition();\n this.setupScrollListeners();\n }, 1);\n } else {\n this.cleanupScrollListeners();\n }\n });\n }\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.closeOverlay();\n this.cleanupScrollListeners();\n }\n\n onInput(newValue: string) {\n if (newValue != \"\") {\n this.isOpenedOptions.set(true);\n } else {\n this.isOpenedOptions.set(false);\n }\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n if (this.campo()?.onMatchOption) {\n let option = this.campo()?.options?.()?.find((op: IKV) => op.v === newValue);\n try {\n this.campo()?.onMatchOption?.(this.form(), option);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name.toString()}'`, err);\n }\n }\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n override onClickLabel() {\n super.onClickLabel();\n this.closeOverlay();\n }\n\n // Fecha o overlay de opções\n protected closeOverlay() {\n this.isOpenedOptions.set(false);\n this.markedOptionKey.set(null);\n }\n\n // Seleciona uma opção\n onSelectOption(option?: IKV) {\n if (!option || option.k == null) {\n LOG(1, `❌ Chave nula (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\n return;\n }\n this.onInput(option.v?.toString() ?? '');\n this.closeOverlay();\n }\n\n // Navegação por teclado\n markKey(event: KeyboardEvent) {\n const options = this.optionsFiltered();\n if (options.length === 0) return;\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\n let currentKV = options.find(op => op.k === this.markedOptionKey());\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.isOpenedOptions.set(true);\n currentIndex = (currentIndex + 1) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.isOpenedOptions.set(true);\n currentIndex = (currentIndex - 1 + options.length) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (this.markedOptionKey() != null) {\n this.onSelectOption(currentKV);\n }\n this.closeOverlay();\n }\n }\n\n\n // ----------------------------------------------------\n // Funções de Suporte ao Overlay\n // ----------------------------------------------------\n\n // Fecha o overlay ao clicar fora\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n if (!clickedInside && this.isOpenedOptions()) {\n this.isOpenedOptions.set(false);\n this.markedOptionKey.set(null);\n }\n }\n\n // Configura os listeners de scroll\n private setupScrollListeners() {\n const trigger = this.triggerElement()?.nativeElement;\n if (!trigger) return;\n\n const updatePositionHandler = () => this.updatePosition();\n const scrollElements: HTMLElement[] = [];\n window.addEventListener('scroll', updatePositionHandler, { passive: true });\n let parent = trigger.parentElement;\n while (parent) {\n const overflow = window.getComputedStyle(parent).overflow;\n const overflowY = window.getComputedStyle(parent).overflowY;\n const overflowX = window.getComputedStyle(parent).overflowX;\n if (\n overflow === 'auto' || overflow === 'scroll' ||\n overflowY === 'auto' || overflowY === 'scroll' ||\n overflowX === 'auto' || overflowX === 'scroll'\n ) {\n parent.addEventListener('scroll', updatePositionHandler, { passive: true });\n scrollElements.push(parent);\n }\n parent = parent.parentElement;\n }\n this.scrollCleanup = () => {\n window.removeEventListener('scroll', updatePositionHandler);\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', updatePositionHandler);\n });\n };\n }\n\n // Limpa os listeners de scroll\n private cleanupScrollListeners() {\n if (this.scrollCleanup) {\n this.scrollCleanup();\n this.scrollCleanup = null;\n }\n }\n\n // Atualiza a posição do menu de opções\n private async updatePosition() {\n const trigger = this.triggerElement()?.nativeElement;\n const optionsContainer = this.optionsContainer()?.nativeElement;\n if (!trigger || !optionsContainer) return;\n const { x, y } = await computePosition(trigger, optionsContainer, {\n placement: 'bottom-start',\n middleware: [\n offset(2),\n flip({\n fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],\n }),\n shift({ padding: 10 }),\n ],\n });\n this.menuPosition.set({\n left: `${x}px`,\n top: `${y}px`\n });\n }\n\n // Move o scroll para a opção marcada\n private moveScrollToMarkedOption() {\n setTimeout(() => {\n const optionsContainer = this.optionsContainer()?.nativeElement?.querySelector(\".options-list\") as HTMLElement;\n const markedOption = optionsContainer?.querySelector('.option-item.choosing') as HTMLElement;\n if (optionsContainer && markedOption) {\n const containerTop = optionsContainer.scrollTop;\n const containerBottom = containerTop + optionsContainer.clientHeight;\n const optionTop = markedOption.offsetTop;\n const optionBottom = optionTop + markedOption.offsetHeight;\n if (optionTop < containerTop) {\n optionsContainer.scrollTop = optionTop - 40; // 40px do elemento Search\n } else if (optionBottom > containerBottom) {\n optionsContainer.scrollTop = optionBottom - optionsContainer.clientHeight;\n }\n }\n }, 1);\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div #triggerElement class=\"fieldField FieldAutoComplete\">\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\">\n\t\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t\t[style]=\"campo()?.style\" (keyup)=\"markKey($event)\" (keydown.tab)=\"closeOverlay()\" [class.outlined]=\"true\"\n\t\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>\n\n<div #optionsContainer class=\"select-options-container\" [class.open]=\"isOpenedOptions()\"\n\t[style.left]=\"menuPosition().left\" [style.top]=\"menuPosition().top\">\n\t@if(isOpenedOptions()) {\n\t<div class=\"options-list\">\n\t\t@for(option of optionsFiltered(); track option.k) {\n\t\t<div class=\"option-item\" [class.selected]=\"option.selected\" [style.width.px]=\"offsetWidth()\" [title]=\"option.v\"\n\t\t\t(click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\n\t\t\t[class.choosing]=\"option.choosing\">\n\t\t\t<div class=\"option-item-check\"></div>\n\t\t\t<div class=\"option-item-text\" [innerHTML]=\"option.html\"></div>\n\t\t</div>\n\t\t}\n\t</div>\n\t}\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { LOG } from '../../util/log';\n\n@Component({\n selector: 'fields-button',\n templateUrl: './button.html',\n styleUrls: ['../fields.css', './button.css'],\n imports: [UiButton, UiListErrors]\n})\nexport class FieldsButton extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onClickButton(ev: Event) {\n this.tocarCampo();\n if (this.campo()?.onClick) {\n try {\n this.campo()?.onClick?.(this.form());\n } catch (err) {\n LOG(1, '❌ Erro ao executar onClick do botão:', err);\n }\n }\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo ?? ' ' }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldButton\">\n\t\t\t\t<ui-button [tipo]=\"campo()?.tipoBotao\" [tema]=\"campo()?.tema\" [style]=\"campo()?.style\"\n\t\t\t\t\t(click)=\"onClickButton($event)\" [disabled]=\"campo()?.disabled\" [icone]=\"campo()?.icone\">\n\t\t\t\t\t<div [innerHTML]=\"campo()?.tituloClicavel\"></div>\n\t\t\t\t</ui-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, signal } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiCheckBox } from \"../../elements/ui-check-box/ui-check-box\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-checkbox',\n templateUrl: './checkbox.html',\n styleUrls: ['../fields.css', './checkbox.css'],\n imports: [UiCheckBox, UiListErrors],\n})\nexport class FieldsCheckbox extends BaseFieldsForm {\n\n signalFocus = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onChange(newValue: boolean) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n ngAfterViewInit(): void {\n let val = this.value();\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\n }\n\n toogleAtivo() {\n this.onChange(!this.value());\n this.signalFocus.set(true);\n setTimeout(() => {\n this.signalFocus.set(false);\n }, 1)\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldCheckbox microPos4\">\n\t\t\t\t<ui-check-box [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-check-box>\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\n\t\t\t\t\tcampo()?.tituloClicavel) }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, input } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\n\n@Component({\n selector: 'field-color-circulocolorido',\n templateUrl: './circulocolorido.html',\n styleUrls: ['./circulocolorido.css'],\n})\nexport class CirculoColorido {\n\n valor = input<string | number | null>(null);\n\n angle = computed<number | null>(() => {\n let angle = this.valor();\n if (!angle) return null;\n if (LibUtil.classof(angle) === 'string') {\n let num = Number(angle);\n if (isNaN(num)) return 0;\n angle = num;\n }\n return angle as number | null;\n });\n\n}\n","<div class=\"container\" [style.--atualColor]=\"angle()\">\n\t<div class=\"circulo {{ angle() != null ? 'show' : 'hide' }}\"></div>\n\t@if(angle() != null){\n\t<div class=\"arrow\" [style.--arrowAngle]=\"(angle()! - 47) + 'deg'\">\n\t\t<i class=\"bi bi-cursor-fill\"></i>\n\t</div>\n\t}\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { CirculoColorido } from './CirculoColorido/circulocolorido';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-color',\n templateUrl: './color.html',\n styleUrls: ['../fields.css', './color.css'],\n imports: [CirculoColorido, UiListErrors],\n})\nexport class FieldsColor extends BaseFieldsForm implements OnInit {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '' || val === 0;\n // if (val && LibUtil.classof(val) === 'number' && (val < 0 || val > 360)) {\n // errors = [...errors, Valide.msg.apenasEntre(0, 360)];\n // }\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.onInput(this.value(), false);\n }\n\n onInput(newValue: string, touch: boolean = true) {\n let num = Number(newValue);\n if (isNaN(num)) num = 0;\n this.updateValue(num, touch);\n this.campo()?.onInput?.(this.form());\n }\n\n onInputRange(event: any) {\n let num = Number(event.target.value);\n if (isNaN(num)) num = 0;\n if (num < 0) num = 0;\n if (num > 360) num = 360;\n this.updateValue(num);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<field-color-circulocolorido [valor]=\"value()\"></field-color-circulocolorido>\n\t\t<div class=\"fieldComRange\">\n\t\t\t<div class=\"fieldEffect\">\n\t\t\t\t<div class=\"fieldField FieldColor\">\n\t\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t\t[style]=\"campo()?.style\" min=\"0\" max=\"360\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<input type=\"range\" [value]=\"value() ?? 0\" (input)=\"onInputRange($event)\" min=\"0\" max=\"360\"\n\t\t\t\t[disabled]=\"campo()?.disabled\" (change)=\"onChangeEmit()\" />\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-date',\n templateUrl: './date.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsDate extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDate\">\n\t\t\t\t<input type=\"date\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-datetime',\n templateUrl: './datetime.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsDatetime extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDate\">\n\t\t\t\t<input type=\"datetime-local\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { LibUtil } from './util';\n\n@Pipe({ name: 'jsonColorido' })\nexport class JsonColoridoPipe implements PipeTransform {\n\n\ttransform(value: any, args?: any): string {\n\t\treturn LibUtil.formatJson(value, true);\n\t}\n\n}\n","import { Component, computed, effect, inject, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { JsonColoridoPipe } from '../../util/JsonColorido.pipe';\n\n@Component({\n selector: 'fields-display',\n templateUrl: './display.html',\n styleUrls: ['../fields.css', './display.css'],\n imports: [UiListErrors, JsonColoridoPipe],\n})\nexport class FieldsDisplay extends BaseFieldsForm {\n\n sanitizer = inject(DomSanitizer);\n\n // Importante:\n // - Este campo não é editável, então não tem onChange ou onInput.\n // - Este campo não deve entrar no estado Pendente. A exibição foi removida e o fundo foi deixado transparente.\n\n readonly displayValue = computed<SafeHtml>(() => {\n let value = this.value();\n if (this.campo()?.mask) value = LibUtil.mascarar(value, this.campo()?.mask) ?? '';\n if (LibUtil.classof(value) === 'boolean') {\n value = value ? 'Sim' : 'Não';\n }\n if (value == null) {\n value = '';\n }\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isEmpty]=\"campo()?.empty\" (click)=\"onClickEmit()\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDisplay\">\n\t\t\t\t@if(campo()?.classe == 'displayJson') {\n\t\t\t\t<pre class=\"p-2\" [innerHTML]=\"value() | jsonColorido\"></pre>\n\t\t\t\t}@else {\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [innerHTML]=\"displayValue()\"></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, inject, OnInit, viewChild } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-editor',\n templateUrl: './editor.html',\n styleUrls: ['../fields.css', './editor.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsEditor extends BaseFieldsForm implements OnInit {\n\n sanitizer = inject(DomSanitizer);\n editavel = viewChild('editavel', { read: ElementRef });\n\n iconeJustifyLeft = 'fa fa-align-left';//'bi bi-justify-left';\n iconeJustifyCenter = 'fa fa-align-center';//'bi bi-text-center';\n iconeJustifyRight = 'fa fa-align-right';//'bi bi-justify-right';\n iconeJustify = 'fa fa-align-justify';//'bi bi-justify';\n iconeNegrito = 'fa fa-bold';//'bi bi-type-bold';\n iconeItalico = 'fa fa-italic';//'bi bi-type-italic';\n iconeUnderline = 'fa fa-underline';//'bi bi-type-underline';\n iconeClearFormat = 'fa fa-eraser';//'bi bi-eraser';\n\n isNegrito: boolean = false;\n isItalico: boolean = false;\n isSublinhado: boolean = false;\n currentJustify: 'left' | 'center' | 'right' | null = null;\n\n safeValue = computed<SafeHtml>(() => {\n let value = this.value();\n if (value == null) {\n value = '';\n }\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n override ngOnInit() {\n super.ngOnInit();\n this.inicializarEstados();\n }\n\n onInput(ev?: Event, cursorPosition?: { start: number; end: number, plus: number } | null) {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n let texto = eEditavel.innerHTML;\n if (!texto) return;\n\n // Salva a posição do cursor apenas quando o usuário está digitando\n if (cursorPosition === undefined) {\n cursorPosition = ev ? LibUtil.saveCursorPosition(eEditavel) : null;\n }\n\n // Converte <br> em [br]s para preservar quebras de linha\n texto = texto.replace(/<br>/g, '[br]');\n\n // Ao ocorrer mudança aqui, deve-se retirar todas as tags de hipertexto e depois aplicar apenas as que estão ativas.\n texto = LibUtil.removeHtmlTags(texto);\n\n // Restaura as quebras de linha\n texto = texto.replace(/\\[br\\]/g, '<br>');\n if (texto === \"<br>\") {\n texto = \"\";\n }\n\n if (this.isNegrito) {\n texto = `<b>${texto}</b>`;\n }\n if (this.isItalico) {\n texto = `<i>${texto}</i>`;\n }\n if (this.isSublinhado) {\n texto = `<u>${texto}</u>`;\n }\n if (this.currentJustify) {\n texto = `<div style=\"text-align: ${this.currentJustify};\">${texto}</div>`;\n }\n eEditavel.innerHTML = texto;\n\n if (cursorPosition) {\n LibUtil.restoreCursorPosition(eEditavel, cursorPosition);\n }\n\n this.campo()?.onInput?.(this.form());\n }\n\n onChange() {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n\n let texto = eEditavel.innerHTML;\n this.updateValue(texto);\n\n this.onChangeEmit();\n }\n\n onDragEvent(dragEvent: DragEvent) {\n if (this.campo()?.disabled) return;\n const dataTransfer = dragEvent.dataTransfer;\n if (!dataTransfer) return;\n\n // Drag and Drop não é suportado.\n dragEvent.preventDefault();\n dragEvent.stopPropagation();\n const text = dataTransfer.getData('text/plain');\n LOG(1, \"Drag and Drop Text: \", text, dragEvent);\n }\n\n onNegrito() {\n if (this.campo()?.disabled) return;\n this.isNegrito = !this.isNegrito;\n this.onInput();\n this.onChange();\n }\n onItalico() {\n if (this.campo()?.disabled) return;\n this.isItalico = !this.isItalico;\n this.onInput();\n this.onChange();\n }\n onSublinhado() {\n if (this.campo()?.disabled) return;\n this.isSublinhado = !this.isSublinhado;\n this.onInput();\n this.onChange();\n }\n onJustify(direction: 'left' | 'center' | 'right') {\n if (this.campo()?.disabled) return;\n if (this.currentJustify === direction) {\n this.currentJustify = null;\n this.onInput();\n this.onChange();\n return;\n }\n this.currentJustify = direction;\n this.onInput();\n this.onChange();\n }\n\n\n onClearFormat() {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n let texto = eEditavel.innerHTML;\n if (!texto) return;\n\n this.currentJustify = null;\n this.isNegrito = false;\n this.isItalico = false;\n this.isSublinhado = false;\n\n texto = LibUtil.removeHtmlTags(texto);\n eEditavel.innerHTML = texto;\n this.onChange();\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (this.campo()?.disabled) return;\n if (event.key === 'Enter') {\n event.preventDefault();\n\n const eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n\n // Salva a posição do cursor\n const cursorPosition = LibUtil.saveCursorPosition(eEditavel, 1);\n\n // Insere uma quebra de linha (<br>) na posição do cursor\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n\n const br = document.createElement('br');\n range.insertNode(br);\n\n // Move o cursor para depois do <br>\n range.setStartAfter(br);\n range.setEndAfter(br);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n\n this.onInput(undefined, cursorPosition);\n }\n }\n\n inicializarEstados() {\n let valor = this.value();\n if (typeof valor !== 'string' || !valor) return;\n valor = valor.toLowerCase();\n\n this.isNegrito = valor.includes('<b>') && valor.includes('</b>');\n this.isItalico = valor.includes('<i>') && valor.includes('</i>');\n this.isSublinhado = valor.includes('<u>') && valor.includes('</u>');\n if (valor.includes('text-align: left')) {\n this.currentJustify = 'left';\n } else if (valor.includes('text-align: center')) {\n this.currentJustify = 'center';\n } else if (valor.includes('text-align: right')) {\n this.currentJustify = 'right';\n }\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField fieldEditor\">\n\t\t\t\t@if(campo()?.showToolbar !== false) {\n\t\t\t\t<div class=\"toolbar\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isNegrito\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t(click)=\"onNegrito()\" [icone]=\"iconeNegrito\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isItalico\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t(click)=\"onItalico()\" [icone]=\"iconeItalico\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isSublinhado\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onSublinhado()\" [icone]=\"iconeUnderline\"></ui-button>\n\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone espaco\" [class.ativo]=\"currentJustify === 'left'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('left')\" [icone]=\"iconeJustifyLeft\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'center'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('center')\" [icone]=\"iconeJustifyCenter\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'right'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('right')\" [icone]=\"iconeJustifyRight\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [disabled]=\"campo()?.disabled\" (click)=\"onClearFormat()\"\n\t\t\t\t\t\t[icone]=\"iconeClearFormat\"></ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div #editavel [class.corpo]=\"true\" [contentEditable]=\"!campo()?.disabled && !campo()?.readonly\"\n\t\t\t\t\t[class]=\"campo()?.classe\" [style]=\"campo()?.style\" (input)=\"onInput($event)\" [innerHTML]=\"safeValue()\"\n\t\t\t\t\t(blur)=\"onChange()\" (drop)=\"onDragEvent($event)\" (keydown)=\"onKeyDown($event)\"></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-email',\n templateUrl: './email.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsEmail extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldEmail\">\n\t\t\t\t<input type=\"email\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\n@Component({\n selector: 'fields-hidden',\n templateUrl: './hidden.html',\n styles: `.fieldHidden{display: none;}`\n})\nexport class FieldsHidden extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n}\n","<div class=\"fieldHidden\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"></div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-icon',\n templateUrl: './icon.html',\n styleUrls: ['../fields.css', './icon.css'],\n imports: [UiButton, UiListErrors]\n})\nexport class FieldsIcon extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<ui-button tipo=\"raised\" tema=\"secondary\" (clicked)=\"onClickEmit()\" [disabled]=\"campo()?.disabled\"\n\t\t\t[style.width.px]=\"100\">\n\t\t\t@if(value()){\n\t\t\t<i [class]=\"value()\" [style.fontSize]=\"'25px'\"></i>\n\t\t\t}@else {\n\t\t\t<div class=\"noIcon\">ICO</div>\n\t\t\t}\n\t\t</ui-button>\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldIconType\">\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { AfterViewInit, Component, effect, ElementRef, viewChild } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\ninterface ICode {\n [key: string]: string;\n}\n\n@Component({\n selector: 'fields-multifactor',\n templateUrl: './multifactor.html',\n styleUrls: ['../fields.css', './multifactor.css'],\n imports: [UiListErrors],\n})\nexport class FieldsMultifactor extends BaseFieldsForm implements AfterViewInit {\n\n code: ICode = {};\n controle = viewChild('controle', { read: ElementRef });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n if (this.campo()?.autofocus && this.controle()?.nativeElement) {\n this.controle()?.nativeElement.focus();\n }\n }, 100);\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n\n onInputChar(ev: Event) {\n let e = (ev.target as HTMLInputElement);\n let v = e.value;\n let name = e.name;\n let order = \"abcdef\";\n let nextInputName: String = \"b\";\n let isLast = false;\n\n if (v && v != \"\" && \"0123456789\".includes(v)) {\n // Só seta no objeto se for válido\n this.code[name] = v;\n // Identificar próximo campo\n nextInputName = order.charAt(order.indexOf(name) + 1);\n // Tentativa de focar próximo elemento\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\n if (nextE) {\n nextE.focus();\n } else {\n isLast = true;\n }\n } else {\n e.value = \"\";\n delete this.code[name];\n }\n\n // Seta valor do campo de forma ordenada\n let novoValor = Object.values(Object.fromEntries(Object.entries(this.code).sort())).join(\"\");\n this.updateValue(novoValor);\n\n // Verifica se completou\n if (this.campo()?.onComplete && novoValor.length == 6 && isLast) {\n try {\n this.campo()?.onComplete?.(this.form(), novoValor);\n this.onChangeEmit();\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatch do campo '${this.name.toString()}'`, err);\n }\n }\n }\n\n onKeyUp(ev: KeyboardEvent) {\n let key = ev.key;\n let e = (ev.target as HTMLInputElement);\n let v = e.value;\n if (e && v == \"\" && key == \"Backspace\") {\n let order = \"abcdef\";\n let indexOf = order.indexOf(e.name);\n let nextInputName: String = order.charAt(indexOf - 1);\n // Tentativa de focar próximo elemento\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\n if (nextE) {\n if (nextE.value != \"\") {\n nextE.focus();\n }\n }\n }\n }\n\n onFocus(ev: Event) {\n (ev.target as HTMLInputElement)?.select();\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultifactor\">\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" [name]=\"campo()?.prop\"\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [hidden]=\"true\" [readOnly]=\"true\" />\n\n\t\t\t\t<div class=\"gridFactor\">\n\t\t\t\t\t<input #controle class=\"fieldSingleInput\" name=\"a\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"b\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"c\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"d\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"e\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"f\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-multitext',\n templateUrl: './multitext.html',\n styleUrls: ['../fields.css', './multitext.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsMultiText extends BaseFieldsForm implements OnInit {\n\n items: string[] | null = [];\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n let value = this.value();\n if (value && Array.isArray(value)) this.items = value ?? [];\n else this.items = [];\n }\n\n ngAfterViewInit(): void {\n this.updateValue(this.items ?? [], false);\n }\n\n onInput(newValue: string) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n onClickAddItem() {\n let value = \"\";\n if (!this.items) this.items = [];\n this.items = [...this.items, value];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n\n setTimeout(() => {\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\n if (allInputs && allInputs.length > 0) {\n allInputs[allInputs.length - 1].focus();\n }\n }, 1);\n }\n\n onClickDelItem(index: number) {\n this.items = this.items?.filter((v, i) => i != index) ?? [];\n if (this.items && this.items?.length <= 0) this.items = [];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n _onLocalInput(value: string, index: number) {\n if (this.items) this.items[index] = value;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultiText\">\n\t\t\t\t@if(campo()?.showHeader){\n\t\t\t\t<div>Itens</div>\n\t\t\t\t<div class=\"action\"></div>\n\t\t\t\t}\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInput($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"action\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\n\t\t\t\t\t\ticone=\"bi bi-trash\">\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"add\">\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\n\t\t\t\t\t\ticone=\"bi bi-plus-circle\">\n\t\t\t\t\t\tAdicionar Linha\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-number',\n templateUrl: './number.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsNumber extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '' || val === 0;\n this.updateCampo({ empty });\n });\n }\n\n ngAfterViewInit(): void {\n this.onInput(this.value(), false);\n }\n\n onInput(newValue: string, touch: boolean = true) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n let num = parseFloat(newValue);\n if (isNaN(num)) num = 0;\n this.updateValue(num, touch);\n this.campo()?.onInput?.(this.form());\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldText\">\n\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [readOnly]=\"campo()?.readonly ?? false\" [class.outlined]=\"true\"\n\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, signal } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-password',\n templateUrl: './password.html',\n styleUrls: ['../fields.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsPassword extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n // Exibir e Ocultar Senha\n hide = signal(true);\n _aoClicarVerSenha(event: MouseEvent) {\n this.hide.set(!this.hide());\n event.stopPropagation();\n }\n}\n\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldPassword\">\n\t\t\t\t<input [type]=\"hide() ? 'password' : 'text'\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\n\t\t\t\t\t(change)=\"onChangeEmit()\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.outlined]=\"true\"\n\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"_aoClicarVerSenha($event)\" aria-label=\"Oculta ou Exibe Senha\"\n\t\t\t\t\ttitle=\"Oculta ou Exibe Senha\" [aria-pressed]=\"hide()\"><i\n\t\t\t\t\t\t[class]=\"hide() ? 'bi bi-eye-slash-fill' : 'bi bi-eye-fill'\"></i></ui-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, viewChild } from '@angular/core';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { UiProcurar } from \"../../elements/ui-procurar/ui-procurar\";\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\n@Component({\n selector: 'fields-search',\n templateUrl: './search.html',\n styleUrls: ['../fields.css', './search.css'],\n imports: [UiListErrors, UiProcurar],\n})\nexport class FieldsSearch extends BaseFieldsForm {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n\n isCollapsed = computed(() => this.campo()?.isCollapsed?.() ?? false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.updateValue(\"\");\n this.focusSearchInput();\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n focusSearchInput() {\n this.searchInput()?.nativeElement?.focus();\n }\n\n onClickSearchIcon() {\n this.focusSearchInput();\n this.onChangeEmit();\n }\n\n onSearch() {\n this.onChangeEmit();\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"\n\t[class.isCollapsed]=\"isCollapsed()\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSearch\">\n\t\t\t\t<ui-procurar [value]=\"value()\" [name]=\"campo()?.prop\" (inputed)=\"onInput($event)\" (changed)=\"onChangeEmit()\"\n\t\t\t\t\t[colapsed]=\"isCollapsed()\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? 'Procurar...'\"></ui-procurar>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, OnInit, signal } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiSelect } from '../../elements/ui-select/ui-select';\nimport { IOptionValue } from '../../elements/ui-select/ui-select';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { LOG } from '../../util/log';\n\n\n@Component({\n selector: 'fields-select',\n templateUrl: './select.html',\n styleUrls: ['../fields.css', './select.css'],\n imports: [UiSelect, UiListErrors],\n})\nexport class FieldsSelect extends BaseFieldsForm {\n\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n // Um Refill pode estar em andamento enquanto este componente é iniciado.\n // Utilize o campo.mapear ou campo.refill para alterar o comportamento do refill inicial.\n\n\n fieldOptions = computed(() => {\n return this.campo()?.options?.() ?? [];\n });\n\n\n // Manipula mudança de valor (valueOfK não chegará nulo ou undefined)\n onChange(optionValue: IOptionValue) {\n let newValue: any = optionValue.keys;\n\n if (this.campo()?.onMatchOption && optionValue.optionChanged) {\n try {\n this.campo()?.onMatchOption?.(this.form(), optionValue.optionChanged);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name()}'`, err);\n }\n }\n\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSelect\">\n\t\t\t\t<ui-select [value]=\"this.value()\" [options]=\"fieldOptions()\" (changed)=\"onChange($event)\"\n\t\t\t\t\t[multiple]=\"this.campo()?.multiple ?? false\" [name]=\"this.campo()?.prop\" [textEmpty]=\"this.campo()?.textEmpty\"\n\t\t\t\t\t[canUnselect]=\"campo()?.canUnselect\"></ui-select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { AfterViewInit, Component, effect, signal } from '@angular/core';\nimport { UiSlide } from '../../elements/ui-slide/ui-slide';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-slide',\n templateUrl: './slide.html',\n styleUrls: ['../fields.css', './slide.css'],\n imports: [UiSlide, UiListErrors],\n})\nexport class FieldsSlide extends BaseFieldsForm implements AfterViewInit {\n\n signalFocus = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onChange(newValue: boolean) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n ngAfterViewInit(): void {\n let val = this.value();\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\n }\n\n toogleAtivo() {\n this.onChange(!this.value());\n this.signalFocus.set(true);\n setTimeout(() => {\n this.signalFocus.set(false);\n }, 1)\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSlide microPos4\">\n\t\t\t\t<ui-slide [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-slide>\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\n\t\t\t\t\tcampo()?.tituloClicavel) }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\n\n@Component({\n selector: 'fields-text',\n templateUrl: './text.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors]\n})\nexport class FieldsText extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldText\">\n\t\t\t\t<input type=\"text\" [value]=\"value() ?? ''\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, OnInit, signal, viewChild } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { UiDropZone } from '../../elements/ui-drop-zone/ui-drop-zone';\nimport { IDropOutput, IFileMetadata } from '../../interfaces/interfaces';\nimport { UiFileList } from '../../elements/ui-file-list/ui-file-list';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-upload',\n templateUrl: './upload.html',\n styleUrls: ['../fields.css', './upload.css'],\n imports: [UiDropZone, UiFileList, UiListErrors],\n})\nexport class FieldsUpload extends BaseFieldsForm implements OnInit {\n\n multiple: boolean = false;\n inputFile = viewChild('inputFile', { read: ElementRef })\n acceptFormats: string = \"\";\n sobrepondo = signal<boolean>(true);\n\n acceptFormatsShow = computed<string>(() => {\n return this.acceptFormats.split(',').map(ext => ext.trim().toUpperCase().slice(1)).join(', ');\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n this.sobrepondo.set(empty);\n });\n }\n override ngOnInit() {\n super.ngOnInit();\n this.multiple = this.campo()?.multiple ?? false;\n this.acceptFormats = this.campo()?.accept ?? \"\";\n }\n\n onChange(newValue: IFileMetadata[]) {\n let campo = this.campo();\n if (!campo) return;\n if (campo.disabled) return;\n // Filtra apenas os arquivos válidos\n newValue = newValue.filter(file => this.validarImagem(file));\n // Atualiza o valor do campo\n let valueToUpdate: any = this.multiple ? newValue : newValue[newValue.length - 1];\n this.updateValue(valueToUpdate);\n\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n filesList = computed<IFileMetadata[]>(() => {\n let val = (this.value() as IFileMetadata[] | IFileMetadata | string | undefined);\n if (this.multiple) {\n // Quando é multiplo, ja vem um array.\n return val as IFileMetadata[];\n } else {\n // Quando não é multiplo, vem um objeto, mas precisa ser tratado como array.\n if (val && val !== '') {\n return [val as IFileMetadata];\n } else {\n return [];\n }\n }\n });\n\n // Adiciona arquivos recebidos do DropZone\n onDropped(content: IDropOutput) {\n if (this.campo()?.disabled) return;\n if (content.tipo !== \"file\" || !content.data || !(content.data instanceof Array)) return;\n let dataFiles: IFileMetadata[] = content.data;\n this.onAddFile(dataFiles);\n }\n\n // Remove arquivo da lista\n onRemove(file: IFileMetadata) {\n if (this.campo()?.disabled) return;\n let currentFiles = this.filesList();\n const index = currentFiles.findIndex(f => f.size === file.size);\n if (index > -1) {\n currentFiles.splice(index, 1);\n this.onChange(currentFiles);\n }\n }\n\n onAddFile(newFiles: IFileMetadata[]) {\n if (this.campo()?.disabled) return;\n let newValues: IFileMetadata[] = [];\n if (this.multiple) {\n newValues = [\n ...this.filesList() ?? [],\n ...newFiles,\n ];\n } else {\n newValues = newFiles.slice(-1);\n }\n this.onChange(newValues);\n }\n\n async onChangedInputFile(ev: Event) {\n if (this.campo()?.disabled) return;\n const inputElement = ev.target as HTMLInputElement;\n if (inputElement.files && inputElement.files.length > 0) {\n for await (let newFile of inputElement.files) {\n let lastIndexOf = newFile.name.lastIndexOf(\".\");\n let extension = newFile.name.slice(lastIndexOf);\n let base64: string | null = await LibUtil.fileReader(newFile);\n if (!base64) { LOG(1, `❌ Ocorreu um erro com o arquivo ${newFile.name}.`); continue; }\n this.onAddFile([{\n base64,\n name: newFile.name,\n size: newFile.size,\n extension, // inclui o \".\"\n type: newFile.type,\n lastModifiedIso: new Date(newFile.lastModified).toISOString(),\n }]);\n }\n inputElement.value = '';\n }\n }\n\n validarImagem(file: IFileMetadata): boolean {\n if (!file.extension) return false;\n const validExtensions = this.acceptFormats.split(',').map(ext => ext.trim().toLowerCase());\n return validExtensions.includes(file.extension.toLowerCase());\n }\n\n onClickUpload() {\n // Se o alvo do click for mesmo o elemento dropzone (CSS ignora alguns elementos)\n if (this.inputFile() && this.inputFile()?.nativeElement) {\n this.inputFile()?.nativeElement.click();\n }\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldUpload\">\n\n\t\t\t\t<ui-drop-zone (changed)=\"onDropped($event)\" [disabled]=\"campo()?.disabled\" (clicked)=\"onClickUpload()\"\n\t\t\t\t\t[sobrepor]=\"sobrepondo()\">\n\t\t\t\t\t@if(filesList().length > 0) {\n\n\t\t\t\t\t<ui-file-list [filesList]=\"filesList()\" (remove)=\"onRemove($event)\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\"></ui-file-list>\n\n\t\t\t\t\t} @else {\n\n\t\t\t\t\t<div class=\"fieldDidplayUpload\">\n\t\t\t\t\t\t<i class=\"bi bi-cloud-upload-fill\"></i>\n\t\t\t\t\t\t<div class=\"f-s-16\"><span class=\"text-primary\">Solte</span> seu arquivo aqui</div>\n\t\t\t\t\t\t<div class=\"f-s-14\"><span class=\"text-primary\">ou clique</span> para procurar</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t}\n\t\t\t\t</ui-drop-zone>\n\n\t\t\t\t<div [style.display]=\"'none'\">\n\t\t\t\t\t<input #inputFile type=\"file\" [accept]=\"acceptFormats\" [multiple]=\"campo()?.multiple\"\n\t\t\t\t\t\t(change)=\"onChangedInputFile($event)\" [disabled]=\"campo()?.disabled\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t@if(acceptFormats){\n\t<div class=\"dica\">Formatos: {{ acceptFormatsShow() }}</div>\n\t}\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-time',\n templateUrl: './time.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsTime extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldTime\">\n\t\t\t\t<input type=\"time\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\n\n@Component({\n selector: 'fields-textarea',\n templateUrl: './textarea.html',\n styleUrls: ['../fields.css', './textarea.css'],\n imports: [UiListErrors]\n})\nexport class FieldsTextarea extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(event: Event) {\n let newValue = (event.target as HTMLTextAreaElement).value;\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldTextArea\">\n\t\t\t\t<textarea [value]=\"value()\" (input)=\"onInput($event)\" (change)=\"onChangeEmit()\" [name]=\"campo()?.prop\"\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [attr.maxLength]=\"campo()?.maxl\"\n\t\t\t\t\t[attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [class.outlined]=\"true\"\n\t\t\t\t\t[rows]=\"campo()?.rows ?? 5\" [cols]=\"campo()?.cols\" [attr.readonly]=\"campo()?.readonly ? true : null\"\n\t\t\t\t\t[class.input]=\"true\"></textarea>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { IKV } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'fields-multikv',\n templateUrl: './multikv.html',\n styleUrls: ['../fields.css', './multikv.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsMultiKV extends BaseFieldsForm implements OnInit {\n\n // Componente para adicionar ou retirar itens em forma KV (Como usado nos seletores)\n items: IKV[] | null = [];\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n let value = this.value();\n if (value && Array.isArray(value)) this.items = value ?? [];\n else this.items = [];\n }\n\n ngAfterViewInit(): void {\n this.updateValue(this.items ?? [], false);\n }\n\n onClickAddItem() {\n let value: IKV = this.campo()?.value ?? { k: \"\", v: \"\" };\n if (!this.items) this.items = [];\n this.items = [...this.items, value];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n\n setTimeout(() => {\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\n if (allInputs && allInputs.length > 0) {\n allInputs[allInputs.length - 1].focus();\n }\n }, 1);\n }\n\n onClickDelItem(index: number) {\n this.items = this.items?.filter((v, i) => i != index) ?? [];\n if (this.items && this.items?.length <= 0) this.items = [];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n _onLocalInputK(key: string, index: number) {\n if (this.items) this.items[index].k = key;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n }\n\n _onLocalInputV(value: string, index: number) {\n if (this.items) this.items[index].v = value;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n }\n\n _onLocalChangeK(key: string, index: number) {\n if (this.items) this.items[index].k = key;\n this.updateValue(this.items);\n this.onChangeEmit();\n }\n\n _onLocalChangeV(value: string, index: number) {\n if (this.items) this.items[index].v = value;\n this.updateValue(this.items);\n this.onChangeEmit();\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultiKv\">\n\t\t\t\t@if(campo()?.showHeader != false){\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloChave ?? 'Chaves'}}</div>\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloValor ?? 'Valores'}}</div>\n\t\t\t\t<div class=\"header action\"></div>\n\t\t\t\t}\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item.k\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputK($event.target.value, $index)\"\n\t\t\t\t\t\t(change)=\"_onLocalChangeK($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item.v\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputV($event.target.value, $index)\"\n\t\t\t\t\t\t(change)=\"_onLocalChangeV($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"action\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\n\t\t\t\t\t\ticone=\"bi bi-trash\">\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"add\">\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\n\t\t\t\t\t\ticone=\"bi bi-plus-circle\">\n\t\t\t\t\t\tAdicionar Linha\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { NgComponentOutlet } from '@angular/common';\nimport { Component, computed } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\nimport { FieldsAutocomplete } from '../autocomplete/autocomplete';\nimport { FieldsButton } from \"../button/button\";\nimport { FieldsCheckbox } from '../checkbox/checkbox';\nimport { FieldsColor } from '../color/color';\nimport { FieldsDate } from '../date/date';\nimport { FieldsDatetime } from '../datetime/datetime';\nimport { FieldsDisplay } from '../display/display';\nimport { FieldsEditor } from '../editor/editor';\nimport { FieldsEmail } from '../email/email';\nimport { FieldsHidden } from '../hidden/hidden';\nimport { FieldsIcon } from '../icon/icon';\nimport { FieldsMultifactor } from '../multifactor/multifactor';\nimport { FieldsMultiText } from '../multitext/multitext';\nimport { FieldsNumber } from '../number/number';\nimport { FieldsPassword } from '../password/password';\nimport { FieldsSearch } from '../search/search';\nimport { FieldsSelect } from '../select/select';\nimport { FieldsSlide } from '../slide/slide';\nimport { FieldsText } from '../text/text';\nimport { FieldsUpload } from '../upload/upload';\nimport { FieldsTime } from '../time/time';\nimport { FieldsTextarea } from '../textarea/textarea';\nimport { IField } from '../Formulario/Formulario';\nimport { FieldsMultiKV } from '../multikv/multikv';\n\n@Component({\n selector: 'fields-g',\n templateUrl: './generic.html',\n // styles: `:host.hidden {\n // display: none;\n // }`,\n imports: [NgComponentOutlet],\n})\nexport class FieldsGeneric extends BaseFieldsForm {\n\n readonly campos = computed(() => this.form().campos());\n\n // @HostBinding('class.hidden')\n // isHidden = false;\n\n // Mapeamento de tipos para componentes\n getComponentForType(tipo?: IField): any {\n // Tipo Hidden não exibe componente e coloca o host como hidden\n // if (tipo == IField.Hidden) {\n // this.isHidden = true;\n // return null;\n // }\n\n /************************************************\\\\\n // MAPA: Tipo de Campo - Componente Responsável \\\\\n //*************************************************/\n // Comente o campo caso haja algum problema de dependência circular ou outro...\n\n const FIELDS_MAP: Partial<Record<IField, any>> = {\n [IField.AutoComplete]: FieldsAutocomplete,\n [IField.Button]: FieldsButton,\n [IField.Checkbox]: FieldsCheckbox,\n [IField.Color]: FieldsColor,\n [IField.Date]: FieldsDate,\n [IField.DateTime]: FieldsDatetime,\n [IField.Display]: FieldsDisplay,\n [IField.Editor]: FieldsEditor,\n [IField.Email]: FieldsEmail,\n [IField.Hidden]: FieldsHidden,\n [IField.Icon]: FieldsIcon,\n [IField.MultiFactor]: FieldsMultifactor,\n [IField.MultiKV]: FieldsMultiKV,\n [IField.MultiText]: FieldsMultiText,\n [IField.Number]: FieldsNumber,\n [IField.Password]: FieldsPassword,\n [IField.Referencia]: FieldsDisplay,\n [IField.Search]: FieldsSearch,\n [IField.Select]: FieldsSelect,\n [IField.Slide]: FieldsSlide,\n [IField.Text]: FieldsText,\n [IField.Textarea]: FieldsTextarea,\n [IField.Time]: FieldsTime,\n [IField.Upload]: FieldsUpload,\n\n [IField.Custom]: this.campo()?.componente,\n }\n if (tipo) return FIELDS_MAP[tipo] || null;\n return null;\n }\n\n}\n\n","@if (getComponentForType(campo() ? campo()?.tipo : undefined); as component) {\n<ng-container [ngComponentOutlet]=\"component\" [ngComponentOutletInputs]=\"{ form: this.form(), name: name() }\" />\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { LibUtil } from './util';\n\n@Pipe({ name: 'classOf' })\nexport class ClassOfPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n return LibUtil.classof(value);\n }\n\n}\n","import { Component, computed, input, model, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { Formulario } from '../Formulario';\nimport { JsonColoridoPipe } from '../../../util/JsonColorido.pipe';\nimport { ClassOfPipe } from '../../../util/ClassOf.pipe';\nimport { LibUtil } from '../../../util/util';\n\n@Component({\n selector: 'ui-form-controls',\n templateUrl: './form-controls.html',\n styleUrls: ['./form-controls.css'],\n imports: [UiButton, JsonColoridoPipe, ClassOfPipe],\n})\nexport class FormControls {\n\n form = input.required<Formulario>();\n recebido = input<any>({});\n hasOutline = model<boolean>(false);\n faseIndex = input<number>(0);\n totalFases = input<number>(0);\n\n colapsed = signal(true);\n\n valoresOrdenados = computed(() => {\n let jsonValues: any = {};\n let formValues = this.form().values();\n if (LibUtil.classof(formValues) !== 'object') {\n return formValues;\n }\n let keys = Object.keys(formValues);\n keys.sort();\n for (let key of keys) {\n jsonValues[key] = formValues[key];\n }\n return jsonValues;\n });\n\n // CONTROLES\n copiar() {\n let values = LibUtil.formatJson(this.valoresOrdenados(), true)\n LibUtil.copy(values);\n }\n\n\n fullDisabled = signal(false);\n desativados() {\n this.fullDisabled.set(!this.fullDisabled());\n this.form().setDisabledAll(this.fullDisabled());\n }\n\n fullRequired = signal(false);\n obrigatorio() {\n this.fullRequired.set(!this.fullRequired());\n this.form().campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key].need = this.fullRequired();\n }\n return c;\n });\n }\n\n fullPending = signal(false);\n pendentes() {\n this.fullPending.set(!this.fullPending());\n this.form().campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key].pending = this.fullPending();\n }\n return c;\n });\n }\n\n fullTouched = signal(false);\n tocados() {\n this.fullTouched.set(!this.fullTouched());\n this.form().setTouchedAll(this.fullTouched());\n }\n\n forcarVazio() {\n this.form().setAllValuesTo('');\n }\n\n setarValInicio() {\n this.form().resetToStartValues();\n }\n\n setarValRecebido() {\n this.form().updateValues(this.recebido());\n }\n\n setOutline() {\n this.hasOutline.set(!this.hasOutline());\n this.form().showTouched.update(v => !v);\n }\n\n sanitizar() {\n this.form().sanitizar();\n }\n\n onlyAvailable() {\n this.form().onlyAvailable();\n }\n\n async validar() {\n await this.form().validar();\n }\n\n showingErrors = signal(false);\n changePreview() {\n this.showingErrors.set(!this.showingErrors());\n }\n\n errorsSetted = signal(false);\n setErrorAll() {\n this.errorsSetted.set(!this.errorsSetted());\n if (this.errorsSetted()) {\n this.form().setAllCamposPartial({ errors: ['Erro exemplo'] });\n } else {\n this.form().setAllCamposPartial({ errors: [] });\n }\n }\n}\n","<div class=\"areaFormControl\" [class.collapsed]=\"colapsed()\">\n\t<div class=\"areaValues barStatus\">\n\t\t<div class=\"f-s-e status\">\n\t\t\t<div class=\"statusItem f-s-12 f-t-b\" [title]=\"'Fases. Atual: ' + faseIndex() + '. Total: ' + totalFases()\"\n\t\t\t\t[class.ativo]=\"totalFases() > 1\" [class.inativo]=\"faseIndex() < 0 || faseIndex() > totalFases()\">\n\t\t\t\t@if(totalFases() > 1){\n\t\t\t\t<div class=\"f-s-e\">\n\t\t\t\t\t<div>A</div>\n\t\t\t\t\t<div>{{ faseIndex() }}</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"f-s-e\">\n\t\t\t\t\t<div>U</div>\n\t\t\t\t\t<div>{{ totalFases() - 1 }}</div>\n\t\t\t\t</div>\n\t\t\t\t} @else {\n\t\t\t\t<i class=\"fa fa-list-check f-s-18\"></i>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().algumTocado()\" [class.inativo]=\"!form().algumTocado()\"\n\t\t\t\ttitle=\"Algum campo tocado\">\n\t\t\t\t<i class=\"fa fa-handshake f-s-20\"></i>\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().valido()\" [class.inativo]=\"!form().valido()\"\n\t\t\t\ttitle=\"Todos campos Válidos\">\n\t\t\t\t<i class=\"bi bi-check2-all f-s-20\"></i>\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().isEnviado\" [class.inativo]=\"!form().isEnviado\"\n\t\t\t\ttitle=\"Estado de Enviado\">\n\t\t\t\t<i class=\"bi bi-send-check f-s-18\"></i>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"divider barIcoCollapse\" (click)=\"colapsed.set(!colapsed())\">\n\t\t\t<i class=\"bi bi-caret-down\"></i>\n\t\t</div>\n\t\t<div class=\"f-s-e status\">\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"dados\" (click)=\"copiar()\" icone=\"bi bi-copy\"\n\t\t\t\ttitle=\"Copiar o JSON de valores\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"estado\" (click)=\"setOutline()\" [class.ativo]=\"hasOutline()\"\n\t\t\t\ticone=\"fa fa-border-top-left\" [title]=\"(hasOutline() ? 'Com' : 'Sem') +' Outline'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"changePreview()\" [class.ativo]=\"showingErrors()\"\n\t\t\t\ticone=\"bi bi-exclamation-triangle\" [title]=\"showingErrors() ? 'Errors' : 'Values'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"obrigatorio()\" [class.ativo]=\"fullRequired()\"\n\t\t\t\ticone=\"fa fa-file-circle-exclamation\" [title]=\"fullRequired() ? 'Obrigatório' : 'Liberado'\"></ui-button>\n\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"desativados()\" [class.ativo]=\"fullDisabled()\"\n\t\t\t\ticone=\"bi bi-person-fill-lock\" [title]=\"fullDisabled() ? 'Desativado' : 'Ativo'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"pendentes()\" [class.ativo]=\"fullPending()\"\n\t\t\t\ticone=\"fa fa-clock-four\" [title]=\"fullPending() ? 'Pendente' : 'Sincronizado'\"></ui-button>\n\n\t\t</div>\n\t</div>\n\t@if(!colapsed()){\n\t<div class=\"formColtrols\">\n\t\t<div class=\"areaValues jsonArea\">\n\t\t\t@if(showingErrors()){\n\t\t\t<div>Erros do Formulário (Tipo: {{ form().listaErrors() | classOf }})</div>\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"form().listaErrors() | jsonColorido\"></pre>\n\t\t\t} @else {\n\t\t\t<div>Valor do Formulário (Tipo: {{ form().values() | classOf }})</div>\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"valoresOrdenados() | jsonColorido\"></pre>\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"areaValues controls\">\n\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"sanitizar()\" icone=\"fa fa-quidditch-broom-ball\"\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão definidos para este formulário.\">\n\t\t\t\tSanitizar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"onlyAvailable()\" icone=\"fa fa-power-off\"\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão disponíveis para este formulário.\">\n\t\t\t\tDisponíveis\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"validar()\" icone=\"bi bi-ui-checks\"\n\t\t\t\ttitle=\"Valida o formulário e seus campos.\">\n\t\t\t\tValidar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"warning\" class=\"dados\" (click)=\"setarValRecebido()\"\n\t\t\t\ticone=\"fa fa-clock-rotate-left\" title=\"Seta os valores que foram recebidos no formulário.\">\n\t\t\t\tRecebido\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"forcarVazio()\" icone=\"bi bi-eraser-fill\"\n\t\t\t\ttitle=\"Limpa todos os valores do formulário.\">\n\t\t\t\tLimpar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"setarValInicio()\" icone=\"bi bi-skip-backward\"\n\t\t\t\ttitle=\"Reseta os valores do formulário para os valores iniciais.\">\n\t\t\t\tReset\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"info\" class=\"dados\" (click)=\"tocados()\"\n\t\t\t\t[icone]=\"fullTouched() ? 'fa fa-handshake' : 'fa fa-handshake-slash'\"\n\t\t\t\ttitle=\"Marca todos os campos como tocados ou não tocados.\">\n\t\t\t\t{{ fullTouched() ? 'Tocados' : 'Tocar Todos' }}\n\t\t\t</ui-button>\n\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"estado\" (click)=\"setErrorAll()\"\n\t\t\t\t[class.ativo]=\"form().listaErrors().length > 0\"\n\t\t\t\t[icone]=\"form().listaErrors().length > 0 ? 'bi bi-exclamation-triangle' : 'bi bi-circle'\"\n\t\t\t\t[title]=\"form().listaErrors().length > 0 ? 'Erros adicionados' : 'Erros removidos'\">\n\t\t\t\t{{ form().listaErrors().length > 0 ? 'Erros Forçados' : 'Erros removidos' }}\n\t\t\t</ui-button>\n\n\t\t</div>\n\t</div>\n\t}\n</div>","import { Component, computed, input, model, output } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { LibUtil } from '../../../util/util';\nimport { IKV } from '../../../interfaces/interfaces';\nimport { FormControls } from \"../form-controls/form-controls\";\nimport { IField, IFields } from '../Formulario';\n\n@Component({\n selector: 'fields-form-filter',\n templateUrl: './form-filter.html',\n styleUrls: ['./form-filter.css', '../form-fields.css'],\n imports: [UiButton, FieldsGeneric, FormControls],\n})\nexport class FormFilter<T> extends BaseFieldsValues<T> {\n\n async onSave() {\n // Não faz nada. \n return;\n }\n\n hasOutline = model<boolean>(false);\n filtrar = output<any>();\n actionTitle = input<string>('Aplicar Filtro');\n\n onFiltrar() {\n let valores = LibUtil.clonar(this.form.values());\n valores = LibUtil.limparObject(valores);\n this.filtrar.emit(valores);\n }\n\n kvPreenchido = computed(() => {\n let propriedades: IKV[] = [];\n let valores = this.values() as any;\n if (!valores) return propriedades;\n let campos = this.campos();\n for (const key of Object.keys(campos)) {\n let campo = campos[key];\n if (campo.tipo === IField.Hidden) continue;\n if (valores?.[key] != null && valores?.[key] !== '' && !(Array.isArray(valores?.[key]) && valores?.[key].length === 0)) {\n propriedades.push({ k: campo.prop, v: campo.titulo ?? String(campo.prop) });\n }\n }\n return propriedades;\n });\n\n onDeletePropriedade(k: string | number | null | undefined) {\n if (k == null) return;\n this.form.updateValues({ [k as keyof IFields<T>]: '' });\n this.onFiltrar();\n }\n}\n","<div class=\"filtrosAtivos\">\n\t@for ( item of kvPreenchido(); track $index) {\n\t<div>\n\t\t{{ item.v }}\n\t\t<ui-button tipo=\"icon\" tema=\"error\" icone=\"bi bi-x\" (click)=\"onDeletePropriedade(item.k)\">\n\t\t</ui-button>\n\t</div>\n\t}\n</div>\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n<div class=\"buttonsGap\">\n\t<ui-button tipo=\"fill\" tema=\"primary\" icone=\"bi bi-funnel\" (click)=\"onFiltrar()\">{{ actionTitle() }}</ui-button>\n\t<ng-content></ng-content>\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, computed, effect, input, model, OnInit, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { IFaseCampos, IFases, IFieldComponent } from '../Formulario';\nimport { LOG } from '../../../util/log';\n\n@Component({\n selector: 'ui-form-fase',\n templateUrl: './form-fase.html',\n styleUrls: ['./form-fase.css'],\n imports: [UiButton],\n})\nexport class FormFase implements OnInit {\n\n fases = model<IFases<any>>();\n campos = input<IFieldComponent<any>[]>();\n\n isDisabledVoltar = signal(true);\n isDisabledAvancar = signal(true);\n isFaseado = computed(() => {\n let fases = this.fases()?.fases;\n return fases !== undefined && fases.length > 1; // 1 é faseado mas não tem navegação, mais de 1 é faseado com navegação\n });\n fasesList = computed(() => {\n return this.fases()?.fases ?? [];\n });\n faseIndex = model<number>(0);\n fase_historico = signal<number[]>([0]);\n isLinear = computed(() => this.fases()?.isLinear ?? false);\n\n constructor() {\n effect(() => {\n let fases = this.fases()?.fases;\n if (fases == null) {\n this.isDisabledAvancar.set(true);\n this.isDisabledVoltar.set(true);\n return;\n }\n this.isDisabledVoltar.set(this.faseIndex() <= 0);\n this.isDisabledAvancar.set(this.faseIndex() >= (fases.length - 1));\n });\n }\n ngOnInit(): void {\n let campos = this.campos();\n let fases = this.fases();\n\n if (campos == null || fases == null) return;\n let semFase = this.checkCamposInFase(campos, fases);\n if (semFase.length > 0) {\n semFase.forEach(prop => {\n this.fases.update(f => {\n if (f) {\n // Adiciona os campos sem fase a primeira fase, se ela existir.\n if (f.fases.length > 0) {\n let primeiraFase = f.fases[0];\n if (!primeiraFase.campos.includes(prop)) {\n primeiraFase.campos.push(prop);\n }\n } else {\n // Se não houver fase, cria uma nova fase e adiciona os campos sem fase nela.\n f.fases.push({\n nome: \"Geral\",\n campos: [prop],\n } as IFaseCampos<any>);\n }\n }\n return f;\n });\n });\n }\n // LOG(1, \"Fases configuradas:\", this.fases());\n }\n\n faseAvancar(faseIndex?: number): void {\n let fases = this.fases()?.fases;\n if (fases == null) return;\n\n if (faseIndex != null) {\n let proximaFaseIndex = fases.indexOf(fases[faseIndex]);\n if (proximaFaseIndex !== -1) {\n if (proximaFaseIndex !== this.faseIndex()) {\n this.faseIndex.set(faseIndex);\n this.fase_historico.update(h => { h = [...h, faseIndex]; return h; });\n }\n } else {\n LOG(1, \"Fase informada não existe.\");\n }\n } else {\n let proximaFaseIndex = fases.indexOf(fases[this.faseIndex() + 1]);\n if (proximaFaseIndex !== -1) {\n if (proximaFaseIndex !== this.faseIndex()) {\n this.faseIndex.set(proximaFaseIndex);\n this.fase_historico.update(h => { h = [...h, proximaFaseIndex]; return h; });\n }\n } else {\n LOG(1, \"Não há próxima fase para avançar.\");\n }\n }\n }\n faseVoltar(): void {\n let fases = this.fases()?.fases;\n if (fases == null) return;\n\n if (this.faseIndex() > 0) {\n this.fase_historico.update(h => { h.pop(); return h; });\n let ultimaFaseDoHistorico = this.fase_historico()[this.fase_historico().length - 1];\n if (ultimaFaseDoHistorico != null) {\n this.faseIndex.set(ultimaFaseDoHistorico);\n } else {\n LOG(1, \"Não para onde voltar.\");\n }\n } else {\n this.faseIndex.set(0);\n this.fase_historico.set([0]);\n LOG(1, \"Já está na primeira fase possível.\")\n }\n }\n\n\n\n checkCamposInFase(campos: IFieldComponent<any>[], fases: IFases<any>): string[] {\n // Verifica e informa no console se todos os campos recebidos estão presentes em alguma fase\n let camposNomes = campos.map(c => c.prop);\n let camposEmFases: string[] = [];\n let camposNaoEmFases: string[] = [];\n for (let campoNome of camposNomes) {\n let encontrado = false;\n for (let fase of fases.fases) {\n for (let campoOrGrupo of fase.campos) {\n if (typeof campoOrGrupo === 'string') {\n if (campoOrGrupo === campoNome) {\n encontrado = true;\n break;\n }\n } else {\n if (campoOrGrupo.campos.includes(campoNome)) {\n encontrado = true;\n break;\n }\n }\n }\n if (encontrado) break;\n }\n if (encontrado) {\n camposEmFases.push(campoNome);\n } else {\n camposNaoEmFases.push(campoNome);\n }\n }\n // if (camposNaoEmFases.length > 0) {\n // LOG(1, \"⚠️ Campos sem fase:\", camposNaoEmFases);\n // } else {\n // LOG(1, \"✔️ Todos os campos estão presentes em alguma fase.\");\n // }\n return camposNaoEmFases;\n\n }\n}\n","@if(isFaseado()){\n<div class=\"faseButtons\">\n\t<ui-button tipo=\"icon\" tema=\"primary\" (clicked)=\"faseVoltar()\" class=\"todosBotoes\" [disabled]=\"isDisabledVoltar()\"\n\t\ticone=\"fa fa-arrow-left\" title=\"Voltar\" [radiusTabFormat]=\"!isLinear()\"></ui-button>\n\t<div class=\"faseButtons faseHeader\" [class.hasGap]=\"isLinear()\">\n\t\t@if(isLinear()){\n\t\t<div class=\"fase-linha-entre-botoes\">\n\t\t\t<div class=\"fase-linha-central\"></div>\n\t\t</div>\n\t\t}\n\t\t@for (fase of fasesList(); track $index) {\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" class=\"todosBotoes faseBotao\" (clicked)=\"faseAvancar($index)\"\n\t\t\t[class.ativo]=\"faseIndex() == $index\" [disabled]=\"fase.disabled\" [icone]=\"fase.icone\" [title]=\"fase.nome\"\n\t\t\t[radiusTabFormat]=\"!isLinear()\">\n\t\t\t<div class=\"faseHeaderText\" [innerHTML]=\"fase.nome\"></div>\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (clicked)=\"faseAvancar()\" class=\"todosBotoes\" [disabled]=\"isDisabledAvancar()\"\n\t\ticone=\"fa fa-arrow-right\" [iconeAntes]=\"false\" [iconeDepois]=\"true\" title=\"Proximo\"\n\t\t[radiusTabFormat]=\"!isLinear()\"></ui-button>\n</div>\n<div class=\"faseUnderline\" [class.underline-linear]=\"isLinear()\"></div>\n}","import { Component, input, model, OnInit, output, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { LibUtil } from '../../../util/util';\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { FormControls } from \"../form-controls/form-controls\";\nimport { FormFase } from \"../form-fase/form-fase\";\nimport { UiLoading } from \"../../../elements/ui-loading/ui-loading\";\n\nexport interface ISaveTasks {\n title: string;\n icone: string;\n task: () => Promise<{ s: boolean, m: string }>;\n done?: boolean;\n success?: boolean;\n message?: string;\n}\n\nexport interface IActionsDone {\n values: any;\n result: any;\n tasks: ISaveTasks[];\n ok: boolean; // Booleano que indica se todas tarefas inseridas foram concluídas com sucesso.\n}\n\n@Component({\n selector: 'fields-form-action',\n templateUrl: './form-action.html',\n styleUrls: ['./form-action.css', '../form-fields.css'],\n imports: [UiButton, FieldsGeneric, FormControls, FormFase, UiLoading],\n})\nexport class FormAction<T> extends BaseFieldsValues<T> implements OnInit {\n\n hasOutline = model<boolean>(false);\n\n actionTitle = input<string | undefined>();\n sendValues = input<((values: any) => Promise<any>) | undefined>();\n sending = output<boolean>();\n done = output<IActionsDone>();\n\n // Permite customizar tarefas.\n taskTocar = input<boolean>(true);\n taskSanitizar = input<boolean>(true);\n taskDisponiveis = input<boolean>(true);\n taskValidar = input<boolean>(true);\n taskEnviar = input<boolean>(true);\n tasksToSave = signal<ISaveTasks[]>([]);\n\n result: any = null;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.updateDisabledAction();\n\n // Incrementa tarefa TOCAR\n if (this.taskTocar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Tocando campos',\n icone: 'fa fa-handshake',\n task: async () => {\n this.form.setTouchedAll(true);\n return { s: true, m: 'Tocando campos concluído' };\n }\n }]);\n }\n\n // Incrementa tarefa Sanitizando\n if (this.taskSanitizar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Sanitizando',\n icone: 'fa fa-quidditch-broom-ball',\n task: async () => {\n this.form.sanitizar();\n return { s: true, m: 'Sanitizando concluído' };\n }\n }]);\n }\n\n // Tarefa para filtrar apenas os campos disponíveis para envio (ex: campos desabilitados, etc).\n if (this.taskDisponiveis()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Disponíveis para envio',\n icone: 'fa fa-power-off',\n task: async () => {\n this.form.onlyAvailable();\n return { s: true, m: 'Disponíveis para envio concluído' };\n }\n }]);\n }\n\n // Incrementa tarefa VALIDAR\n if (this.taskValidar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Validando',\n icone: 'bi bi-ui-checks',\n task: async () => {\n try {\n await this.form.validar();\n return { s: true, m: 'Validação concluída' };\n } catch (e) {\n return { s: false, m: 'Erro na validação' };\n }\n }\n }]);\n }\n\n // Incrementa tarefa SENDVALUES\n if (this.taskEnviar() && this.sendValues()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Ação de enviar',\n icone: 'fa fa-paper-plane',\n task: async () => {\n // Para enviar, o form deve estar válido.\n if (!this.form.valido()) return { s: false, m: 'Formulário inválido' };\n\n // Para enviar, deve existir a função de envio.\n let fnEnviar = this.sendValues();\n if (!fnEnviar) return { s: false, m: 'Função de envio não definida' };\n\n // Reinicia o resultado anterior, se houver.\n this.result = null;\n\n // Obtem os valores do formulário.\n let valores = LibUtil.clonar(this.form.values());\n\n let errorMessage = \"\";\n\n // Inicia o envio.\n try {\n this.form.isEnviando = true;\n this.sending.emit(true);\n this.result = await fnEnviar(valores);\n this.form.isEnviando = false;\n this.sending.emit(false);\n if (this.result != null) {\n // Indica que a tarefa de envio foi concluída com sucesso.\n return { s: true, m: 'Envio concluído' };\n }\n } catch (e) {\n console.error(\"❌ ERRO ao Enviar Valores. \", e);\n errorMessage = e instanceof Error ? e.message : String(e);\n }\n\n // Qualquer outro caso, indica falha.\n return { s: false, m: `Erro ao enviar valores: ${errorMessage}` };\n }\n }]);\n }\n\n // Neste componente, há sempre uma ação e sempre emite tasksDone.\n this.tasksToSave.update(tasks => [\n ...tasks,\n {\n title: 'Ações concluídas',\n icone: 'fa fa-flag-checkered',\n task: async () => {\n let ok = this.tasksToSave().filter(task => task.title !== 'Ações concluídas').every(task => task.success);\n let values = LibUtil.clonar(this.form.values());\n let actionsDone: IActionsDone = {\n values,\n result: this.result,\n tasks: this.tasksToSave(),\n ok\n }\n this.done.emit(actionsDone);\n if (ok) this.form.isEnviado = true;\n return { s: ok, m: ok ? 'Ações concluídas com sucesso' : 'Erro nas ações' };\n }\n }\n ]);\n\n }\n\n async onSave() {\n this.tasksToSave.update(tasks => tasks.map(t => ({ ...t, done: false })));\n this.updateDisabledAction(true);\n this.isLoadingActive.set(true);\n\n for await (const task of this.tasksToSave()) {\n // await LibUtil.wait(1000);\n let r = task.task();\n r.then(s => {\n task.success = s.s;\n task.message = s.m;\n }).catch(f => {\n task.success = false;\n task.message = `Erro na execução da tarefa: ${f instanceof Error ? f.message : String(f)}`;\n });\n await r;\n task.done = true;\n }\n\n this.isLoadingActive.set(false);\n this.updateDisabledAction();\n }\n\n}\n","<ui-form-fase [fases]=\"fases()\" [campos]=\"form.listaCampos()\" [(faseIndex)]=\"faseIndex\"></ui-form-fase>\n@if(isFaseado()){\n<div class=\"containerFases\" [class.showOutlineFields]=\"hasOutline()\">\n\t@for (fase of listaFase(); track $index;let fIndex = $index) {\n\t<div class=\"areaFase g-fields\" [style.--fase]=\"faseIndex()\" [class.ativo]=\"faseIndex() == fIndex\"\n\t\t[style.--g-fields-min]=\"fase.gridMin\" [style.--g-fields-max]=\"fase.gridMax\"\n\t\t[class.showOutlineFields]=\"hasOutline()\">\n\t\t@for (faseGrupo of faseGrupo(); track $index) {\n\t\t@if(faseGrupo.faseIndex == fIndex){\n\n\t\t@if(faseGrupo.tipo == 'campo' && faseGrupo.campo){\n\n\t\t<fields-g [form]=\"form\" [name]=\"faseGrupo.campo.prop\"\n\t\t\t[class]=\"faseGrupo.campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\n\t\t} @else if (faseGrupo.tipo == 'grupo' && faseGrupo.grupo) {\n\n\t\t<div class=\"field-group\" [style.grid-area]=\"faseGrupo.grupo.area ?? 'auto / auto / auto / span 2'\">\n\t\t\t@if(faseGrupo.grupo.titulo){ <div class=\"group-title\"\n\t\t\t\t[style.grid-area]=\"faseGrupo.grupo.tituloArea ?? 'auto / auto / auto / span 2'\">{{\n\t\t\t\tfaseGrupo.grupo!.titulo }}</div> }\n\t\t\t@for(campo of faseGrupo.grupo!.campos; track $index){\n\t\t\t<fields-g [form]=\"form\" [name]=\"campo\"\n\t\t\t\t[class]=\"form.campos()[campo]?.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t\t\t}\n\t\t</div>\n\n\t\t}@else{\n\n\t\t<div class=\"card bg-danger\"> ❌ Falha tipo {{ faseGrupo.tipo }}.<br> Campo {{ faseGrupo.nome }} não encontrado!</div>\n\t\t}\n\n\t\t}\n\t\t}\n\t</div>\n\t}\n</div>\n\n}@else {\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\"\n\t[class.showOutlineFields]=\"hasOutline()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n}\n\n<div class=\"buttonsGap\">\n\t<ui-button tipo=\"fill\" tema=\"primary\" (clicked)=\"onSave()\" [disabled]=\"isDisabledAction()\" class=\"botaoAcaoSave\">\n\t\t@if(showFormControls()){\n\t\t<div class=\"icons\">\n\t\t\t@for (task of tasksToSave(); track $index) {\n\t\t\t<i [class]=\"task.icone\" [class.done]=\"task.done\" [class.success]=\"task.success == true\"\n\t\t\t\t[class.fail]=\"task.success == false\"></i>\n\t\t\t}\n\t\t</div>\n\t\t}\n\t\t<div class=\"f-1\">\n\t\t\t{{ actionTitle() ?? 'Salvar' }}\n\t\t</div>\n\t\t@if(isLoadingActive()){\n\t\t<div class=\"loadingSubmit\">\n\t\t\t<ui-loading></ui-loading>\n\t\t</div>\n\t\t}\n\t</ui-button>\n\t<ng-content></ng-content>\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, model } from '@angular/core';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FormControls } from \"../form-controls/form-controls\";\n\n@Component({\n selector: 'fields-form-no-action',\n templateUrl: './form-no-action.html',\n styleUrls: ['./form-no-action.css', '../form-fields.css'],\n imports: [FieldsGeneric, FormControls],\n})\nexport class FormNoAction<T> extends BaseFieldsValues<T> {\n\n async onSave() {\n // Não faz nada. \n return;\n }\n\n hasOutline = model<boolean>(false);\n\n}\n","<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, computed, input, model } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { IField, IFieldComponent } from '../Formulario';\nimport { LOG } from '../../../util/log';\n\nexport type IModeShowEntidade = \"centro\" | \"cantos\" | \"esquerda\" | \"grid\" | \"wrap\";\n\n@Component({\n selector: 'ui-formated-values',\n templateUrl: './formated-values.html',\n styleUrls: ['./formated-values.css'],\n imports: [],\n})\nexport class FormatedValues {\n\n campos = input<IFieldComponent<any>[] | undefined>();\n dados = input<any>();\n modo = model<IModeShowEntidade>(\"centro\");\n especialKeys = input<string[] | undefined>();\n ignoreKeys = input<string[] | undefined>([]);\n\n camposFormatados = computed(() => {\n let campos = this.campos();\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\n\n let listaDados = campos?.map(campo => {\n let inputs: any = {};\n // let isInner: boolean = this.getIsInner(campo, inputs);\n let titulo = campo.titulo ?? campo.prop ?? \"\";\n return {\n ...campo,\n label: titulo + ':',\n value: this.getFormattedValue(campo) ?? \"\",\n // isInner,\n inputs,\n isEspecial: especialKeys.includes(campo.prop?.toLowerCase()),\n };\n }).filter(campo => !this.ignoreKeys()?.includes(campo.prop));\n\n // Ordena a lista colocando os isEspecial no final\n listaDados = listaDados?.sort((a, b) => {\n if (a.isEspecial && !b.isEspecial) return 1;\n if (!a.isEspecial && b.isEspecial) return -1;\n return 0;\n });\n\n // Retorna\n return listaDados;\n });\n\n // changeModoTo(modo: IModeShowEntidade) {\n // this.modo.set(modo);\n // }\n\n // getIsInner(campo: IFieldComponent<any>, inputs: any): boolean {\n // switch (campo.tipo) {\n\n // case IField.Upload:\n // inputs[\"file\"] = this.dados()?.[campo.prop];\n // inputs[\"tipo\"] = IMGTYPE.Generic;\n // inputs[\"h\"] = 45;\n // return false;\n\n // default:\n // return true;\n\n // }\n // }\n\n getFormattedValue(campo: IFieldComponent<any>) {\n let value = this.dados()?.[campo.prop];\n if (value == null || value == undefined) return \"\";\n\n switch (campo.tipo) {\n\n case IField.AutoComplete:\n // A implementar...\n break;\n\n\n case IField.Button:\n // A implementar...\n break;\n\n case IField.Checkbox:\n value = value === true ? \"Sim\" : \"Não\";\n break;\n\n case IField.Color:\n // A implementar...\n break;\n\n case IField.Custom:\n LOG(1, \"ShowEntidade: A exibição do custom não deve ser alterada por aqui. (Remover o aviso quando for implementar o custom)\");\n break;\n\n case IField.Date:\n value = LibUtil.stringToDataBR(value)?.split(\" \")[0];\n break;\n\n case IField.DateTime:\n value = LibUtil.stringToDataBR(value);\n break;\n\n case IField.Display:\n // A implementar...\n break;\n\n case IField.Editor:\n // A implementar...\n break;\n\n case IField.Email:\n // A implementar...\n break;\n\n case IField.Hidden:\n // A implementar...\n break;\n\n case IField.Icon:\n value = `<i class=\"${value}\"></i> ${value}`;\n break;\n\n case IField.MultiFactor:\n // A implementar...\n break;\n\n case IField.MultiText:\n // A implementar...\n break;\n\n case IField.Number:\n // A implementar...\n break;\n\n case IField.Password:\n value = \"••••••••\";\n break;\n\n case IField.Referencia:\n if (campo.getDisplay) value = campo.getDisplay(value);\n break;\n\n case IField.Search:\n // A implementar...\n break;\n\n case IField.Select:\n let options = campo.options?.();\n let optionValue = options?.find(o => o.k == value)?.v\n optionValue ? value = `${optionValue}` : value = `${value}`;\n break;\n\n case IField.Slide:\n value = value == true ? \"Sim\" : \"Não\";\n break;\n\n case IField.Text:\n // A implementar...\n break;\n\n case IField.Upload:\n // A implementar...\n break;\n\n }\n\n // Estes abaixo só se aplicariam se o ShowEntidade fosse mais genérico.\n // switch (Util.classof(value)) {\n // case \"boolean\":\n // if (value === true) value = \"Sim\";\n // if (value === false) value = \"Não\";\n // break;\n // case \"array\":\n // if (value.length && value.length > 0) {\n // if (Util.classof(value[0]) == \"object\") {\n // value = `Lista com ${value.length} registros`\n // } else {\n // value = value.join(\", \");\n // }\n // }\n // break;\n // }\n return value;\n }\n}\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\n\n\n\t@for (field of camposFormatados(); track $index) {\n\t<div class=\"linhaDado\" [class.isEspecial]=\"field.isEspecial\">\n\t\t<div class=\"titulo\" [innerHTML]=\"field.label\"></div>\n\t\t<!-- @if(field.isInner){ -->\n\t\t<div class=\"conteudo\" [innerHTML]=\"field.value\"></div>\n\t\t<!-- }@else {\n\t\t<build-component [componente]=\"field.value\" [inputs]=\"field.inputs\"></build-component>\n\t\t} -->\n\t</div>\n\t}\n\n</div>","import { Component, computed, input, model } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { IModeShowEntidade } from '../formated-values/formated-values';\n\n@Component({\n selector: 'ui-single-values',\n templateUrl: './single-values.html',\n styleUrls: ['./single-values.css'],\n imports: [],\n})\nexport class SingleValues {\n\n dados = input<any>();\n modo = model<IModeShowEntidade>(\"centro\");\n especialKeys = input<string[] | undefined>();\n\n dadosAExibir = computed(() => {\n let dados = this.dados();\n let keys = Object.keys(dados ?? {}).sort();\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\n\n let listaDados = keys?.map(chave => {\n return {\n label: LibUtil.pascalCase(chave) + ':',\n value: this.getNormalizedValue(dados[chave]) ?? \"\",\n isEspecial: especialKeys.includes(chave.toLowerCase()),\n };\n });\n\n // Ordena a lista colocando os isEspecial no final\n listaDados = listaDados?.sort((a, b) => {\n if (a.isEspecial && !b.isEspecial) return 1;\n if (!a.isEspecial && b.isEspecial) return -1;\n return 0;\n });\n\n // Retorna\n return listaDados;\n });\n\n getNormalizedValue(value: any) {\n if (value == null || value == undefined) return \"\";\n\n let classofValue = LibUtil.classof(value);\n\n switch (classofValue) {\n\n case \"object\":\n value = `{ ... Objeto com ${Object.keys(value).length} itens }`\n break;\n\n case \"array\":\n if (value.length && value.length > 0) {\n if (LibUtil.classof(value[0]) == \"object\") {\n value = `[ ... Lista com ${value.length} registros ]`\n } else {\n value = value.join(\", \");\n }\n }\n break;\n\n }\n return value;\n }\n}\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\n\n\n\t@for (dado of dadosAExibir(); track $index) {\n\t<div class=\"linhaDado\" [class.isEspecial]=\"dado.isEspecial\">\n\t\t<div class=\"titulo\" [innerHTML]=\"dado.label\"></div>\n\t\t<div class=\"conteudo\" [innerHTML]=\"dado.value\"></div>\n\t</div>\n\t}\n\n</div>","import { InjectionToken, Signal, Type, WritableSignal } from \"@angular/core\";\nimport { IKV, ITiposTema } from \"../interfaces/interfaces\";\n\n\n// ─── ScreenMode (definido localmente — sem dependência do LayoutCoreService) ──────\nexport enum ScreenMode {\n\tMobile = \"Mobile\",\n\tDesktop = \"Desktop\",\n\tTablet = \"Tablet\",\n}\n\n// ─── Serviço de célula (interface para quebrar dependência circular) ──────────────\nexport interface IMkCellService {\n\tgridParams: Signal<IGridParam<any> | undefined>;\n\tupdateGridParams(params: IGridParam<any>): void;\n}\n\nexport const GRID_PARAMS_TOKEN = new InjectionToken<IGridParam<any>>('GRID_PARAMS');\n\nexport interface IGridCellComponentConfig {\n\tcomponent: Type<unknown>,\n\tinput: any,\n}\n\n// ─── Coluna ────────────────────────────────────────────────────────────────────────\nexport interface IColuna<T> {\n\tprop: keyof T & string | (keyof T & string)[],\n\ttitulo: string,\n\ttituloReduzido?: string,\n\twidth?: string,\n\tminWidth?: string,\n\tmaxWidth?: string,\n\n\tvisivel?: boolean,\n\tclasseFull?: string,\n\tclasseCell?: string,\n\tclasseHeader?: string,\n\tsortable?: boolean,\n\tstyleCell?: string,\n\tstyleHeader?: string,\n\tcellRenderer?: (p: IGridParam<T>) => string,\n\tcellRendererParams?: any,\n\tcellComponent?: IGridCellComponentConfig,\n\tcapitalize?: boolean,\n\tmask?: string | ((value: any) => string),\n\ttextVertical?: boolean,\n\tiniciaAgrupado?: boolean,\n\tcurrency?: string,\n\toverflow?: string,\n\ttextOverflow?: string,\n}\n\nexport type IColunaImage = \"\"\n\nexport enum IGridFilterType {\n\tExato = 'exact',\n\tComo = 'like',\n\tMaiorQue = 'bigger',\n\tMenorQue = 'smaller',\n\tEntre = 'between',\n\tColumn = 'column',\n}\n\nexport interface IGridFilter<T> {\n\tpropriedade: keyof T,\n\tpropriedade2?: keyof T,\n\ttipo: IGridFilterType,\n\tvalues: string[] | number[] | boolean[],\n}\n\nexport interface IGridEventAPI<T> {\n\tid: string | undefined,\n\tlinha: T,\n\taction: IGridConfigActions,\n}\n\nexport const PAGINATION_OPTIONS: IKV[] = [\n\t{ k: 5, v: \"5\" },\n\t{ k: 10, v: \"10\" },\n\t{ k: 25, v: \"25\" },\n\t{ k: 50, v: \"50\" },\n\t{ k: 100, v: \"100\" },\n\t{ k: 1000, v: \"1000\" },\n]\n\nexport interface IOrdenacao {\n\tcoluna: string | string[];\n\tdirecao: 'asc' | 'desc';\n}\n\nexport interface IPaginacao {\n\tpaginaAtual: number;\n\ttotalItens: number;\n\ttotalagrupado: number;\n}\n\nexport interface IGridConfigActions {\n\tinmenu?: boolean,\n\tdisplay: string,\n\tname: string,\n\ttema?: ITiposTema,\n\ticon?: string,\n\tshowIcon?: boolean,\n\taction?: (p: IGridEventAPI<any>) => void,\n\tshowAction: boolean,\n\tshowLineAction?: (linha: any) => boolean,\n\tactions?: IGridConfigActions[],\n}\n\nexport interface IDisplayValue {\n\tdisplay: string,\n\tvalue: string | number | boolean,\n}\n\nexport interface IGridBaseActions {\n\tmenuDisplay: string,\n\tmenuIcon: string,\n\tshowMenuIcon: boolean,\n\twidth: string,\n\twidthMax: string,\n\twidthMin: string,\n\taloneAlwaysOutside: boolean,\n}\n\nexport interface IActionsLineConfig extends IGridBaseActions {\n\theaderDisplayMore: string,\n\theaderClasse?: string,\n}\n\nexport interface IGridConfig<T> {\n\tactionsTop: IGridConfigActions[],\n\tactionsTopConfig: IGridBaseActions,\n\tactionsLine: IGridConfigActions[],\n\tactionsLineConfig: IActionsLineConfig,\n\tInativeRule: (linha: any) => boolean,\n\tSelectionDisabledRule?: (linha: any) => boolean,\n\tcolunas: IColuna<T>[],\n\tfilterSearchIcon: string,\n\tfilterBarStartCollapsed: boolean,\n\tscreen: Signal<ScreenMode>,\n\titensPorPagina: Signal<number>,\n\tlastGridEventAPI?: IGridEventAPI<T>,\n\tnameEntity: string | undefined,\n\tpaginations: IKV[],\n\tprimarykey: string,\n\tshowControlBar: boolean,\n\tshowSearch: boolean,\n\tshowFilterBar: boolean,\n\tshowGridMenu: boolean,\n\tshowInfoBar: boolean,\n\tshowMenuIcon: boolean,\n\tshowActionsLine: boolean,\n\tshowActionsTop: boolean,\n\tshowPagination: boolean,\n\ttimeRequest?: number,\n\tonSelected?: (linha: any, selecionados: any[]) => void,\n\tonUnselected?: (linha: any, selecionados: any[]) => void,\n\tonSelectionChanged?: (linha: any, selecionados: any[]) => void,\n\tstartSelected?: (linha: any) => boolean,\n\tisSelected: WritableSignal<boolean>,\n\tselectionMode: 'single' | 'multiple' | 'none',\n\thasError: boolean,\n\thasVerticalLine: boolean,\n\thasSeletor: boolean,\n\thasGrid: boolean,\n\tminLineHeight?: string,\n\tisCompacted?: boolean,\n\tisLoaded: boolean,\n\tbackgroundHue?: (linha: any) => number,\n}\n\nexport interface IGridParam<T> {\n\tcoluna: IColuna<T>,\n\tcolunas: IColuna<T>[],\n\tdata: T,\n\tlista?: T[],\n\tparams: any,\n\tvalue: any,\n\tservicoParams: IMkCellService,\n}\n\nexport interface IFilterFields {\n\tpropriedade: string,\n\tpropriedade2?: string,\n\ttipo: IGridFilterType,\n\tvalues: string[] | number[] | boolean[],\n}\n\nexport interface IDadosDaLinha {\n\tid: string,\n\tdados: any,\n\thue: number | undefined,\n\tinativo: boolean,\n\tselecionado: boolean,\n\tgroupName: string,\n\tisSelectionDisabled?: boolean,\n\tisColapsed?: boolean,\n\tisGroup?: boolean,\n\tisFullLine?: {\n\t\tvisible: boolean,\n\t\tcolapsed: boolean,\n\t\tcolapsedCount?: number,\n\t\tshowIco?: boolean,\n\t},\n\tordem: number,\n\tactions?: IGridConfigActions[],\n\thasActionMenu?: boolean,\n}\n\nexport interface IActionClickEvent {\n\taction?: IGridConfigActions,\n\tdadosDaLinha?: IDadosDaLinha,\n}\n","import { Injectable, signal } from '@angular/core';\nimport { IGridParam, IMkCellService } from '../mk-grid.types';\n\n@Injectable()\nexport class GridCellService implements IMkCellService {\n\n\tpublic gridParams = signal<IGridParam<any> | undefined>(undefined);\n\n\tupdateGridParams(params: IGridParam<any>): void {\n\t\tthis.gridParams.set(params);\n\t}\n\n}\n","import { ChangeDetectionStrategy, Component, ComponentRef, inject, Injector, input, OnDestroy, OnInit, signal, SimpleChanges, viewChild, ViewContainerRef } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { GRID_PARAMS_TOKEN, IColuna, IGridConfig, IGridParam } from '../mk-grid.types';\nimport { GridCellService } from '../grid-cell/grid-cell.service';\n\nconst PROP_CONTROLE_ATIVO = 'is_ativo';\n\n@Component({\n selector: 'lib-grid-cell-handler',\n templateUrl: './grid-cell-handler.html',\n styleUrls: ['./grid-cell-handler.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [GridCellService],\n host: {\n '[class.table-inativo]': '!ativo()'\n }\n})\nexport class GridCellHandler<T> implements OnInit, OnDestroy {\n\n\n private parentInjector = inject(Injector);\n private sanitizer = inject(DomSanitizer);\n private servico = inject(GridCellService);\n\n lista = input.required<T[]>();\n linha = input.required<T>();\n config = input.required<IGridConfig<T>>();\n localColuna = input.required<IColuna<T>>();\n localColunas = input.required<IColuna<T>[]>();\n inputSearchText = input.required<string>();\n\n ativo = signal<boolean>(true);\n\n gridParams?: IGridParam<any>;\n\n vcr = viewChild('cellComponent', { read: ViewContainerRef });\n private componenteRef?: ComponentRef<any>;\n\n valueToRender: SafeHtml = \"\";\n\n ngOnInit() {\n this.gridParams = this.getGridParams();\n if (!this.localColuna().cellComponent) {\n this.valueToRender = this.getRenderer();\n }\n }\n ngOnDestroy() {\n if (this.componenteRef) {\n this.componenteRef.destroy();\n this.componenteRef = undefined;\n }\n }\n ngAfterViewInit() {\n this.createComponente()\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.valueToRender = this.getRenderer();\n this.gridParams = this.getGridParams();\n if (changes['linha'] && this.servico) {\n this.servico.updateGridParams(this.gridParams);\n }\n }\n\n getRenderer(): SafeHtml | string {\n let data = \"\";\n let prop: string | string[] = this.localColuna().prop;\n if (LibUtil.classof(prop) == \"string\" && (prop as string).includes(\".\")) {\n const props = (prop as string).split(\".\");\n const lastObj = LibUtil.getV(props.slice(0, -1).join(\".\"), this.linha());\n this.ativo.set(!!lastObj?.[PROP_CONTROLE_ATIVO]);\n }\n\n if (this.localColuna().prop) data = LibUtil.getV(this.localColuna().prop, this.linha());\n\n if (this.localColuna().mask) {\n data = LibUtil.mascarar(data, this.localColuna().mask) ?? data;\n }\n\n if (this.localColuna().capitalize) {\n data = LibUtil.capitalize(data);\n }\n\n if (this.localColuna().cellRenderer) {\n const html = this.localColuna().cellRenderer!(this.getGridParams())\n ?? data\n ?? '';\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n data = data?.toString() ?? '';\n\n let words = this.inputSearchText().trim().split(\" \").filter(t => t != \"\").map(p => LibUtil.removeEspecias(p).toLowerCase());\n if (words.length > 0) {\n for (let w of words) {\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n let regexTag = new RegExp(`<[^>]*${w}[^>]*>`, 'i');\n if (regexTag.test(preparedData.toString())) {\n continue;\n }\n let pos = preparedData.toString().toLowerCase().indexOf(w.toLowerCase());\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n\n return data ?? '';\n }\n\n private createComponente() {\n if (this.localColuna().cellComponent) {\n this.vcr()?.clear();\n this.componenteRef = this.vcr()?.createComponent(this.localColuna().cellComponent!.component, {\n injector: Injector.create({\n parent: this.parentInjector,\n providers: [\n { provide: GRID_PARAMS_TOKEN, useValue: this.gridParams },\n { provide: 'GRID_PARAMS', useValue: this.gridParams }\n ]\n })\n });\n }\n }\n\n getGridParams(): IGridParam<T> {\n let value = \"\"\n if (this.localColuna().prop) value = LibUtil.getV(this.localColuna().prop, this.linha());\n return {\n coluna: this.localColuna(),\n colunas: this.localColunas(),\n data: this.linha(),\n lista: this.lista(),\n params: this.localColuna().cellComponent?.input ?? this.localColuna().cellRendererParams,\n servicoParams: this.servico,\n value,\n }\n }\n}\n\n","@if(localColuna().cellComponent){\n<div class=\"d-none\" #cellComponent></div>\n} @else {\n<div [innerHTML]=\"valueToRender\"></div>\n}","import { Component, input, output } from '@angular/core';\nimport { IActionClickEvent, IDadosDaLinha, IGridConfig, IGridConfigActions } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { UiMenu } from '../../elements/ui-menu/ui-menu';\n\n@Component({\n selector: 'lib-grid-cell-actions',\n imports: [UiButton, UiMenu],\n templateUrl: './grid-cell-actions.html',\n styleUrls: ['./grid-cell-actions.css'],\n})\nexport class GridCellActions {\n\n config = input.required<IGridConfig<any>>();\n dadosDaLinha = input.required<IDadosDaLinha>();\n mobileHeader = input<boolean | undefined>(false);\n compact = input<boolean | undefined>(false);\n\n action = output<IActionClickEvent>();\n\n protected onClickAction(action?: IGridConfigActions, dadosDaLinha?: IDadosDaLinha) {\n if (action?.action) {\n this.action.emit({ action, dadosDaLinha });\n }\n return;\n }\n\n}\n","@if(!compact()){\n@for (action of dadosDaLinha().actions; track $index;) {\n@if(action.showAction && action.inmenu !== true){\n<ui-button [tipo]=\"mobileHeader() ? 'fill' : 'icon'\" [tema]=\"action?.tema ?? 'primary'\" [title]=\"action.display\"\n\t(click)=\"onClickAction(action, dadosDaLinha())\" [icone]=\"action.icon\"\n\t[style.--ui-height]=\"compact() ? '20px' : '40px'\"></ui-button>\n}\n}\n}\n\n@if(dadosDaLinha().hasActionMenu || compact()){\n<ui-menu>\n\t<ui-button slot=\"botao\" tipo=\"icon\" tema=\"primary\" [title]=\"config().actionsLineConfig.menuDisplay\"\n\t\t[icone]=\"config().actionsLineConfig.showMenuIcon ? 'bi bi-three-dots-vertical' : undefined\">\n\t\t{{ config().actionsLineConfig.menuDisplay }}\n\t</ui-button>\n\n\t@for (action of dadosDaLinha().actions; track $index;let last = $last) {\n\t@if(action.showAction && (action.inmenu !== false || compact())){\n\t<ui-button tipo=\"menu-item\" [tema]=\"action?.tema ?? 'primary'\" (click)=\"onClickAction(action, dadosDaLinha())\"\n\t\t[icone]=\"action?.showIcon ? action?.icon : 'bi bi-dot'\" [style.--ui-padding]=\"'0 16px'\">\n\t\t{{ action?.display ?? '' }}\n\t</ui-button>\n\t}\n\t}\n\n</ui-menu>\n}","import { Component, input, output } from '@angular/core';\nimport { IActionClickEvent, IColuna, IDadosDaLinha, IGridConfig } from '../mk-grid.types';\nimport { UiCheckBox } from \"../../public-api\";\nimport { GridCellHandler } from \"../grid-cell-handler/grid-cell-handler\";\nimport { GridCellActions } from \"../grid-cell-actions/grid-cell-actions\";\n\nexport interface IColunaComLargura extends IColuna<any> {\n widthNum: number;\n ordem: number;\n}\n\n@Component({\n selector: 'lib-grid-row-renderer',\n imports: [UiCheckBox, GridCellHandler, GridCellActions],\n templateUrl: './grid-row-renderer.html',\n styleUrls: ['../mk-grid.shared.css', './grid-row-renderer.css'],\n})\nexport class GridRowRenderer {\n dadosLinha = input.required<IDadosDaLinha>();\n config = input.required<IGridConfig<any>>();\n colunas = input.required<IColunaComLargura[]>();\n colunasOrdenadas = input.required<IColunaComLargura[]>();\n lista = input.required<any[]>();\n inputSearchText = input.required<string>();\n hasSeletor = input<boolean>(false);\n hasVerticalLine = input<boolean>(false);\n isCompacted = input<boolean>(false);\n hasGrid = input<boolean>(false);\n rowIndex = input<number>(0);\n lastRow = input<boolean>(false);\n\n actionTriggered = output<IActionClickEvent>();\n rowClicked = output<IDadosDaLinha>();\n\n protected onRowAction(event: IActionClickEvent): void {\n this.actionTriggered.emit(event);\n }\n\n protected onRowClick(): void {\n this.rowClicked.emit(this.dadosLinha());\n }\n}\n\n","@if(hasVerticalLine()) {\n<div class=\"table-header table-formated table-vertical-line\">{{ dadosLinha().ordem }}</div>\n}\n\n@if(hasSeletor() && config().selectionMode != 'none') {\n<div class=\"table-item table-formated table-item-seletor\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t[class.odd]=\"rowIndex() % 2 !== 0\" [class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[class.table-border-left]=\"hasGrid()\" [style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\"\n\t(click)=\"onRowClick()\">\n\t<ui-check-box [(value)]=\"dadosLinha().selecionado\" [single]=\"config().selectionMode == 'single'\"\n\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\" [disabled]=\"dadosLinha().isSelectionDisabled\"></ui-check-box>\n</div>\n}\n\n@for (coluna of colunas(); track $index; let j = $index) {\n@if (coluna.visivel !== false) {\n<lib-grid-cell-handler class=\"table-item table-dados {{ coluna.classeCell }}\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.table-first-col]=\"j === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [style.overflow]=\"coluna.overflow ?? 'hidden'\"\n\t[style.textOverflow]=\"coluna.textOverflow ?? 'ellipsis'\" [linha]=\"dadosLinha().dados\" [localColuna]=\"coluna\"\n\t[lista]=\"lista()\" [config]=\"config()\" [localColunas]=\"colunasOrdenadas()\"\n\t[class.table-bg-error]=\"dadosLinha().inativo\" (click)=\"onRowClick()\" [inputSearchText]=\"inputSearchText()\"\n\t[class.table-border-left]=\"hasGrid()\" [class.table-border-right]=\"$last && hasGrid() && !config().showActionsLine\"\n\t[attr.ordem]=\"coluna.ordem\"></lib-grid-cell-handler>\n}\n}\n\n@if(config().showActionsLine) {\n<lib-grid-cell-actions class=\"table-item table-formated table-item-action\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [config]=\"config()\" [dadosDaLinha]=\"dadosLinha()\"\n\t[class.table-border-right-error]=\"dadosLinha().inativo\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t(action)=\"onRowAction($event)\" [compact]=\"isCompacted()\" [class.table-border-left]=\"hasGrid()\"\n\t[class.table-border-right]=\"hasGrid()\" [class.last-row]=\"lastRow()\"></lib-grid-cell-actions>\n}","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IColuna, IGridConfig, IOrdenacao } from '../mk-grid.types';\nimport { UiCheckBox } from '../../elements/ui-check-box/ui-check-box';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nexport interface IColunaComLargura extends IColuna<any> {\n\twidthNum: number;\n\tordem: number;\n}\n\nexport interface IHeaderResizeEvent {\n\tevent: MouseEvent;\n\tcoluna: IColunaComLargura;\n}\n\nexport interface IHeaderResizeDoubleClickEvent {\n\tevent: Event;\n\tcoluna: IColunaComLargura;\n}\n\n@Component({\n\tselector: 'lib-grid-header-row',\n\ttemplateUrl: './grid-header-row.html',\n\tstyleUrls: ['../mk-grid.shared.css', './grid-header-row.css'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: { style: 'display: contents' },\n\timports: [UiCheckBox, DragDropModule],\n})\nexport class GridHeaderRow {\n\n\tcolunas = input.required<IColunaComLargura[]>();\n\tordenacoes = input.required<IOrdenacao[]>();\n\ttodosSelecionados = input.required<boolean>();\n\tconfig = input.required<IGridConfig<any>>();\n\thasSeletor = input<boolean>(false);\n\thasVerticalLine = input<boolean>(false);\n\thasGrid = input<boolean>(false);\n\tisCompacted = input<boolean>(false);\n\tisSelectingAll = input<boolean>(false);\n\n\tcolumnSort = output<string | string[]>();\n\tselectAll = output<boolean>();\n\tcolumnResizeStart = output<IHeaderResizeEvent>();\n\tcolumnResizeDoubleClick = output<IHeaderResizeDoubleClickEvent>();\n\n\tprotected getOrdenacaoDirecao(coluna: string | string[]): 'asc' | 'desc' | null {\n\t\tconst ordenacao = this.ordenacoes().find(o => o.coluna === coluna);\n\t\treturn ordenacao ? ordenacao.direcao : null;\n\t}\n\n\tprotected onColumnSort(coluna: string | string[]): void {\n\t\tthis.columnSort.emit(coluna);\n\t}\n\n\tprotected onSelectAll(value: boolean): void {\n\t\tthis.selectAll.emit(value);\n\t}\n\n\tprotected onResizeStart(event: MouseEvent, coluna: IColunaComLargura): void {\n\t\tthis.columnResizeStart.emit({ event, coluna });\n\t}\n\n\tprotected onResizeDoubleClick(event: Event, coluna: IColunaComLargura): void {\n\t\tthis.columnResizeDoubleClick.emit({ event, coluna });\n\t}\n}\n\n","@if(hasVerticalLine()) {\n<div class=\"table-header table-vertical-line\"></div>\n}\n\n@if(hasSeletor()) {\n<div class=\"table-header table-header-seletor\">\n\t@if(config().selectionMode == 'multiple') {\n\t<ui-check-box [single]=\"false\" [value]=\"todosSelecionados()\" (changed)=\"onSelectAll($event)\"\n\t\t[style.--ui-color]=\"'var(--sys-on-primary)'\" [style.--ui-outline]=\"'var(--sys-on-primary)'\"\n\t\t[disabled]=\"isSelectingAll()\" [style.--ui-size]=\"isCompacted() ? '15px' : undefined\"\n\t\t[hasDash]=\"true\"></ui-check-box>\n\t}\n</div>\n}\n\n@for (coluna of colunas(); track $index) {\n@if (coluna.visivel !== false) {\n<div class=\"table-header\" [class.table-border-left-darker]=\"hasGrid() && $index === 0\"\n\t[class.header-last-col]=\"$last && !config().showActionsLine\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[class.sortable]=\"coluna.sortable !== false\" [class.sorted-asc]=\"getOrdenacaoDirecao(coluna.prop) === 'asc'\"\n\t[class.sorted-desc]=\"getOrdenacaoDirecao(coluna.prop) === 'desc'\" [class.textVertical]=\"coluna.textVertical\">\n\t<div cdkDrag [cdkDragData]=\"coluna\" cdkDragLockAxis=\"x\"\n\t\tclass=\"table-header-text table-drag-container drop-option {{ coluna.classeHeader }}\" [title]=\"coluna.titulo\"\n\t\t[innerHTML]=\"coluna.tituloReduzido ?? coluna.titulo\" [attr.ordem]=\"coluna.ordem\"\n\t\t(click)=\"coluna.sortable !== false && onColumnSort(coluna.prop)\">\n\t</div>\n\t<div class=\"table-header-controls\" (dblclick)=\"onResizeDoubleClick($event, coluna)\"\n\t\t(mousedown)=\"onResizeStart($event, coluna)\">\n\t\t@if (coluna.sortable !== false) {\n\t\t<span class=\"table-ico-sort\">\n\t\t\t@if (getOrdenacaoDirecao(coluna.prop) === 'asc') {\n\t\t\t<i class=\"fa fa-sort-up asc\"></i>\n\t\t\t} @else if (getOrdenacaoDirecao(coluna.prop) === 'desc') {\n\t\t\t<i class=\"fa fa-sort-down desc\"></i>\n\t\t\t}\n\t\t</span>\n\t\t}\n\t</div>\n</div>\n}\n}\n\n@if(config().showActionsLine) {\n<div class=\"table-header table-action-line header-last-col\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[innerHTML]=\"!isCompacted() ? config().actionsLineConfig.headerDisplayMore : ''\"></div>\n}","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IPaginacao } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\n\n@Component({\n selector: 'lib-grid-pagination',\n imports: [UiButton],\n templateUrl: './grid-pagination.html',\n styleUrls: ['./grid-pagination.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridPagination {\n\n paginacao = input.required<IPaginacao>();\n totalPaginas = input.required<number>();\n performance = input.required<string>();\n\n pageChange = output<number>();\n\n onPreviousPage(): void {\n const atual = this.paginacao().paginaAtual;\n if (atual > 1) {\n this.pageChange.emit(atual - 1);\n }\n }\n\n onNextPage(): void {\n const atual = this.paginacao().paginaAtual;\n if (atual < this.totalPaginas()) {\n this.pageChange.emit(atual + 1);\n }\n }\n}","@if(paginacao()) {\n<div class=\"table-pagination\">\n\t<div class=\"pagination-info\">\n\t\t<span>Total {{ paginacao().totalItens }} registros</span>\n\t\t@if(performance()){\n\t\t<span class=\"table-performance\">\n\t\t\t{{ performance() }}.\n\t\t</span>\n\t\t}\n\t</div>\n\n\t<div class=\"pagination-controls\">\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onPreviousPage()\" [disabled]=\"paginacao().paginaAtual === 1\"\n\t\t\ticone=\"bi bi-chevron-left\">\n\t\t\tAnterior\n\t\t</ui-button>\n\n\t\t<span class=\"pagination-current\">{{ paginacao().paginaAtual }} de {{ totalPaginas() }}</span>\n\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onNextPage()\"\n\t\t\t[disabled]=\"paginacao().paginaAtual >= totalPaginas()\" icone=\"bi bi-chevron-right\" [iconeAntes]=\"false\"\n\t\t\t[iconeDepois]=\"true\">\n\t\t\tPróximo\n\t\t</ui-button>\n\t</div>\n</div>\n}","import { Component, computed, input, output } from '@angular/core';\nimport { IColuna, IGridConfig, IGridConfigActions } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { UiMenu } from '../../elements/ui-menu/ui-menu';\nimport { UiProcurar } from '../../elements/ui-procurar/ui-procurar';\n\n@Component({\n selector: 'lib-grid-filter-bar',\n imports: [UiButton, UiMenu, UiProcurar],\n templateUrl: './grid-filter-bar.html',\n styleUrls: ['../mk-grid.shared.css', './grid-filter-bar.css'],\n})\nexport class GridFilterBar {\n\n config = input.required<IGridConfig<any>>();\n colunasDefinidas = input.required<IColuna<any>[]>();\n colAgrupadoAtual = input.required<IColuna<any> | null>();\n isAgrupado = input.required<boolean>();\n filterCollapsed = input<boolean>(false);\n\n searchInput = output<string>();\n actionTriggered = output<IGridConfigActions>();\n filterToggle = output<void>();\n groupByColumn = output<IColuna<any>>();\n clearGroups = output<void>();\n collapseGroups = output<void>();\n expandGroups = output<void>();\n\n outsideMenuActionsTop = computed(() => {\n return this.config().actionsTop.filter(a => a.inmenu == false && a.showAction);\n });\n\n menuActionsTop = computed(() => {\n return this.config().actionsTop.filter(a => a.inmenu != false && a.showAction);\n });\n\n protected Math = Math;\n\n onInputSearch(text: string): void {\n this.searchInput.emit(text);\n }\n\n onClickOpenCloseFilterZone(): void {\n this.filterToggle.emit();\n }\n\n onClickAction(action?: IGridConfigActions): void {\n if (action) {\n this.actionTriggered.emit(action);\n }\n }\n\n onAgruparPor(coluna: IColuna<any>): void {\n this.groupByColumn.emit(coluna);\n }\n\n onClearGroups(): void {\n this.clearGroups.emit();\n }\n\n onRecolherGroups(): void {\n this.collapseGroups.emit();\n }\n\n onExpandirGroups(): void {\n this.expandGroups.emit();\n }\n}\n\n","@if(config().showControlBar) {\n<div class=\"table-topo-container table-styles\">\n\n\t@if(config().showActionsTop) {\n\t<div class=\"table-actions-outside\">\n\t\t@for (action of outsideMenuActionsTop(); track $index;) {\n\t\t<ui-button tipo=\"fill\" tema=\"primary\" [title]=\"action.display\" (click)=\"onClickAction(action)\"\n\t\t\t[icone]=\"action.icon\">\n\t\t\t{{ action?.display ?? '' }}\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t}\n\n\t<div class=\"table-top-right-container table-conjunto-actions\">\n\t\t@if(config().showSearch) {\n\t\t<div class=\"table-conjunto-actions-item table-pesquisar\">\n\t\t\t<ui-procurar (inputed)=\"onInputSearch($event)\" [autoColapse]=\"true\"></ui-procurar>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showFilterBar) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onClickOpenCloseFilterZone()\" icone=\"bi bi-funnel\"\n\t\t\t\t[style.--ui-border-radius]=\"'0px'\">\n\t\t\t\t<span class=\"table-collapse-ico\" [class.ativo]=\"!filterCollapsed()\"><i class=\"bi bi-caret-down\"></i></span>\n\t\t\t</ui-button>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showGridMenu != false) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t<ui-button slot=\"botao\" tipo=\"nofill\" tema=\"primary\" class=\"filtro-menu\"\n\t\t\t\t\t[title]=\"config().actionsTopConfig.menuDisplay\" [style.--ui-border-radius]=\"'0px'\"\n\t\t\t\t\t[icone]=\"config().actionsTopConfig.showMenuIcon ? config().actionsTopConfig.menuIcon : undefined\">\n\t\t\t\t\t{{ config().actionsTopConfig.menuDisplay }}\n\t\t\t\t</ui-button>\n\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\tOpções da Listagem\n\t\t\t\t</div>\n\n\t\t\t\t@for (action of menuActionsTop(); track $index;) {\n\t\t\t\t@if(action.actions != null) {\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" [title]=\"action.display\"\n\t\t\t\t\t\t[style.--ui-border-radius]=\"'0px'\" [icone]=\"action.icon\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</div>\n\t\t\t\t\t@for(subAction of action.actions; track $index) {\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(subAction)\"\n\t\t\t\t\t\t[icone]=\"subAction?.showIcon ? (subAction?.icon ?? 'bi bi-dot') : undefined\">\n\t\t\t\t\t\t{{ subAction?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t}\n\t\t\t\t</ui-menu>\n\t\t\t\t} @else {\n\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(action)\"\n\t\t\t\t\t[icone]=\"action?.showIcon ? (action?.icon ?? 'bi bi-dot') : undefined\">\n\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t</ui-button>\n\t\t\t\t}\n\t\t\t\t}@empty {\n\t\t\t\t<div class=\"p-2 text-center text-muted\">\n\t\t\t\t\tNenhuma ação disponível.\n\t\t\t\t</div>\n\t\t\t\t}\n\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" icone=\"fa fa-object-group\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\">\n\t\t\t\t\t\t\tAgrupar Por\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t<div class=\"menu-sub-title\">\n\t\t\t\t\t\t\tAgrupar por\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t@for (coluna of colunasDefinidas(); track $index) {\n\t\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onAgruparPor(coluna)\"\n\t\t\t\t\t\t\t[icone]=\"isAgrupado() && colAgrupadoAtual()?.prop === coluna.prop ? 'bi bi-check2-square' : 'bi bi-square'\">\n\t\t\t\t\t\t\t{{ coluna.titulo }}\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</ui-menu>\n\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClearGroups()\" icone=\"fa fa-object-ungroup\"\n\t\t\t\t\t\t[disabled]=\"!isAgrupado()\">\n\t\t\t\t\t\tDesagrupar\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onRecolherGroups()\" icone=\"bi bi-arrows-collapse\">\n\t\t\t\t\t\tRecolher Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onExpandirGroups()\" icone=\"bi bi-arrows-expand\">\n\t\t\t\t\t\tExpandir Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t</ui-menu>\n\t\t\t</ui-menu>\n\t\t</div>\n\t\t}\n\t</div>\n\n</div>\n}","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-grid-empty-list',\n imports: [],\n templateUrl: './grid-empty-list.html',\n styleUrl: './grid-empty-list.css',\n})\nexport class GridEmptyList {}\n","<div class=\"microPos5 p-2\">\n\t<div class=\"flex gap-2 f-s-16 text-center nenhumRegistro\">\n\t\t<i class=\"bi bi-database-fill-check\"></i>\n\t\tNenhum registro no filtro aplicado.\n\t</div>\n</div>","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, signal, viewChild } from '@angular/core';\nimport { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { GridRowRenderer } from './grid-row-renderer/grid-row-renderer';\nimport { GridHeaderRow } from './grid-header-row/grid-header-row';\nimport { GridPagination } from './grid-pagination/grid-pagination';\nimport { GridFilterBar } from './grid-filter-bar/grid-filter-bar';\nimport { GridEmptyList } from './grid-empty-list/grid-empty-list';\nimport { IActionClickEvent, IColuna, IDadosDaLinha, IGridConfig, IGridConfigActions, IGridEventAPI, IOrdenacao, IPaginacao } from './mk-grid.types';\nimport { UiButton } from '../elements/ui-button/ui-button';\nimport { IOptionValue, UiSelect } from '../elements/ui-select/ui-select';\nimport { UiCheckBox } from '../elements/ui-check-box/ui-check-box';\nimport { LibUtil } from '../util/util';\nimport { IKV } from '../interfaces/interfaces';\nimport { GridCellHandler } from \"./grid-cell-handler/grid-cell-handler\";\nimport { GridCellActions } from \"./grid-cell-actions/grid-cell-actions\";\n\nconst PROP_CONTROLE_ATIVO = 'is_ativo';\n\ninterface IColunaComLargura extends IColuna<any> {\n widthNum: number;\n ordem: number;\n}\n\n\n@Component({\n selector: 'lib-mk-grid',\n imports: [\n GridEmptyList,\n UiButton,\n UiSelect,\n UiCheckBox,\n DragDropModule,\n GridFilterBar,\n GridPagination,\n GridHeaderRow,\n GridRowRenderer,\n GridCellHandler,\n GridCellActions\n ],\n templateUrl: './mk-grid.html',\n styleUrls: ['./mk-grid.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MkGrid {\n\n lista = input.required<any[] | undefined>();\n config = input.required<IGridConfig<any>>();\n filtro = input<any | undefined>();\n\n colunasDefinidas = signal<IColunaComLargura[]>([]);\n colunasFiltradas = signal<IColunaComLargura[]>([]);\n colunasOrdenadas = signal<IColunaComLargura[]>([]);\n colunasExibir = signal<IColunaComLargura[]>([]);\n gridTemplateColumns = signal('auto');\n inputSearchText = signal<string>('');\n selectedRows = signal<string[]>([]);\n gruposColapsed = signal<string[]>([]);\n isAgrupado = signal(false);\n isAgrupadoLimpo = signal(false);\n filterHeight = signal(1000);\n gruposEncontrados = {\n itens: new Set<string>()\n };\n numOrdemPrimeiroExibido = signal<number>(1);\n numOrdemUltimoExibido = signal<number>(1);\n pxVerticalLine = signal('');\n pxSelector = signal('');\n pxColunas = signal('');\n pxActions = signal('');\n totalColsVisivel = signal(0);\n colAgrupadoAtual = signal<IColuna<any> | null>(null);\n colMovingX = 0;\n\n minLineHeight = model('20px');\n isCompacted = model(false);\n hasGrid = model(false);\n hasVerticalLine = model(false);\n hasSeletor = model(false);\n todosSelecionados = signal(false);\n isSelectingAll = signal(false);\n\n devMode = false;\n\n maxActionsInLine = 0;\n\n eHost = inject(ElementRef);\n gridSize = viewChild('gridSize', { read: ElementRef });\n gridfiltro = viewChild('gridfiltro', { read: ElementRef });\n\n protected Math = Math;\n protected filtroCollapsed = signal(true);\n protected gridId: string = LibUtil.uuid();\n\n protected ordenacoesSignal = signal<IOrdenacao[]>([]);\n protected paginacaoSignal = signal<IPaginacao>({\n paginaAtual: 1,\n totalItens: 0,\n totalagrupado: 0,\n });\n\n performance = computed(() => {\n return this.config().timeRequest\n ? `${this.config().timeRequest}ms`\n : '';\n });\n\n itensPorPagina = computed(() => this.config().itensPorPagina?.() ?? 10);\n\n constructor() {\n effect(() => {\n this.iniciarSelectedRows(this.lista());\n });\n effect(() => {\n const totalItens = this.listaOrdenada().length;\n const totalagrupado = this.listaAgrupada().length;\n this.paginacaoSignal.update(pag => ({ ...pag, totalItens, totalagrupado }));\n });\n effect(() => {\n const agrupada = this.listaAgrupada();\n const isAgrupado = this.isAgrupado();\n if (this.gruposEncontrados.itens.size > 1) {\n this.isAgrupado.set(true);\n } else {\n this.isAgrupado.set(false);\n }\n });\n effect(() => {\n const _ = this.filtro();\n this.irParaPagina(1);\n });\n effect(() => {\n const el = this.filterContainer()?.nativeElement as HTMLElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n if (entry.target === el) {\n this.filterHeight.set(entry.contentRect.height);\n }\n }\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n });\n effect(() => {\n let listaExibindo = this.listaExibir();\n\n let numeroPrimeiro = listaExibindo?.reduce((min, item) => Math.min(min, item.ordem ?? Infinity), Infinity);\n let numeroUltimo = listaExibindo?.reduce((max, item) => Math.max(max, item.ordem ?? -Infinity), -Infinity);\n if (numeroPrimeiro == Infinity) numeroPrimeiro = 0;\n if (numeroUltimo == -Infinity) numeroUltimo = 0;\n this.numOrdemPrimeiroExibido.set(numeroPrimeiro);\n this.numOrdemUltimoExibido.set(numeroUltimo);\n });\n effect(() => {\n const isSelected = this.config().isSelected();\n if (isSelected === false) {\n this.clearSelections();\n }\n });\n }\n\n ngOnInit() {\n this.filtroCollapsed.set(this.config().filterBarStartCollapsed ?? true);\n this.hasVerticalLine.set(this.config().hasVerticalLine ?? false);\n this.hasSeletor.set(this.config().hasSeletor ?? false);\n this.hasGrid.set(this.config().hasGrid ?? false);\n this.isCompacted.set(this.config().isCompacted ?? false);\n this.minLineHeight.set(this.config().minLineHeight ?? '20px');\n\n this.definirColunas();\n this.atualizarColunas();\n }\n\n ngOnDestroy(): void { }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.calcularAltura();\n this.calcularColunasExibir();\n this.observerResize();\n }, 0);\n }\n\n iniciarSelectedRows(lista: any[] | undefined) {\n let fnGetSelect = this.config().startSelected;\n\n if (!fnGetSelect || !lista) {\n this.clearSelections();\n return;\n }\n\n let selecionados = lista.filter(item => fnGetSelect ? fnGetSelect(item) : false)\n .map(item => LibUtil.getV(this.config().primarykey, item)?.toString() ?? '')\n .filter(id => id != '');\n\n if (selecionados.length === 0) {\n this.todosSelecionados.set(false);\n } else if (lista.length > 0 && selecionados.length === lista.length) {\n this.todosSelecionados.set(true);\n } else {\n this.todosSelecionados.set(false);\n }\n\n this.selectedRows.set(selecionados);\n }\n\n definirColunas() {\n let colunasInicialConfig = this.config().colunas.map((col, index) => {\n return {\n ...col,\n widthNum: col.width ? parseInt(col.width.replaceAll('px', '').replaceAll('auto', '50')) : 50,\n tituloReduzido: col.titulo,\n ordem: index,\n };\n });\n\n let primeiraPropAgrupadaInicial = colunasInicialConfig.find(c => c.iniciaAgrupado)?.prop;\n let colunasAgrupada = colunasInicialConfig.find(c => c.prop === primeiraPropAgrupadaInicial);\n if (colunasAgrupada) {\n this.colAgrupadoAtual.set(colunasAgrupada);\n } else {\n this.colAgrupadoAtual.set(null);\n }\n\n this.colunasDefinidas.set(colunasInicialConfig);\n }\n\n filtrarColunas() {\n let agrupada = this.colAgrupadoAtual();\n let colunasFiltradas = this.colunasDefinidas().filter(c => {\n return (c.visivel !== false) && (agrupada?.prop !== c.prop);\n });\n this.colunasFiltradas.set(colunasFiltradas);\n }\n\n ordenarColunas() {\n this.colunasOrdenadas.set(this.colunasFiltradas().sort((a, b) => a.ordem - b.ordem));\n }\n\n colunasKVDefinidas = computed<IKV[]>(() => {\n return this.colunasDefinidas().map(c => ({ k: LibUtil.classof(c.prop) == 'string' ? c.prop as string : c.prop[0], v: c.titulo }));\n });\n\n outsideMenuActionsTop = computed(() => {\n return this.config().actionsTop.filter(a => a.inmenu == false && a.showAction);\n });\n\n menuActionsTop = computed(() => {\n return this.config().actionsTop.filter(a => a.inmenu != false && a.showAction);\n });\n\n filterContainer = viewChild('filterContainer', { read: ElementRef });\n\n protected listaOrdenada = computed(() => {\n const listaDefinida = this.lista() ?? [];\n if (LibUtil.classof(listaDefinida) !== 'array') {\n this.config().hasError = true;\n return [];\n }\n let words = this.inputSearchText().trim().split(\" \").filter(t => t != \"\");\n let agrupadaAtual = this.colAgrupadoAtual();\n let propriedadeAgrupada = agrupadaAtual?.prop;\n\n let listaFiltrada = listaDefinida.map((o, i) => {\n let id = LibUtil.getV(this.config().primarykey, o)?.toString() ?? String(i);\n\n let dadosDaLinha: IDadosDaLinha = {\n id,\n dados: o,\n inativo: this.config().InativeRule(o),\n isSelectionDisabled: this.config().SelectionDisabledRule ? this.config().SelectionDisabledRule!(o) : false,\n groupName: propriedadeAgrupada ? LibUtil.getV(propriedadeAgrupada, o) : '',\n selecionado: this.selectedRows().includes(id),\n hue: this.config().backgroundHue ? this.config().backgroundHue?.(o) : undefined,\n actions: this.config().actionsLine.map(a => {\n if (a.showAction == true) return { ...a, showAction: a.showLineAction ? a.showLineAction(o) : true };\n else return { ...a, showAction: false };\n }),\n ordem: i + 1,\n }\n dadosDaLinha.hasActionMenu = dadosDaLinha.actions?.some(a => a.showAction == true && a.inmenu == true) ?? false;\n this.maxActionsInLine = Math.max(this.maxActionsInLine, dadosDaLinha.actions?.filter(a => a.showAction == true && a.inmenu == false).length ?? 0);\n return (dadosDaLinha as IDadosDaLinha);\n }).filter(dadosLinha => {\n if (words.length === 0) return true;\n\n for (const w of words) {\n let encontrado = false;\n for (const coluna of this.config().colunas) {\n const valorColuna = LibUtil.getV(coluna.prop, dadosLinha.dados);\n if (valorColuna != null && LibUtil.contem(valorColuna, w)) {\n encontrado = true;\n }\n }\n if (!encontrado) return false;\n }\n\n return true;\n });\n\n const ordenacoes = this.ordenacoesSignal();\n if (!ordenacoes.length) return listaFiltrada;\n\n let ordenado = [...listaFiltrada].sort((a, b) => {\n for (const ordenacao of ordenacoes) {\n if (Array.isArray(ordenacao.coluna)) {\n for (const prop of ordenacao.coluna) {\n const resultado = this.compararValores(\n LibUtil.getV(prop, a.dados),\n LibUtil.getV(prop, b.dados),\n ordenacao.direcao\n );\n if (resultado !== 0) return resultado;\n }\n } else {\n const resultado = this.compararValores(\n LibUtil.getV(ordenacao.coluna, a.dados),\n LibUtil.getV(ordenacao.coluna, b.dados),\n ordenacao.direcao\n );\n if (resultado !== 0) return resultado;\n }\n }\n return 0;\n });\n return ordenado.map((item, index) => ({ ...item, ordem: index + 1 }));\n });\n\n protected listaAgrupada = computed(() => {\n const listaOrdenada = this.listaOrdenada();\n\n if (this.isAgrupado() == false) {\n if (this.isAgrupadoLimpo() == false) {\n listaOrdenada.forEach(item => {\n this.gruposEncontrados.itens.add(item.groupName);\n });\n }\n return listaOrdenada;\n }\n\n let listaComGrupos: IDadosDaLinha[] = [];\n let c = 1;\n let colAgrupadaAtual = this.colAgrupadoAtual()?.prop ?? '';\n for (const grupo of Array.from(this.gruposEncontrados.itens)) {\n let firstFound = listaOrdenada.filter(i => i.groupName === grupo)[0];\n let inativo = listaOrdenada.filter(i => i.groupName === grupo).some(i => this.getObjetoInativo(colAgrupadaAtual, i.dados));\n listaComGrupos.push({\n dados: firstFound?.dados,\n inativo: inativo,\n groupName: grupo,\n selecionado: false,\n isGroup: true,\n isFullLine: {\n visible: true,\n colapsed: this.gruposColapsed().includes(grupo),\n colapsedCount: listaOrdenada.filter(i => i.groupName === grupo).length,\n showIco: true,\n },\n isColapsed: false,\n } as IDadosDaLinha);\n\n listaOrdenada.map(item => {\n if (item.groupName === grupo) {\n listaComGrupos.push({\n ...item,\n ordem: c++,\n isColapsed: this.gruposColapsed().includes(grupo)\n });\n }\n });\n };\n\n return listaComGrupos.filter(i => !i.isColapsed);\n });\n\n protected listaExibir = computed(() => {\n const listaOrdenada = this.listaAgrupada();\n\n const paginacao = this.paginacaoSignal();\n const inicio = (paginacao.paginaAtual - 1) * this.itensPorPagina();\n const fim = inicio + this.itensPorPagina();\n const listaExibindo = listaOrdenada.slice(inicio, fim);\n return listaExibindo;\n });\n\n numeroPrimeiroItemExibido = computed(() => {\n return (this.paginacaoSignal().paginaAtual - 1) * this.itensPorPagina() + 1;\n });\n\n numeroUltimoItemExibido = computed(() => {\n const paginacao = this.paginacaoSignal();\n return Math.min(paginacao.paginaAtual * this.itensPorPagina(), paginacao.totalItens);\n });\n\n onDropColuna(ev: CdkDragDrop<IColunaComLargura[]>) {\n let colunaOrigem = ev.item.data;\n\n let colTarget = (ev.event.target as any).closest('.table-header-text');\n let cellTarget = (ev.event.target as any).closest('.table-item');\n let novaOrdem: number | null = null;\n if (colTarget) {\n novaOrdem = colTarget.getAttribute('ordem')\n }\n if (cellTarget) {\n novaOrdem = cellTarget.getAttribute('ordem')\n }\n\n if (novaOrdem && colunaOrigem) {\n this.colunasOrdenadas.update(cols => {\n const semColuna = cols.filter(c => c.ordem !== colunaOrigem.ordem);\n semColuna.splice(novaOrdem, 0, colunaOrigem);\n return semColuna.map((col, index) => ({ ...col, ordem: index }));\n })\n this.calcularColunasExibir();\n }\n }\n\n getObjetoInativo(nomeColuna: string | string[], linha: any): boolean {\n if (LibUtil.classof(nomeColuna) == \"string\" && (nomeColuna as string).includes(\".\")) {\n const props = (nomeColuna as string).split(\".\");\n const lastObj = LibUtil.getV(props.slice(0, -1).join(\".\"), linha);\n return lastObj?.[PROP_CONTROLE_ATIVO] == false;\n }\n return false;\n }\n\n observerResize() {\n const el = this.eHost?.nativeElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n this.calcularColunasExibir();\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n }\n\n calcularColunasExibir() {\n let colunasAExibir = this.colunasOrdenadas().map(c => ({ ...c }));\n\n let compacted = this.isCompacted();\n let wVerticalLine = this.hasVerticalLine() ? (compacted ? 30 : 40) : 0;\n let wSelector = this.hasSeletor() ? (compacted ? 30 : 40) : 0;\n let wActions = this.config().showActionsLine ? (compacted ? 42 : 130) : 0;\n let wDisponivel = this.gridSize()?.nativeElement?.offsetWidth - (wVerticalLine + wSelector + wActions);\n\n let totalFixo = (wVerticalLine > 0 ? 1 : 0) + (wSelector > 0 ? 1 : 0) + (wActions > 0 ? 1 : 0);\n let wFixo = wVerticalLine + wSelector + wActions;\n\n while (colunasAExibir.length > 0) {\n let wColunas = colunasAExibir.reduce((a, b) => a + b.widthNum, 0);\n let somado = wFixo + wColunas;\n if (somado <= wDisponivel) break;\n colunasAExibir.pop();\n }\n this.colunasExibir.set(colunasAExibir);\n this.totalColsVisivel.set(colunasAExibir.length + totalFixo);\n\n let wColsCentrais = '';\n for (let col of colunasAExibir) {\n col.width = col.width ?? 'auto';\n wColsCentrais += `${col.width} `;\n }\n\n this.pxVerticalLine.set(wVerticalLine > 0 ? (`${wVerticalLine}px `) : '');\n this.pxSelector.set(wSelector > 0 ? (`${wSelector}px `) : '');\n this.pxActions.set(wActions > 0 ? (`${wActions}px `) : '');\n this.pxColunas.set(wColsCentrais);\n }\n\n calcularAltura() {\n const elementoConteiner = this.filterContainer();\n if (!elementoConteiner) return;\n\n const firstChild = elementoConteiner.nativeElement.firstElementChild;\n if (!firstChild) return;\n\n const height = firstChild.scrollHeight;\n this.filterHeight.set(height);\n }\n\n getState(): any {\n return {\n colunaAgrupadaAtual: this.colAgrupadoAtual(),\n colunas: this.colunasDefinidas() ?? [],\n colunasExibir: this.colunasExibir() ?? [],\n config: this.config(),\n filtros: this.filtro() ?? {},\n gruposColapsed: this.gruposColapsed(),\n gruposEncontrados: this.gruposEncontrados,\n isAgrupado: this.isAgrupado(),\n isAgrupadoLimpo: this.isAgrupadoLimpo(),\n listaExibindo: this.listaExibir(),\n listaOrdenada: this.listaOrdenada(),\n ordenacoes: this.ordenacoesSignal(),\n paginacao: {\n paginas: this.totalPaginas(),\n paginaAtual: this.paginacaoSignal().paginaAtual,\n itensPorPagina: this.itensPorPagina(),\n },\n selecionados: this.selectedRows(),\n tempoRequisicao: this.config().timeRequest,\n totais: {\n totalDefinida: this.lista()?.length ?? 0,\n totalOrdenada: this.listaOrdenada().length,\n totalExibindo: this.listaExibir().length,\n },\n ultimaAcao: this.config().lastGridEventAPI,\n };\n }\n\n protected totalPaginas = computed(() => {\n const paginacao = this.paginacaoSignal();\n return Math.ceil(paginacao.totalagrupado / this.itensPorPagina());\n });\n\n protected alternarOrdenacao(coluna: string | string[]): void {\n const ordenacoes = this.ordenacoesSignal();\n const index = ordenacoes.findIndex(o => o.coluna === coluna);\n\n if (index >= 0) {\n const novaDirecao = ordenacoes[index].direcao === 'asc' ? 'desc' : 'asc';\n if (novaDirecao == \"asc\") {\n const novasOrdenacoes = [...ordenacoes.filter(o => o.coluna != coluna)];\n this.ordenacoesSignal.set(novasOrdenacoes);\n } else {\n const novasOrdenacoes = [...ordenacoes];\n novasOrdenacoes[index] = { coluna, direcao: novaDirecao };\n this.ordenacoesSignal.set(novasOrdenacoes);\n }\n } else {\n this.ordenacoesSignal.set([...ordenacoes, { coluna, direcao: 'asc' }]);\n }\n }\n\n protected obterDirecaoOrdenacao(coluna: string | string[]): 'asc' | 'desc' | null {\n const ordenacao = this.ordenacoesSignal().find(o => o.coluna === coluna);\n return ordenacao ? ordenacao.direcao : null;\n }\n\n protected irParaPagina(pagina: number): void {\n if (pagina >= 1 && pagina <= this.totalPaginas()) {\n this.paginacaoSignal.update(pag => ({ ...pag, paginaAtual: pagina }));\n }\n }\n\n protected proximaPagina(): void {\n const atual = this.paginacaoSignal().paginaAtual;\n this.irParaPagina(atual + 1);\n }\n\n protected paginaAnterior(): void {\n const atual = this.paginacaoSignal().paginaAtual;\n this.irParaPagina(atual - 1);\n }\n\n public limparOrdenacao(): void {\n this.ordenacoesSignal.set([]);\n }\n\n async onOrdenarPor(coluna: IColunaComLargura | null) {\n if (!coluna) return;\n if (coluna.ordem == null) return;\n this.alternarOrdenacao(coluna.prop);\n }\n\n getColDisplay(nomeCampo: string | string[]): string {\n return this.colunasDefinidas()?.find(o => o.prop == nomeCampo)?.titulo ?? '???';\n }\n\n protected getOrdenacaoTexto(): string {\n const ordenacoes = this.ordenacoesSignal();\n if (!ordenacoes.length) return '';\n return ordenacoes.map(o => `${this.getColDisplay(o.coluna)} (${o.direcao})`).join(', ');\n }\n\n protected onClickClearInfo() {\n this.limparOrdenacao();\n }\n\n protected atualizarColunas() {\n this.filtrarColunas();\n this.ordenarColunas();\n this.calcularColunasExibir();\n }\n\n protected onClickCellAction(evento: IActionClickEvent) {\n if (evento.action?.action) {\n evento.action.action(this._getGridEvent(evento.action, evento.dadosDaLinha?.dados));\n }\n }\n\n protected onClickAction(action?: IGridConfigActions, linha?: any) {\n if (action?.action) {\n return action.action(this._getGridEvent(action, linha));\n }\n return;\n }\n\n private _getGridEvent(action: IGridConfigActions, linha?: any): IGridEventAPI<any> {\n let pk = this.config().primarykey;\n let id = undefined;\n if (pk != null && linha != null) {\n id = linha[pk];\n }\n let evento: IGridEventAPI<any> = { id, linha, action }\n this.config().lastGridEventAPI = evento;\n return evento;\n }\n\n private compararValores(a: any, b: any, direcao: 'asc' | 'desc'): number {\n let resultado = 0;\n\n if (a === null || a === undefined) a = '';\n if (b === null || b === undefined) b = '';\n\n if (typeof a === 'number' && typeof b === 'number') {\n resultado = a - b;\n } else if (a instanceof Date && b instanceof Date) {\n resultado = a.getTime() - b.getTime();\n } else {\n resultado = String(a).localeCompare(String(b));\n }\n\n return direcao === 'asc' ? resultado : -resultado;\n }\n\n protected onClickGridMenu(action?: IGridConfigActions) {\n if (action?.action) {\n return action.action(this._getGridEvent(action));\n }\n }\n\n protected onInputSearch(text: string): void {\n this.inputSearchText.set(text);\n }\n\n protected onClickOpenCloseFilterZone(): void {\n this.filtroCollapsed.update(v => !v);\n }\n\n async onChangeTodosSelecionados(todosSelecionados: boolean) {\n this.isSelectingAll.set(true);\n let listaOrdenada = this.listaOrdenada();\n\n if (!todosSelecionados) {\n for (const linha of listaOrdenada) {\n if (this.selectedRows().includes(linha.id)) {\n await this.desselecionarLinha(linha.id, linha.dados);\n }\n }\n } else {\n for (const linha of listaOrdenada) {\n await this.selectLinha(linha.id, linha.dados);\n }\n }\n\n await LibUtil.wait(100);\n this.isSelectingAll.set(false);\n }\n\n async onClickRow(linha: IDadosDaLinha) {\n if (!linha) return;\n if (!linha.dados) return;\n\n if (this.selectedRows().includes(linha.id)) {\n this.desselecionarLinha(linha.id, linha.dados);\n } else {\n this.selectLinha(linha.id, linha.dados);\n }\n }\n\n clearSelections() {\n this.selectedRows.set([]);\n }\n\n async selectLinha(id: string, dados?: any) {\n if (this.selectedRows().includes(id)) return;\n\n if (this.config().selectionMode == 'single') {\n this.clearSelections();\n }\n this.selectedRows.set([...this.selectedRows(), id]);\n this.config().onSelected?.(dados, this.selectedRows());\n this.config().onSelectionChanged?.(dados, this.selectedRows());\n this.config().isSelected.set(true);\n }\n\n async desselecionarLinha(id: string, dados?: any) {\n if (!this.selectedRows().includes(id)) return;\n\n this.selectedRows.set(this.selectedRows().filter(i => i !== id));\n this.config().onUnselected?.(dados, this.selectedRows());\n this.config().onSelectionChanged?.(dados, this.selectedRows());\n }\n\n onClickGroup(dadosDaLinha: IDadosDaLinha) {\n this.gruposColapsed.update(g => {\n if (g.includes(dadosDaLinha.groupName)) {\n return g.filter(grupo => grupo != dadosDaLinha.groupName);\n } else {\n return [...g, dadosDaLinha.groupName];\n }\n });\n }\n\n onRecolherGroups() {\n this.gruposColapsed.set(Array.from(this.gruposEncontrados.itens));\n }\n\n onExpandirGroups() {\n this.gruposColapsed.set([]);\n }\n\n async onAgruparPor(coluna: IColunaComLargura | null) {\n this.colAgrupadoAtual.set(null);\n this.gruposEncontrados.itens.clear();\n this.isAgrupadoLimpo.set(false);\n\n this.colAgrupadoAtual.set(coluna);\n this.atualizarColunas();\n }\n\n async onChangedAgrupamento(event: IOptionValue) {\n let propAgrupamento = event.optionChanged?.k;\n let colAgrupada = this.colunasDefinidas().find(c => c.prop === propAgrupamento) ?? null;\n this.onAgruparPor(colAgrupada)\n }\n\n protected onClearGroups() {\n this.isAgrupadoLimpo.set(true);\n this.gruposEncontrados.itens.clear();\n this.isAgrupado.set(false);\n this.colAgrupadoAtual.set(null);\n this.atualizarColunas();\n }\n\n onChangeLineNumber() {\n this.hasVerticalLine.update(v => !v);\n this.calcularColunasExibir();\n }\n\n onChangeSeletor() {\n this.hasSeletor.update(v => !v);\n this.calcularColunasExibir();\n }\n\n onChangeCompacted() {\n this.isCompacted.update(v => !v);\n }\n\n onChangeHasGrid() {\n this.hasGrid.update(v => !v);\n }\n\n onResizeStart(event: MouseEvent, coluna: IColunaComLargura) {\n this.colMovingX = event.clientX;\n event.preventDefault();\n let eColuna = (event.target as HTMLElement).closest('.table-header') as HTMLElement;\n let computedWidth = parseInt(window.getComputedStyle(eColuna).width.replaceAll('px', ''), 10);\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n const delta = moveEvent.clientX - this.colMovingX;\n let widthNum = Math.max(30, (computedWidth + delta));\n this.colunasOrdenadas.update(cols => {\n return cols.map(c => {\n if (c.ordem === coluna.ordem) {\n return { ...c, widthNum, width: `${widthNum}px` };\n }\n return c;\n });\n });\n };\n\n const onMouseUp = () => {\n this.calcularColunasExibir();\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }\n\n onDoubleClickControls(event: Event, coluna: IColunaComLargura) {\n let getColunaDefinina = this.colunasDefinidas().find(c => c.ordem === coluna.ordem);\n let getWidth = getColunaDefinina?.width ? getColunaDefinina.width : 'auto';\n this.colunasOrdenadas.update(cols => {\n return cols.map(c => {\n if (c.ordem === coluna.ordem) {\n return { ...c, width: getWidth };\n }\n return c;\n });\n });\n this.calcularColunasExibir();\n }\n}\n\n","<lib-grid-filter-bar [config]=\"config()\" [colunasDefinidas]=\"$any(colunasDefinidas())\"\n\t[colAgrupadoAtual]=\"colAgrupadoAtual()\" [isAgrupado]=\"isAgrupado()\" [filterCollapsed]=\"filtroCollapsed()\"\n\t(searchInput)=\"onInputSearch($event)\" (filterToggle)=\"onClickOpenCloseFilterZone()\"\n\t(actionTriggered)=\"onClickAction($event)\" (groupByColumn)=\"onAgruparPor($any($event))\" (clearGroups)=\"onClearGroups()\"\n\t(collapseGroups)=\"onRecolherGroups()\" (expandGroups)=\"onExpandirGroups()\">\n</lib-grid-filter-bar>\n\n@if(config().showFilterBar) {\n<div class=\"table-filter-container table-styles\" [style.--filter-height.px]=\"filterHeight()\">\n\t<div #filterContainer class=\"table-filter-content\" [class.table-filter-hide]=\"filtroCollapsed()\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n}\n\n@if(config().screen() == \"Mobile\"){\n<!-- MOBILE INICIO -->\n\n@for (dadosLinha of listaExibir(); track $index;let i = $index) {\n@if( dadosLinha.isColapsed !== true){\n\n@if(dadosLinha.isFullLine?.visible){\n<!-- MOBILE GRUPO LINHA PRÓPRIA -->\n<div class=\"table-row-mobile table-formated table-group table-styles\" (click)=\"onClickGroup(dadosLinha)\">\n\t<div>{{ dadosLinha.groupName }}</div>\n\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine?.colapsed === true\">\n\t\t{{ dadosLinha.isFullLine?.colapsedCount ?? 0 }} item(s)\n\t\t<div class=\"table-group-items-ico\">\n\t\t\t<i class=\"bi bi-caret-down\"></i>\n\t\t</div>\n\t</div>\n</div>\n} @else {\n\n<div class=\"table-overflow mobile\" [style.--table-min-height]=\"isCompacted() ? '20px' : minLineHeight()\">\n\t<div class=\"table-table-mobile\" [class.selected]=\"dadosLinha.selecionado\">\n\n\t\t<!-- MOBILE DADOS -->\n\t\t@if(config().showActionsLine){\n\t\t<div class=\"table-header-mobile\" [style.gridArea]=\"'auto / auto / auto / span 2'\">\n\t\t\t@if(hasVerticalLine()){\n\t\t\t<!-- MOBILE VERTICAL DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-vertical-line\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t{{ dadosLinha.ordem }}\n\t\t\t</div>\n\t\t\t}\n\t\t\t@if(hasSeletor()){\n\t\t\t<!-- MOBILE SELECTOR DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-item-seletor\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t<ui-check-box [(value)]=\"dadosLinha.selecionado\" [style.--ui-color]=\"'var(--sys-on-primary)'\"\n\t\t\t\t\t[style.--ui-outline]=\"'var(--sys-on-primary)'\" [single]=\"this.config().selectionMode == 'single'\"\n\t\t\t\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\"></ui-check-box>\n\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"table-header-mobile-space\" (click)=\"onClickRow(dadosLinha)\"></div>\n\t\t\t<lib-grid-cell-actions [config]=\"config()\" [dadosDaLinha]=\"dadosLinha\" [mobileHeader]=\"true\"\n\t\t\t\t(action)=\"onClickCellAction($event)\" [compact]=\"isCompacted()\"></lib-grid-cell-actions>\n\t\t</div>\n\t\t}\n\n\t\t<!-- MOBILE LINHA -->\n\t\t@for (localColuna of colunasOrdenadas(); track $index;) {\n\t\t<div class=\"table-header-mobile\" [class.sortable]=\"localColuna.sortable !== false\"\n\t\t\t[class.sorted-asc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'asc'\"\n\t\t\t[class.sorted-desc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'desc'\"\n\t\t\t(click)=\"localColuna.sortable !== false && alternarOrdenacao(localColuna.prop)\" [style]=\"localColuna.styleHeader\">\n\t\t\t<div class=\"table-header-mobile-text\" [title]=\"localColuna.titulo\"\n\t\t\t\t[innerHTML]=\"localColuna.tituloReduzido ?? localColuna.titulo\">\n\t\t\t</div>\n\t\t\t<div class=\"table-header-controls\">\n\t\t\t\t@if (localColuna.sortable !== false) {\n\t\t\t\t<span class=\"table-ico-sort\">\n\t\t\t\t\t@if (obterDirecaoOrdenacao(localColuna.prop) === 'asc') {\n\t\t\t\t\t<i class=\"fa fa-sort-up asc\"></i>\n\t\t\t\t\t} @else if (obterDirecaoOrdenacao(localColuna.prop) === 'desc') {\n\t\t\t\t\t<i class=\"fa fa-sort-down desc\"></i>\n\t\t\t\t\t}\n\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t<lib-grid-cell-handler class=\"table-item-mobile table-formated\" [class.odd]=\"i % 2 !== 0\" [class.even]=\"i % 2 === 0\"\n\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"localColuna\" [lista]=\"lista()!\" [config]=\"config()\"\n\t\t\t[localColunas]=\"colunasOrdenadas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t}\n\t</div>\n</div>\n}\n}\n} @empty {\n<!-- LINHA DE SEM DADOS -->\n<div class=\"table-styles\"><lib-grid-empty-list></lib-grid-empty-list></div>\n}\n<!-- MOBILE FIM -->\n\n\n} @else {\n<!-- DESKTOP INICIO -->\n<div #gridSize class=\"table-overflow\" [class.compacted]=\"isCompacted()\"\n\t[style.--table-min-height]=\"isCompacted() ? '40px' : minLineHeight()\">\n\t<div class=\"table-table\" [class.table-has-vertical-line]=\"hasVerticalLine()\" [class.table-has-seletor]=\"hasSeletor()\"\n\t\tcdkDropList (cdkDropListDropped)=\"onDropColuna($event)\" [cdkDropListData]=\"colunasExibir()\"\n\t\t[style.gridTemplateColumns]=\"`${this.pxVerticalLine()}${this.pxSelector()}` + this.pxColunas() + this.pxActions()\">\n\t\t<!-- DESKTOP HEADER -->\n\t\t<lib-grid-header-row [colunas]=\"colunasExibir()\" [ordenacoes]=\"ordenacoesSignal()\"\n\t\t\t[todosSelecionados]=\"todosSelecionados()\" [config]=\"config()\" [hasSeletor]=\"hasSeletor()\"\n\t\t\t[hasVerticalLine]=\"hasVerticalLine()\" [hasGrid]=\"hasGrid()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[isSelectingAll]=\"isSelectingAll()\" (columnSort)=\"alternarOrdenacao($event)\"\n\t\t\t(selectAll)=\"onChangeTodosSelecionados($event)\"\n\t\t\t(columnResizeStart)=\"onResizeStart($event.event, $any($event.coluna))\"\n\t\t\t(columnResizeDoubleClick)=\"onDoubleClickControls($event.event, $any($event.coluna))\">\n\t\t</lib-grid-header-row>\n\n\t\t<!-- DESKTOP LINHAS DE DADOS -->\n\t\t@for (dadosLinha of listaExibir(); track $index; let i = $index) {@if( dadosLinha.isColapsed !== true){\n\n\t\t@if(dadosLinha.isFullLine?.visible){\n\n\t\t<!-- DESKTOP FULL LINE (COLSPAN HORIZONTAL) -->\n\t\t@if(hasVerticalLine()){\n\t\t<!-- DESKTOP HEADER VERTICAL FULL LINE -->\n\t\t<div class=\"table-header table-formated table-vertical-line\">\n\t\t\t{{ dadosLinha.ordem }}\n\t\t</div>\n\t\t}\n\t\t<!-- DESKTOP GRUPO: ROW -->\n\t\t@if(dadosLinha.isGroup){\n\n\t\t<div class=\"table-row table-formated table-group table-border-bottom-card\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<div class=\"table-group-name\" [class.table-inativo]=\"dadosLinha.inativo\">\n\t\t\t\t<lib-grid-cell-handler class=\"table-item table-dados {{ colAgrupadoAtual()?.classeCell }}\"\n\t\t\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"colAgrupadoAtual()!\" [lista]=\"lista()!\" [config]=\"config()\"\n\t\t\t\t\t[localColunas]=\"colunasDefinidas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t\t</div>\n\t\t\t<ui-button tipo=\"nofill\" (click)=\"onClickGroup(dadosLinha)\">\n\t\t\t\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine?.colapsed === true\">\n\t\t\t\t\t{{ dadosLinha.isFullLine?.colapsedCount ?? 0 }} item(s)\n\t\t\t\t\t<div class=\"table-group-items-ico\">\n\t\t\t\t\t\t<i [class]=\"dadosLinha.isFullLine?.colapsed ? 'bi bi-caret-down-fill' : 'bi bi-caret-down'\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</ui-button>\n\t\t</div>\n\n\t\t} @else {\n\t\t<div class=\"table-row table-formated table-others\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\tNada a exibir nesta linha\n\t\t</div>\n\t\t}\n\n\t\t} @else {\n\n\t\t<!-- LINHA NORMAL via GridRowRenderer -->\n\t\t<lib-grid-row-renderer [dadosLinha]=\"dadosLinha\" [config]=\"config()\" [colunas]=\"colunasExibir()\"\n\t\t\t[colunasOrdenadas]=\"colunasOrdenadas()\" [lista]=\"lista()!\" [inputSearchText]=\"inputSearchText()\"\n\t\t\t[hasSeletor]=\"hasSeletor()\" [hasVerticalLine]=\"hasVerticalLine()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[hasGrid]=\"hasGrid()\" [rowIndex]=\"i\" (actionTriggered)=\"onClickCellAction($event)\"\n\t\t\t(rowClicked)=\"onClickRow($event)\" [lastRow]=\"$last\">\n\t\t</lib-grid-row-renderer>\n\n\t\t}}\n\n\t\t<!-- POSSIBILIDADES SEM DADOS -->\n\t\t} @empty {\n\n\t\t<!-- ERRO -->\n\t\t@if(config().hasError) {\n\t\t<div class=\"table-row table-formated table-errors\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridError]\"></ng-content>\n\t\t</div>\n\n\t\t<!-- LOADING -->\n\t\t} @else if(!config().isLoaded) {\n\t\t<div class=\"table-row table-formated table-loader\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridLoading]\"></ng-content>\n\t\t</div>\n\n\t\t} @else {\n\n\t\t<div class=\"table-row table-empty\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<lib-grid-empty-list></lib-grid-empty-list>\n\t\t</div>\n\t\t}\n\n\t\t}\n\n\t\t<!-- FIM DA LINHA NORMAL -->\n\n\n\t</div>\n</div>\n<!-- DESKTOP FIM -->\n}\n\n\n@if(config().showPagination){\n<lib-grid-pagination [paginacao]=\"paginacaoSignal()\" [totalPaginas]=\"totalPaginas()\" [performance]=\"performance()\"\n\t(pageChange)=\"irParaPagina($event)\">\n</lib-grid-pagination>\n}\n\n\n\n\n@if(config().showInfoBar){\n<!-- Informações de Ordenação -->\n@if (ordenacoesSignal().length > 0) {\n<div class=\"table-info-row table-styles\">\n\t@if (ordenacoesSignal().length > 0) {\n\t<div>Ordenado por: {{ getOrdenacaoTexto() }}</div>\n\t}\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClickClearInfo()\" icone=\"bi bi-x-lg\"></ui-button>\n</div>\n}\n<!-- Informações de Agrupamento -->\n@if (this.isAgrupado()) {\n<div class=\"table-info-row table-styles\">\n\t<i class=\"fa fa-object-group\"></i>\n\t<div class=\"flex flex-wrap gap-1 f-t-b\">\n\t\tAgrupado por {{ colAgrupadoAtual()?.titulo }} (há {{ gruposEncontrados.itens.size }} grupos)\n\t\t<div class=\"campoSemForm\">\n\t\t\t<ui-select [value]=\"colAgrupadoAtual()?.prop\" [options]=\"this.colunasKVDefinidas()\"\n\t\t\t\t(changed)=\"onChangedAgrupamento($event)\"></ui-select>\n\t\t</div>\n\n\t</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onRecolherGroups()\" icone=\"bi bi-arrows-collapse\">\n\t\tRecolher Todos\n\t</ui-button>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onExpandirGroups()\" icone=\"bi bi-arrows-expand\">\n\t\tExpandir Todos\n\t</ui-button>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClearGroups()\" icone=\"fa fa-object-ungroup\">\n\t\tDesagrupar\n\t</ui-button>\n</div>\n}\n}\n\n\n@if(devMode){\n<!-- MODO DESENVOLVIMENTO -->\n<div class=\"table-info-row table-styles\">\n\t<i class=\"fa fa-microscope\"></i>\n\t<div>Funções extras</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasGrid()\" (click)=\"onChangeHasGrid()\" icone='bi bi-grid-3x3'\n\t\ttitle=\"Grid\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"isCompacted()\" (click)=\"onChangeCompacted()\"\n\t\ticone='fa fa-arrows-to-circle' title=\"Compactar\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasVerticalLine()\" (click)=\"onChangeLineNumber()\"\n\t\ticone='bi bi-layout-sidebar' title=\"Linha Vertical\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasSeletor()\" (click)=\"onChangeSeletor()\" icone='fa fa-check-double'\n\t\ttitle=\"Seletor\"></ui-button>\n</div>\n}","import { Component, effect, Inject, Optional, signal, WritableSignal } from '@angular/core';\nimport { GRID_PARAMS_TOKEN, IGridParam, IMkCellService } from '../mk-grid.types';\n\n@Component({\n selector: 'lib-grid-cell',\n template: '',\n})\nexport class GridCell {\n\n protected params: WritableSignal<IGridParam<any> | undefined>;\n _masterCellService?: IMkCellService;\n\n constructor(\n @Optional() @Inject(GRID_PARAMS_TOKEN) inputToken: IGridParam<any> | null,\n @Optional() @Inject('GRID_PARAMS') legacyInput: IGridParam<any> | null\n ) {\n const input = inputToken ?? legacyInput ?? undefined;\n this.params = signal<IGridParam<any> | undefined>(input);\n this._masterCellService = input?.servicoParams;\n if (this._masterCellService) {\n effect(() => { this.params.set(this._masterCellService?.gridParams() ?? input) });\n }\n }\n}\n","// Exportar primeiro os tipos\nexport type { IKV, IKV_ext, IFileMetadata, ITipoBotao, ITiposTema, IDropZoneEvent, IDropType, IDropOutput, IUiProgressMode } from './interfaces/interfaces';\n\n// Tipos mais específicos, enuns, interfaces e funções uteis.\nexport * from './util/util';\nexport * from './fields/Formulario/Formulario';\n\n// Exportar as base\nexport * from './fields/Base/BaseFieldsValues/BaseFieldsValues';\nexport * from './fields/Base/BaseFieldsForm/BaseFieldsForm.component';\n\n// Exportar componentes individuais (elementos)\nexport * from './elements/ui-button/ui-button';\nexport * from './elements/ui-chip/ui-chip';\nexport * from './elements/ui-drop-zone/ui-drop-zone';\nexport * from './elements/ui-file-list/ui-file-list';\nexport * from './elements/ui-select/ui-select';\nexport * from './elements/ui-procurar/ui-procurar';\nexport * from './elements/ui-progress/ui-progress';\nexport * from './elements/ui-slide/ui-slide';\nexport * from './elements/ui-check-box/ui-check-box';\nexport * from './elements/ui-list-errors/ui-list-errors';\nexport * from './elements/ui-loading/ui-loading';\nexport * from './elements/ui-menu/ui-menu';\n\n\n\n// Os componente de campo não são exportados. Utilize FormAction, ou similar, com os campos pré configurados.\n\n// Exportar componentes de formulário\nexport * from './fields/Formulario/form-filter/form-filter';\nexport * from './fields/Formulario/form-action/form-action';\nexport * from './fields/Formulario/form-no-action/form-no-action';\nexport * from './fields/Formulario/formated-values/formated-values';\nexport * from './fields/Formulario/single-values/single-values';\n\n// Exportar generic por último (depende de todos os outros)\nexport * from './fields/generic/generic';\n\n\n// GRID (exportar por último por depender de outros componentes)\nexport * from './mk-grid/mk-grid.types';\nexport * from './mk-grid/mk-grid';\nexport * from './mk-grid/grid-cell/grid-cell'; // Permite extender classe com signal de params","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PROP_CONTROLE_ATIVO"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"masterkeymaterial-ui.mjs","sources":["../../../projects/master-key-material/src/util/log.ts","../../../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/mk-grid/mk-grid.types.ts","../../../projects/master-key-material/src/mk-grid/grid-cell/grid-cell.service.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-handler/grid-cell-handler.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-handler/grid-cell-handler.html","../../../projects/master-key-material/src/mk-grid/grid-cell-actions/grid-cell-actions.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-actions/grid-cell-actions.html","../../../projects/master-key-material/src/mk-grid/grid-row-renderer/grid-row-renderer.ts","../../../projects/master-key-material/src/mk-grid/grid-row-renderer/grid-row-renderer.html","../../../projects/master-key-material/src/mk-grid/grid-header-row/grid-header-row.ts","../../../projects/master-key-material/src/mk-grid/grid-header-row/grid-header-row.html","../../../projects/master-key-material/src/mk-grid/grid-pagination/grid-pagination.ts","../../../projects/master-key-material/src/mk-grid/grid-pagination/grid-pagination.html","../../../projects/master-key-material/src/mk-grid/grid-filter-bar/grid-filter-bar.ts","../../../projects/master-key-material/src/mk-grid/grid-filter-bar/grid-filter-bar.html","../../../projects/master-key-material/src/mk-grid/grid-empty-list/grid-empty-list.ts","../../../projects/master-key-material/src/mk-grid/grid-empty-list/grid-empty-list.html","../../../projects/master-key-material/src/mk-grid/mk-grid.ts","../../../projects/master-key-material/src/mk-grid/mk-grid.html","../../../projects/master-key-material/src/mk-grid/grid-cell/grid-cell.ts","../../../projects/master-key-material/src/public-api.ts","../../../projects/master-key-material/src/masterkeymaterial-ui.ts"],"sourcesContent":["\n////////////////////////////////////\n// CONSOLES: LOG - WARN - ERR ...\n////////////////////////////////////\n// LibUtil.loglevel: 1,2,3 => Bigger will see more\n\nlet loglevel = 0;\n\nexport const setLogLevel = (level: number) => {\n\tloglevel = level;\n}\n\nexport const LOG = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.log(...attr);\n\t}\n}\n\n// export const WARN = (level: number, ...attr: any) => {\n// if ((loglevel ?? 0) >= level) {\n// return console.warn(...attr);\n// }\n// }\n\n// export const ERR = (level: number, ...attr: any) => {\n// if ((loglevel ?? 0) >= level) {\n// return console.error(...attr);\n// }\n// }\n\nexport const G_START = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.groupCollapsed(...attr);\n\t}\n}\n\nexport const G_START_OPEN = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.group(...attr);\n\t}\n}\n\nexport const G_END = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.groupEnd();\n\t}\n}\n\n// LOG COLAPSADO\nexport const LOGC = (level: number, title: string, ...attr: any) => {\n\tG_START(level, title);\n\tLOG(level, ...attr);\n\tG_END(level);\n}","import { WritableSignal } from \"@angular/core\";\nimport { IFieldComponent } from \"../fields/Formulario/Formulario\";\nimport { G_END, G_START, LOG } from \"./log\";\n\nexport class LibUtil {\n\n static formConfigs: Partial<IFieldComponent<any>> = {};\n\n static classof = (o: any): IClassOf => {\n let nomeClasse = Object.prototype.toString.call(o).slice(8, -1).toLowerCase();\n if (nomeClasse == \"number\") {\n if (o.toString() == \"NaN\") {\n nomeClasse = \"nan\";\n }\n }\n return nomeClasse as IClassOf;\n };\n\n static wait = (ms: number) => {\n // Essa mecânica usa um setTimeout. A mecânica do Queue não foi implementada\n return new Promise(r => setTimeout(r, ms))\n };\n\n static clonar = (i: any) => {\n // Clona com a técnica de montar e desmontar string.\n // Não funciona para objetos com serviços (Date, File, Map, Set, etc)\n let parsed = null;\n try {\n let stringified = JSON.stringify(i);\n if (stringified == null) return null;\n if (stringified == \"\") return \"\";\n parsed = JSON.parse(stringified);\n if (parsed == null) return null;\n } catch (e) {\n return null;\n }\n return parsed;\n };\n\n static limparObject = (o: any) => {\n // Converte (Object) Limpar Nulos e Vazios\n if (LibUtil.classof(o) == \"object\") {\n for (let propName in o) {\n if (\n o[propName as keyof typeof o] === null ||\n o[propName as keyof typeof o] === undefined ||\n o[propName as keyof typeof o] === \"\" ||\n o[propName as keyof typeof o] === \"undefined\"\n ) {\n delete o[propName as keyof typeof o];\n }\n }\n }\n return o;\n };\n\n static mascarar = (texto: any, mascara: any): string | undefined => {\n // Informando uma máscara e um texto, retorna dado mascarado.\n // Mascaras: 0=Numero, A=Letra, Outros repete.\n if (LibUtil.classof(mascara) != \"string\") {\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.\n if (LibUtil.classof(mascara) == \"function\") {\n mascara = mascara(texto); // Sobreextreve a mascara a ser executada pelo retorno da função.\n }\n }\n if (mascara) {\n if (texto) {\n if (LibUtil.classof(texto) != \"string\") texto = texto?.toString();\n if (LibUtil.classof(mascara) != \"string\") mascara = mascara?.toString(); // Se a chegar até aqui e ainda não for string\n let ms = [...LibUtil.clonar(mascara)];\n let ss = [...LibUtil.clonar(texto)];\n // this.l(\"ss: \", ss);\n let ts: any = [];\n let pm = 0;\n ss.forEach(s => {\n let t = null;\n if (/[0-9]/.test(s)) {\n t = \"0\";\n } else if (/[a-zA-Z]/.test(s)) {\n t = \"A\";\n } else {\n t = \" \";\n }\n ts.push(t);\n pm++;\n });\n // this.l(\"ts: \", ts);\n // this.l(\"ms: \", ms);\n let r: any = [];\n for (let tp = 0, mp = 0; (tp < ts.length) && (mp < ms.length); tp++, mp++) {\n if (((ms[mp] === \"0\" || ms[mp] === \"A\") && (ms[mp] == ts[tp]))\n || (ms[mp] === \"S\" && (ts[tp] === \"A\" || ts[tp] === \"0\"))) {\n // FORMATO IGUAL.\n r.push(ss[tp]);\n } else {\n // MESMO CARACTER\n if (ss[tp] === ms[mp]) {\n r.push(ss[tp]);\n } else {\n // this.l(\"> \", ss[tp], \" vs \", ms[mp])\n // Mágica: Coloca o especial que o usuário não colocou.\n if (ms[mp] != \"0\" && ms[mp] != \"A\" && ms[mp] != \"S\") {\n r.push(ms[mp]);\n tp--;\n } else {\n mp--;\n }\n }\n }\n }\n return r.join(\"\");\n }\n } else {\n console.log(\"❌ Mascarar Requer Texto: \", texto, \" e Mascara: \", mascara);\n }\n return undefined;\n };\n\n static tryParseJSON(val: any): any[] | null {\n try {\n return JSON.parse(val);\n } catch (e) {\n return null;\n }\n }\n\n static contem = (strMaior: string, strMenor: string): boolean => {\n // Comparardor de string CONTEM\n strMaior = LibUtil.removeAcentos(strMaior).toLowerCase();\n strMenor = LibUtil.removeAcentos(strMenor).toLowerCase();\n return (strMaior.includes(strMenor));\n };\n\n static removeAcentos = (s: string): string => {\n if (s == null) return \"\";\n // Remove acentos e depois chama Apenas Números e Letras.\n s = s.toString();\n let r = \"\";\n let sS = \"áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ\";\n let sN = \"aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC\";\n for (let p = 0; p < s.length; p++) {\n let pSS = sS.indexOf(s.charAt(p)); // <= Procura\n if (pSS != -1) {\n r += sN.charAt(pSS); // Substitui mesma posicao\n } else {\n r += s.charAt(p);\n }\n }\n return r;\n };\n\n static fileReader = async (arquivo: File, eventos?: Function): Promise<string | null> => {\n return new Promise((r) => {\n let leitor = new FileReader();\n let gatilhos = (event: any) => {\n if (event.type == \"error\") {\n r(null);\n }\n else if (event.type == \"loadend\") {\n // Quando terminar, o result já é a string completa.\n let buffer = leitor.result as string;\n r(buffer);\n }\n if (eventos)\n eventos(event, Math.trunc((event.loaded / event.total) * 100));\n }\n if (arquivo) {\n if (arquivo.name != \"\") {\n leitor.addEventListener(\"loadstart\", gatilhos);\n leitor.addEventListener(\"progress\", gatilhos);\n leitor.addEventListener(\"error\", gatilhos);\n leitor.addEventListener(\"abort\", gatilhos);\n leitor.addEventListener(\"load\", gatilhos);\n leitor.addEventListener(\"loadend\", gatilhos);\n leitor.readAsDataURL(arquivo);\n }\n else {\n LOG(1, \"⚠️ fileReader() - Nome do arquivo necessário: \", arquivo.name);\n r(null);\n }\n } else {\n LOG(1, \"⚠️ fileReader() - Arquivo Nulo: \", arquivo);\n r(null);\n }\n });\n };\n\n static removeHtmlTags(texto: string): string {\n return texto.replace(/<\\/?[^>]+(>|$)/g, \"\");\n }\n\n // Salva a posição do cursor\n static saveCursorPosition(element: any, plus: number = 0): { start: number; end: number, plus: number } | null {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return null;\n const range = selection.getRangeAt(0);\n const preCaretRange = range.cloneRange();\n if (!element) return null;\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.startContainer, range.startOffset);\n const start = preCaretRange.toString().length;\n return {\n start: start,\n end: start + range.toString().length,\n plus\n };\n }\n\n // Restaura a posição do cursor\n static restoreCursorPosition(element: any, position: { start: number; end: number, plus: number }) {\n if (!element) return;\n const selection = window.getSelection();\n if (!selection) return;\n let charIndex = 0;\n const range = document.createRange();\n range.setStart(element, 0);\n range.collapse(true);\n const nodeIterator = (node: Node): boolean => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textNode = node as Text;\n const nextCharIndex = charIndex + (textNode.length || 0);\n if (position.start >= charIndex && position.start <= nextCharIndex) {\n range.setStart(textNode, position.start - charIndex);\n range.setEnd(textNode, position.start - charIndex);\n return true;\n }\n charIndex = nextCharIndex;\n } else {\n for (let i = 0; i < node.childNodes.length; i++) {\n if (nodeIterator(node.childNodes[i])) {\n return true;\n }\n }\n }\n return false;\n };\n nodeIterator(element);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n\n static formatJson(texto: string, colorir: boolean = false): string {\n let retorno = \"\";\n try {\n retorno = JSON.stringify(texto, null, 2);\n } catch (e) {\n LOG(1, \"⚠️ JSON Inválido: Não foi possível formatar o JSON.\");\n return texto;\n }\n\n if (colorir) {\n let keyNameStart: string = '<span class=\"json-key\">';\n let nullStart: string = '<span class=\"json-null\">';\n let numberStart: string = '<span class=\"json-number\">';\n let booleanStart: string = '<span class=\"json-boolean\">';\n let stringStart: string = '<span class=\"json-string\">';\n let spanEnd: string = '</span>';\n // Identificar a posição das chaves do json e adicionar as tags de span\n retorno = retorno.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n retorno = retorno.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g, function (match) {\n let cls = nullStart;\n if (/^\"/.test(match)) {\n if (/:$/.test(match)) {\n cls = keyNameStart;\n } else {\n cls = stringStart;\n }\n } else if (/true|false/.test(match)) {\n cls = booleanStart;\n } else if (/null/.test(match)) {\n cls = nullStart;\n } else if (/undefined/.test(match)) {\n cls = nullStart;\n } else {\n cls = numberStart;\n }\n return cls + match + spanEnd;\n });\n }\n\n // Remove aspas duplas das chaves (mantém aspas dos valores string)\n retorno = retorno.replace(/\"([^\"]+)\"(\\s*):/g, '$1$2:');\n\n return retorno;\n }\n\n static async copy(content: string): Promise<void> {\n try {\n await this.copyHtml(content);\n } catch (erro) {\n LOG(1, \"❌ %cFalha ao copiar como HTML, tentando como texto puro\", \"color:red;\", erro);\n this.copyPlainText(content);\n }\n }\n\n private static copyPlainText(text: string) {\n const elemento = document.createElement('textarea');\n elemento.style.position = 'fixed';\n elemento.style.opacity = '0';\n elemento.style.whiteSpace = 'pre';\n elemento.value = text;\n document.body.appendChild(elemento);\n elemento.select();\n elemento.setSelectionRange(0, 99999);\n const result = document.execCommand('copy');\n if (!result) {\n LOG(1, \"❌ Falha ao copiar via execCommand.\");\n }\n LOG(1, \"🫤! Cópia via execCommand: \", text);\n elemento.remove();\n }\n\n private static async copyHtml(html?: string) {\n if (!html) {\n html = \"\";\n LOG(1, \"❌ %cNão foi possível copiar.\", \"color:red;\");\n return;\n }\n try {\n // Remove tags HTML para gerar a versão texto puro\n const plainText = this.stripHtmlTags(html);\n if (navigator.clipboard && window.isSecureContext) {\n const clipboardItem = new ClipboardItem({\n 'text/plain': new Blob([plainText], { type: 'text/plain' }),\n 'text/html': new Blob([html], { type: 'text/html' })\n });\n await navigator.clipboard.write([clipboardItem]);\n console.groupCollapsed(\"✅ %cCopiado para a área de transferência.\", \"color:aquamarine;\");\n LOG(1, plainText);\n console.groupEnd();\n return;\n }\n\n // Fallback: copia HTML usando execCommand\n const elemento = document.createElement('div');\n elemento.style.position = 'fixed';\n elemento.style.opacity = '0';\n elemento.innerHTML = html;\n document.body.appendChild(elemento);\n\n const range = document.createRange();\n range.selectNodeContents(elemento);\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n\n document.execCommand('copy');\n console.groupCollapsed(\"➡️ %cCopiado para a área de transferência. (execCommand)\", \"color:lightblue;\");\n LOG(1, plainText);\n console.groupEnd();\n elemento.remove();\n } catch (erro) {\n LOG(1, \"❌ Erro ao copiar:\", erro);\n throw erro;\n }\n }\n\n private static stripHtmlTags(html: string): string {\n // Cria um elemento temporário para extrair texto puro\n const temp = document.createElement('div');\n temp.innerHTML = html;\n // Substitui <br> por quebras de linha antes de extrair o texto\n temp.innerHTML = temp.innerHTML.replace(/<br\\s*\\/?>/gi, '\\n');\n return temp.textContent || temp.innerText || '';\n }\n\n static apenasNumeros = (s: string | number = \"\"): string => {\n if (s == null) return \"\";\n // Ignora qualquer outro caracter além de Numeros\n return s.toString().replace(/(?![0-9])./g, \"\");\n }\n\n static frequencia = (array: any): any => {\n // Retorna o total de encontro na array.\n // Quando é objeto converte pra string pra poder contar\n let f: any = {};\n for (let e of array) {\n let s = e;\n if (LibUtil.classof(e) == \"object\") s = JSON.stringify(e);\n f[s] ? f[s]++ : (f[s] = 1);\n }\n return f;\n }\n\n static formats: IUtilFormatters = {\n cpf: {\n mask: \"000.000.000-00\",\n regex: \"^([0-9]{3}([\\.]?[0-9]{3}){2}[-]?[0-9]{2})$\",\n validate: (cpf: any) => {\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cpf) { return false; }\n cpf = LibUtil.apenasNumeros(cpf);\n if (cpf.length != 11) { return false; }\n let temp = cpf.slice(0, 9);\n let c = 0;\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n if (cpf.charAt(10) != r.toString()) {\n return false;\n };\n let char0 = cpf.charAt(0);\n let repChar0 = LibUtil.frequencia(cpf)[char0];\n if (repChar0 >= 11) {\n return false;\n }\n return true;\n }\n },\n cnpj: {\n mask: \"00.000.000/0000-00\",\n regex: \"^([0-9]{2}([\\.]?[0-9]{3}){2}[\\/]?[0-9]{4}[-]?[0-9]{2})$\",\n validate: (cnpj: any) => {\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cnpj) { return false; }\n cnpj = LibUtil.apenasNumeros(cnpj);\n if (cnpj.length != 14) { return false; }\n let temp = cnpj.slice(0, 12);\n let c = 0;\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n return cnpj.charAt(13) == r.toString();\n }\n },\n cpf_cnpj: {\n mask: (str: string) => {\n if (LibUtil.apenasNumeros(str).length <= 11) {\n return \"000.000.000-00\"\n } else {\n return \"00.000.000/0000-00\"\n };\n },\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})$\",\n validate: (cpf_cnpj: any) => {\n if (LibUtil.apenasNumeros(cpf_cnpj).length <= 11) {\n return LibUtil.formats.cpf.validate?.(cpf_cnpj) ?? false;\n } else {\n return LibUtil.formats.cnpj.validate?.(cpf_cnpj) ?? false;\n };\n }\n },\n cnh: {\n mask: \"00000000000\",\n regex: \"^([0-9]{11})$\",\n validate: (cnh: any) => {\n if (!cnh) { return false; }\n cnh = LibUtil.apenasNumeros(cnh);\n if (cnh.length != 11) { return false; }\n return true;\n },\n },\n pis: {\n mask: \"000.00000.00-0\",\n regex: \"^([0-9]{3}[\\.]?[0-9]{5}[\\.]?[0-9]{2}[-]?[0-9]{1})$\",\n validate: (pis: any) => {\n if (!pis) { return false; }\n pis = LibUtil.apenasNumeros(pis);\n if (pis.length != 11) { return false; }\n return true;\n },\n },\n dia: {\n mask: \"00\",\n regex: \"^(0[1-9]|[1-9]|[1-2][0-9]|3[0-1])$\",\n validate: (dia: any) => {\n if (!dia) { return false; }\n dia = LibUtil.apenasNumeros(dia);\n let diaNum = Number(dia);\n return diaNum >= 1 && diaNum <= 31;\n },\n },\n mes: {\n mask: \"00\",\n regex: \"^(0[1-9]|1[0-2])$\",\n validate: (mes: any) => {\n if (!mes) { return false; }\n mes = LibUtil.apenasNumeros(mes);\n let mesNum = Number(mes);\n return mesNum >= 1 && mesNum <= 12;\n },\n },\n ano: {\n mask: \"0000\",\n regex: \"^([0-2]?([0-9]){3})$\",\n validate: (ano: any) => {\n if (!ano) { return false; }\n ano = LibUtil.apenasNumeros(ano);\n let anoNum = Number(ano);\n return anoNum >= 1000 && anoNum <= 2999;\n },\n },\n anoRecente: {\n mask: \"0000\",\n regex: \"^(19([0-9]){2})|(20([0-9]){2})|(21([0-9]){2})$\",\n validate: (anoRecente: any) => {\n if (!anoRecente) { return false; }\n anoRecente = LibUtil.apenasNumeros(anoRecente);\n let anoNum = Number(anoRecente);\n return anoNum >= 1900 && anoNum <= 2199;\n },\n },\n data: {\n mask: \"0000-00-00\",\n regex: \"^([0-9]{4}(-[0-9]{2}){2})$\",\n validate: (data: any) => {\n if (!data) { return false; }\n data = LibUtil.apenasNumeros(data);\n return new RegExp(LibUtil.formats.data.regex).test(data);\n },\n },\n dataIso: {\n mask: \"0000-00-00T00:00:00.000Z\",\n regex: \"^([0-9]{4}(-[0-9]{2}){2}T[0-9]{2}(:[0-9]{2}){2}\\.[0-9]{3}Z)$\",\n validate: (dataIso: any) => {\n if (!dataIso) { return false; }\n dataIso = LibUtil.apenasNumeros(dataIso);\n return new RegExp(LibUtil.formats.dataIso.regex).test(dataIso);\n },\n },\n numero: {\n mask: \"#0\",\n regex: \"^[0-9]*$\",\n validate: (numero: any) => {\n if (!numero) { return false; }\n numero = LibUtil.apenasNumeros(numero);\n return numero.length > 0;\n },\n },\n decimal: {\n mask: \"#0,00\",\n regex: \"^[0-9,]*$\",\n validate: (decimal: any) => {\n if (!decimal) { return false; }\n return new RegExp(LibUtil.formats.decimal.regex).test(decimal);\n },\n },\n letra: {\n mask: \"A\",\n regex: \"^[A-Za-z]*$\",\n validate: (letra: any) => {\n if (!letra) { return false; }\n return new RegExp(LibUtil.formats.letra.regex).test(letra);\n },\n },\n numeroELetra: {\n mask: \"S\",\n regex: \"^[A-Za-z0-9]*$\",\n validate: (numeroELetra: any) => {\n if (!numeroELetra) { return false; }\n return new RegExp(LibUtil.formats.numeroELetra.regex).test(numeroELetra);\n }\n },\n ip: {\n mask: \"000.000.000.000\",\n regex: \"^([0-2]?[0-9]?[0-9]([\\.][0-2]?[0-9]?[0-9]){3})$\",\n validate: (ip: any) => {\n if (!ip) { return false; }\n const regex = new RegExp(LibUtil.formats.ip.regex);\n if (!regex.test(ip)) { return false; }\n const parts = ip.split('.').map(Number);\n return parts.every((part: number) => part >= 0 && part <= 255);\n }\n },\n email: {\n mask: \"S\",\n regex: \"^(([a-zA-Z0-9_+-\\.]+)+)@([a-zA-Z0-9_+-\\.]+\\.[a-zA-Z]+)+$\",\n validate: (email: any) => {\n if (!email) { return false; }\n return new RegExp(LibUtil.formats.email.regex).test(email);\n }\n },\n cep: {\n mask: \"00000-000\",\n regex: \"^([0-9]{5}[-]?[0-9]{3})$\",\n validate: (cep: any) => {\n if (!cep) { return false; }\n cep = LibUtil.apenasNumeros(cep);\n return new RegExp(LibUtil.formats.cep.regex).test(cep);\n }\n }\n }\n\n static stringToDataBR = (data: string | null | undefined): string | null => {\n let resultado = null;\n if (LibUtil.classof(data) == \"null\" || LibUtil.classof(data) == \"undefined\") {\n return null;\n } else if (LibUtil.classof(data) == \"string\") {\n // Quando a data é \"YYYY-MM-DD\", ascrescenta 1 espaço para UTC.\n if (new RegExp(\"^[12][0-9]{3}[-][0-1][0-9][-][0-3][0-9]$\").test(data!)) {\n data += \" \";\n }\n // Tentativa Direta:\n resultado = new Date(data!).toLocaleString().replace(\",\", \"\");\n\n // Falhando, tenta converter pra número.\n if (resultado.toUpperCase() == \"INVALID DATE\") {\n resultado = new Date(Number(data)).toLocaleString().replace(\",\", \"\");\n\n // Agora tenta ver se a data inicia no formato br já\n if (resultado.toUpperCase() == \"INVALID DATE\") {\n // DD/MM/YYYY ?\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data!)) {\n resultado = new Date(LibUtil.dataToIsoData(data!)).toLocaleString().replace(\",\", \"\");\n }\n }\n }\n } else {\n LOG(1, \"❌ stringToDataBR(): A data precisa ser formato string: \", data, LibUtil.classof(data));\n }\n return resultado;\n }\n\n // ISO 8601 (Padrão Internacional)\n static dataToIsoData = (data: string): string => {\n // Converter de DD/MM/YYYY para YYYY-MM-DD\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\n\n }\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\n let novaData = data.slice(6, 10) + \"-\" + data.slice(3, 5) + \"-\" + data.slice(0, 2);\n let resto = data.slice(10, data.length);\n if (resto != \"\" && new RegExp(\"^ [0-2][0-9]:[0-5][0-9]:[0-5][0-9]\").test(resto)) {\n novaData += resto;\n }\n return novaData;\n }\n return data; // < Se falhar\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // ============================ SIGNALS DIRETO => CRUD E UTEIS ============================ \\\\\n\n // SET (SIGNAL)\n static sinalSet<T>(sinal: WritableSignal<any | undefined>, item: Partial<T>) {\n sinal.update(i => {\n if (!i) return item;\n return { ...i, ...item };\n });\n }\n\n // CREATE (SIGNAL)\n static sinalCreate<T>(sinal: WritableSignal<any[] | undefined>, item: T) {\n sinal.update(i => {\n if (!i) return [item];\n return [...i, item];\n });\n }\n\n // UPDATE (SIGNAL)\n static sinalUpdate<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, k: string, v?: string) {\n if (v != null && item) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => o[k as keyof T] === v ? { ...o, ...item } : o);\n });\n } else {\n if (v == null) {\n // PATCH UPDATE\n let value = item[k as keyof T];\n if (value != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => o[k as keyof T] === value ? { ...o, ...item } : o);\n });\n } else {\n LOG(1, `⚠️ sinalUpdate: A chave ${k} está nula. Passe o V desta chave para atualizar.`);\n }\n } else {\n LOG(1, `❌ Item ${k} chegou nulo para Update.`);\n }\n }\n }\n\n // DELETE (SIGNAL)\n static sinalDelete<T>(sinal: WritableSignal<any[] | undefined>, k: string, v?: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.filter((o: T) => o[k as keyof T] !== v);\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete.`);\n }\n }\n\n // CLEAR (SIGNAL)\n static sinalClear<T>(sinal: WritableSignal<any[] | undefined>) {\n sinal.set(undefined);\n }\n\n // EXISTS (SIGNAL) - Verifica se um item existe na lista\n static sinalExists<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string): boolean {\n if (v != null) {\n const items = sinal();\n if (!items) return false;\n return items.some((o: T) => o[k] === v);\n } else {\n return false;\n }\n }\n\n\n // MOVE UP (SIGNAL) - Move um item uma posição para cima\n static sinalMoveUp<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n const index = i.findIndex((o: T) => o[k] === v);\n if (index <= 0) return i; // Já está no topo ou não encontrado\n\n const newArray = [...i];\n [newArray[index - 1], newArray[index]] = [newArray[index], newArray[index - 1]];\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp.`);\n }\n }\n\n // MOVE DOWN (SIGNAL) - Move um item uma posição para baixo\n static sinalMoveDown<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n\n const index = i.findIndex((o: T) => o[k] === v);\n if (index < 0 || index >= i.length - 1) return i; // Já está no final ou não encontrado\n\n const newArray = [...i];\n [newArray[index], newArray[index + 1]] = [newArray[index + 1], newArray[index]];\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown.`);\n }\n }\n\n // MOVE TO INDEX (SIGNAL) - Move um item para uma posição específica\n static sinalMoveToIndex<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string, targetIndex: number) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n const currentIndex = i.findIndex((o: T) => o[k] === v);\n if (currentIndex < 0 || targetIndex < 0 || targetIndex >= i.length || currentIndex === targetIndex) {\n return i; // Item não encontrado, índice inválido ou já está na posição\n }\n const newArray = [...i];\n const [movedItem] = newArray.splice(currentIndex, 1);\n newArray.splice(targetIndex, 0, movedItem);\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveToIndex.`);\n }\n }\n\n static FlatRecursivo<T>(lista: T[], keyRecursive: keyof T): T[] {\n if (LibUtil.classof(lista) != \"array\") return [];\n\n let novaArray: T[] = [];\n lista.map(objeto => {\n if (LibUtil.classof(objeto) != \"object\") return;\n let novoObjeto: T = {} as T;\n for (let prop in objeto) {\n if (prop != keyRecursive) novoObjeto[prop] = objeto[prop];\n }\n novaArray = [...novaArray, novoObjeto];\n let children = objeto[keyRecursive] as T[];\n if (children != null) {\n novaArray = [...novaArray, ...LibUtil.FlatRecursivo(children, keyRecursive)];\n }\n })\n return novaArray;\n }\n\n // ============================ SIGNALS RECURSIVO => CRUD E UTEIS ============================ \\\\\n\n // Adiciona um novo item em uma estrutura hierárquica baseado na chave pai\n // CREATE RECURSIVE (SIGNAL)\n static sinalCreateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai?: string) {\n sinal.update(i => {\n if (!i) return [item];\n if (valuePai != null) {\n return i.map((o: T) => {\n return LibUtil._recursiveCreate<T>(o, item, keyRecursive, keyPai, valuePai);\n });\n } else {\n // Sem Pai inserir direto na raiz\n return [...i, item];\n }\n });\n }\n\n // Encontra o item pai pela chave e adiciona o novo item no array de filhos\n static _recursiveCreate<T>(atual: T, novo: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai: string): T {\n if (atual[keyPai] === valuePai) {\n // Encontrou o pai, adiciona o item no array recursivo\n if (atual[keyRecursive] == null) {\n (atual[keyRecursive] as T[]) = [novo];\n } else {\n (atual[keyRecursive] as T[]) = [...(atual[keyRecursive] as T[]), novo];\n }\n return atual;\n }\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map(child => {\n return LibUtil._recursiveCreate(child, novo, keyRecursive, keyPai, valuePai);\n })\n ];\n return atual;\n }\n\n // Atualiza um item específico em uma estrutura hierárquica\n // UPDATE RECURSIVE (SIGNAL)\n static sinalUpdateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => {\n return LibUtil._recursiveUpdate<T>(o, item, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Update Recursivo.`);\n }\n }\n\n // Encontra o item pela chave e atualiza suas propriedades\n static _recursiveUpdate<T>(atual: T, novo: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n if (atual[k] === v) {\n LOG(1, \"Editado\", { ...atual, ...novo })\n return { ...atual, ...novo };\n }\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map(child => {\n return LibUtil._recursiveUpdate(child, novo, keyRecursive, k, v);\n })\n ];\n return atual;\n }\n\n // Remove um item específico de uma estrutura hierárquica\n // DELETE RECURSIVE (SIGNAL)\n static sinalDeleteRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n // Primeiro verifica se precisa deletar no nível raiz\n const filteredRoot = i.filter((o: T) => o[k] !== v);\n // Se encontrou e removeu no nível raiz, retorna o array filtrado\n if (filteredRoot.length !== i.length) {\n return filteredRoot;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveDelete<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete Recursivo.`);\n }\n }\n // Encontra e remove o item pela chave, filtrando do array de filhos\n static _recursiveDelete<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n // Se tem filhos, processa os filhos\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Remove o item dos filhos se existir e processa recursivamente os filhos restantes\n const filteredChildren = children\n .filter(child => child[k] !== v)\n .map(child => LibUtil._recursiveDelete(child, keyRecursive, k, v));\n return { ...atual, [keyRecursive]: filteredChildren };\n }\n return atual;\n }\n\n // EXISTS RECURSIVE (SIGNAL) - Verifica se um item existe em uma estrutura hierárquica\n static sinalExistsRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\n if (v != null) {\n const items = sinal();\n if (!items) return false;\n return items.some((o: T) => {\n return LibUtil._recursiveExists<T>(o, keyRecursive, k, v);\n });\n } else {\n return false;\n }\n }\n\n // Função auxiliar para busca recursiva\n static _recursiveExists<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\n // Verifica se o item atual é o que estamos procurando\n if (atual[k] === v) return true;\n // Se tem filhos, procura recursivamente\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n return children.some(child => LibUtil._recursiveExists(child, keyRecursive, k, v));\n }\n return false;\n }\n\n // Move um item uma posição para cima na hierarquia\n // MOVE UP RECURSIVE (SIGNAL) - Para estruturas hierárquicas\n static sinalMoveUpRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n // Primeiro verifica se precisa mover no nível raiz\n const rootIndex = i.findIndex((o: T) => o[k] === v);\n if (rootIndex > 0) {\n const newArray = [...i];\n [newArray[rootIndex - 1], newArray[rootIndex]] = [newArray[rootIndex], newArray[rootIndex - 1]];\n return newArray;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveMoveUp<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp Recursivo.`);\n }\n }\n\n // Encontra o item e troca sua posição com o anterior no array\n static _recursiveMoveUp<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n // Se tem filhos, processa os filhos primeiro\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Verifica se precisa mover dentro dos filhos\n const targetIndex = children.findIndex(child => child[k] === v);\n if (targetIndex > 0) {\n const newChildren = [...children];\n [newChildren[targetIndex - 1], newChildren[targetIndex]] = [newChildren[targetIndex], newChildren[targetIndex - 1]];\n return { ...atual, [keyRecursive]: newChildren };\n }\n // Se não encontrou, processa recursivamente os filhos\n const processedChildren = children.map(child =>\n LibUtil._recursiveMoveUp(child, keyRecursive, k, v)\n );\n return { ...atual, [keyRecursive]: processedChildren };\n }\n return atual;\n }\n\n // Move um item uma posição para baixo na hierarquia\n // MOVE DOWN RECURSIVE (SIGNAL) - Para estruturas hierárquicas\n static sinalMoveDownRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n // Primeiro verifica se precisa mover no nível raiz\n const rootIndex = i.findIndex((o: T) => o[k] === v);\n if (rootIndex >= 0 && rootIndex < i.length - 1) {\n const newArray = [...i];\n [newArray[rootIndex], newArray[rootIndex + 1]] = [newArray[rootIndex + 1], newArray[rootIndex]];\n return newArray;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveMoveDown<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown Recursivo.`);\n }\n }\n\n // Encontra o item e troca sua posição com o próximo no array\n static _recursiveMoveDown<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Verifica se precisa mover dentro dos filhos\n const targetIndex = children.findIndex(child => child[k] === v);\n if (targetIndex >= 0 && targetIndex < children.length - 1) {\n const newChildren = [...children];\n [newChildren[targetIndex], newChildren[targetIndex + 1]] = [newChildren[targetIndex + 1], newChildren[targetIndex]];\n return { ...atual, [keyRecursive]: newChildren };\n }\n // Se não encontrou, processa recursivamente os filhos\n const processedChildren = children.map(child =>\n LibUtil._recursiveMoveDown(child, keyRecursive, k, v)\n );\n return { ...atual, [keyRecursive]: processedChildren };\n }\n return atual;\n }\n\n static sinalSetOrderRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T, i) => {\n return LibUtil._recursiveSetOrder<T>(o, keyRecursive, k, propOrder, i);\n });\n });\n }\n\n static _recursiveSetOrder<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T, index: number): T {\n atual = { ...atual, [propOrder]: index };\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map((child, i) => {\n return LibUtil._recursiveSetOrder(child, keyRecursive, k, propOrder, i);\n })\n ];\n return atual;\n }\n\n // ============================ ATALHOS PERSONALIZADOS ============================ \\\\\n\n static Q = (query: any) => {\n // Busca elemento único, podendo buscar ele mesmo. (Bifurcacado)\n if (LibUtil.classof(query) == \"string\") return document.querySelector(query);\n return query;\n };\n\n static QAll = (query: any): any[] => {\n // Sempre retorna uma array de encontrados. Inclusive uma array com um LibUtil.Q\n if (LibUtil.classof(query) == \"string\") {\n // Se buscando uma string, retorna a array do select encontrado\n return Array.from(document.querySelectorAll(query));\n } else if (LibUtil.classof(query).endsWith(\"Element\")) {\n // Quando buscar um único elemento, retorna o elemento em uma lista.\n return [query];\n } else if (LibUtil.classof(query) == \"array\") {\n // Quando buscar uma array, retorna a propria array. (Bifurcado)\n return query;\n } else {\n LOG(1, \"⚠️ QAll() - Requer String / Elemento / Array. ClassOf: \", LibUtil.classof(query), \" Query: \", query);\n return [];\n }\n };\n\n static QverOff = (query: Element | HTMLElement | string | null = \"body\"): any[] => {\n // Adiciona Classe Oculto em todos os elementos do Query\n // Retorna uma array de elementos por causa do QAll\n return LibUtil.aCadaElemento(query, (e: any) => {\n e?.classList.add(\"oculto\");\n });\n };\n\n static QverOn = (query: Element | HTMLElement | string | null = \"body\") => {\n // Remove classe Oculto em todos os elementos do Query\n // Retorna uma array de elementos por causa do QAll\n return LibUtil.aCadaElemento(query, (e: any) => {\n e?.classList.remove(\"oculto\");\n });\n };\n\n static dataGetMs = (data: string | null = null): number => {\n // Retorna Milisegundos da data no formato Javascript\n if (data != null) {\n if (data.length > 10) {\n // Recomendado que os dados cheguem: 'YYYY-MM-DD HH:MM:SS'\n return new Date(data).getTime(); // Recomendado que os dados \n } else {\n let dataCortada = data.split(\"-\");\n let oDia: number = Number(dataCortada[2]);\n let oMes: number = Number(dataCortada[1]) - 1;\n let oAno: number = Number(dataCortada[0]);\n return new Date(oAno, oMes, oDia).getTime();\n }\n } else return new Date().getTime();\n };\n\n static dataMsToSegundos = (num: number, reverse: boolean = false) => {\n if (reverse) {\n return num * 1000;\n }\n return Math.trunc(num / 1000); // 1000 ms == 1s\n }\n\n static dataMsToDias = (num: number, reverse: boolean = false) => {\n // 1000 * 3600 * 24 Considerando todo dia tiver 24 horas (~23h 56m 4.1s)\n // (360º translacao / 86400000) = ~4.1\n // Então o erro de 1 dia ocorre 1x ao ano (Dia represeta 1436min).\n // Por isso, é melhor trabalhar com Dias em vez de outro formato maior.\n if (reverse) {\n return Math.trunc(num * 86400000);\n }\n return Math.trunc(num / 86400000);\n };\n\n static dataGetSegundosDiferenca = (msDe: number, msAte: number | null = null): number => {\n // Retorna a diferença de segundos entre dois MS\n if (msAte == null) msAte = LibUtil.dataGetMs();\n return LibUtil.dataMsToSegundos(msAte - msDe);\n };\n\n static dataGetDiasDiferenca = (msDe: number, msAte: number | null = null): number => {\n // Retorna a diferença de dias entre dois MS\n if (msAte == null) msAte = LibUtil.dataGetMs();\n return LibUtil.dataMsToDias(msAte - msDe);\n };\n\n static dataShowTempoDiferenca = (msDe: number | string, msAte: number | string | null = null) => {\n if (LibUtil.classof(msDe) == \"string\") msDe = LibUtil.dataGetMs(msDe as string);\n if (LibUtil.classof(msAte) == \"string\") msAte = LibUtil.dataGetMs(msAte as string);\n let dias = LibUtil.dataGetDiasDiferenca(msDe as number, msAte as number | null);\n if (dias < 0) {\n dias = dias * -1;\n }\n let strTempo = \"\";\n if (dias > 29) { // Em Meses\n if (dias < 60) {\n strTempo = \"1 mês\";\n } else {\n if (dias > 365) { // Em Anos (+ Meses restantes)\n let anos = Math.floor(dias / 365);\n let diasRestoAno = dias % 365;\n if (anos < 2) {\n strTempo += anos + \" ano \";\n } else {\n strTempo += anos + \" anos \";\n }\n if (diasRestoAno > 30) {\n if (diasRestoAno < 60) {\n strTempo += \"1 mês\";\n } else {\n strTempo += Math.floor(diasRestoAno / 30) + \" meses\";\n }\n }\n } else {\n strTempo = Math.floor(dias / 30) + \" meses\";\n }\n }\n } else {\n if (dias < 1) {\n let segundos = LibUtil.dataGetSegundosDiferenca(msDe as number, msAte as number);\n if (segundos > 7199) { // Em Horas\n strTempo = Math.floor(segundos / 3600) + \" horas\";\n } else {\n if (segundos > 3599) {\n strTempo = \"1 hora\";\n } else {\n if (segundos > 119) { // Em Minutos\n strTempo = Math.floor(segundos / 60) + \" minutos\";\n } else {\n if (segundos > 59) {\n strTempo = \"1 minuto\";\n } else {\n strTempo = Math.floor(segundos) + \" segundos\";\n }\n }\n }\n }\n } else { // Em Dias\n strTempo = dias + \" dias\";\n }\n }\n if (strTempo.includes(\"NaN\")) return \"\";\n return strTempo;\n }\n\n static displayCelular = (area: string, numero: string, isoDDI?: string): string => {\n if (numero == null) numero = \"\"\n else numero = LibUtil.apenasNumeros(numero);\n if (area == null) area = \"\";\n else area = LibUtil.apenasEstes(area, \"0-9\\+\");\n if (numero == \"\" && area == \"\") return \"\";\n let displayArea = area;\n let displayNumero = numero;\n let displayFlag = \"\";\n if (numero != \"\" && displayArea == \"\") displayArea = \"+55\"\n if (displayArea == \"+55\") {\n numero = numero.slice(0, 11); // No brasil o limite é 9.\n displayNumero = numero;\n let apenasCelular = numero.slice(2, 11);\n if (apenasCelular.length == 9) {\n apenasCelular = apenasCelular.slice(0, 5) + \"-\" + apenasCelular.slice(5, 9);\n }\n displayNumero = \"(\" + numero.slice(0, 2) + \") \" + apenasCelular;\n }\n if (isoDDI != null) {\n displayFlag = LibUtil.displayFlag(isoDDI);\n }\n return `${displayFlag}<a href=\"tel:${area || \"\"}${numero || \"\"}\">${displayArea} ${displayNumero}</a>`\n }\n\n static displayFlag = (pais: string): string => {\n if (pais != null) {\n return `<img class=\"flagSizeIco\" src=\"/images/Paises/${pais || \"transparent\"}.svg\" alt=\"${pais || \"transparent\"}\" onerror=\"base_imgonerror(this);\"> `\n }\n return \"\";\n }\n\n static diaEMes(data: string): string {\n //Retorna: 01 de Abril\n let arrData = LibUtil.stringToDataBR(data)?.split(\" \")?.[0]?.split(\"/\");\n return arrData?.[0] + \" de \" + LibUtil.meses.get(Number(arrData?.[1] || 0))?.[0];\n }\n\n // =============== Gerenciamento Monetário / Numérico / Locale =================== \\\\\n static toNumber = (valor: any, casas: number = 2): number => {\n // Informando String/Number, converte para o número de casas c.casas (padrão 2).\n // LibUtil.toNumber(\"R$ 1.222,333\") => 1222.33\n if (valor != null) {\n if (LibUtil.classof(valor) == \"string\") {\n // Possiveis separadores\n let us = [\".\", \",\"].reduce((x, y) => (valor.lastIndexOf(x) > valor.lastIndexOf(y)) ? x : y);\n let posPonto = valor.lastIndexOf(us)\n if (posPonto >= 0) {\n let i = valor.slice(0, posPonto);\n let d = valor.slice(posPonto + 1).slice(0, 2).padEnd(2, \"0\");\n i = [...i.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\n d = [...d.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\n valor = i + \".\" + d;\n } else {\n valor = [...valor.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\").padStart(3, \"0\")\n valor = valor.padStart(casas, \"0\");\n valor = valor.slice(0, -(casas)) + (casas > 0 ? \".\" : \"\") + valor.slice(-(casas));\n }\n } else if (LibUtil.classof(valor) == \"number\") {\n valor = valor.toFixed(casas); // <= Vira String, mas essa função apenas devolve Number\n } else {\n LOG(1, \"❌ toNumber() - Formato de entrada não implementado: \", LibUtil.classof(valor));\n }\n return Number(valor); // <= OutPut Number\n }\n return 0; // <= OutPut Number\n };\n\n // ============================= ARMAZENADORES ESTÁTICOS ============================ \\\\\n static a: any = {\n ALL: \"*/*\", // ContentType Blob\n FORMDATA: \"multipart/form-data\", // ContentType FORM\n GET: \"GET\", // Api Method GET\n HTML: \"text/html\", // ContentType HTML\n JSON: \"application/json\", // ContentType JSON\n POST: \"POST\", // Api Method POST\n DELETE: \"DELETE\", // Api Method DELETE\n SVGINI: \"<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'>\",\n SVGFIM: \"</svg>\",\n timers: [] as any, // Array para guardar timers em andamento ou finalizados\n wpool: null as any | null, // WorkerPool quando iniciado\n }\n\n static meses = new Map([\n [1, [\"Janeiro\", \"JAN\", \"01\"]],\n [2, [\"Fevereiro\", \"FEV\", \"02\"]],\n [3, [\"Março\", \"MAR\", \"03\"]],\n [4, [\"Abril\", \"ABR\", \"04\"]],\n [5, [\"Maio\", \"MAI\", \"05\"]],\n [6, [\"Junho\", \"JUN\", \"06\"]],\n [7, [\"Julho\", \"JUL\", \"07\"]],\n [8, [\"Agosto\", \"AGO\", \"08\"]],\n [9, [\"Setembro\", \"SET\", \"09\"]],\n [10, [\"Outubro\", \"OUT\", \"10\"]],\n [11, [\"Novembro\", \"NOV\", \"11\"]],\n [12, [\"Dezembro\", \"DEZ\", \"12\"]],\n ]);\n\n // ============================ TOOLS e JS HELPERS ================================ \\\\\n\n static isJson = (s: any): boolean => {\n try {\n JSON.parse(s);\n } catch (e) {\n return false;\n }\n return true;\n };\n\n static stringify = (o: any): string => {\n // Converte o Objeto em String JSON, e aproveita e já remove alguns caracteres de controle.\n return JSON.stringify(o)\n ?.replace(new RegExp(\"\\n\", 'g'), \"\")\n ?.replace(new RegExp(\"\\r\", 'g'), \"\")\n ?.replace(new RegExp(\"\\t\", 'g'), \"\")\n ?.replace(new RegExp(\"\\b\", 'g'), \"\")\n ?.replace(new RegExp(\"\\f\", 'g'), \"\")\n };\n\n static parseJSON = (t: any) => {\n // Se for um JSON válido. Retorna o objeto, se não null.\n if (t === \"\") return \"\";\n let resultado = null;\n try {\n resultado = JSON.parse(t);\n } catch (e) {\n LOG(1, \"❌ JSON Inválido: Não foi possível converter o JSON.\");\n return null;\n }\n return resultado;\n };\n\n // String qualquer em string com números\n static convertToNumeric = (texto: string): Array<number> => {\n let arrayDeNumeros = [];\n for (const char of texto) {\n arrayDeNumeros.push(char.codePointAt(0) || 0);\n }\n return arrayDeNumeros;\n }\n\n // COnversor para Texto.\n static convertToTexto = (arrayNumeros: Array<number>): string => {\n return String.fromCodePoint(...arrayNumeros);\n }\n\n // Conversor para Texto, separado por virgula\n static convertToTexto2 = (stringNumeros: string): string => {\n return String.fromCodePoint(...stringNumeros.split(\",\").map(i => Number(i)));\n }\n\n static aCadaElemento = (query: any, fn: Function): any[] => {\n // A cada elemento encontrado pelo QAll executa a funcao\n let elementos = LibUtil.QAll(query);\n elementos.forEach((e: any) => {\n fn(e);\n });\n // Sempre retorna uma array por caus do QAll\n return elementos;\n };\n\n // Executa a FUNCAO em todas as propriedades deste OA. Inclusive Obj.Obj... (Matriz de Dados)\n static aCadaSubPropriedade = (OA: any, funcao: Function | null = null, exceto: string = \"Object\") => {\n let c = 0;\n for (let a in OA) {\n if (LibUtil.classof(OA[a]) != exceto) {\n if (funcao) {\n funcao(OA[a], a, OA);\n }\n }\n c++;\n // Se o atual é objeto, itera internamente\n if (LibUtil.classof(OA[a]) == \"object\") {\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\n }\n // Se o atual é array, itera internamente\n if (LibUtil.classof(OA[a]) == \"array\") {\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\n }\n }\n return c;\n };\n\n static apenasEstes = (s: string = \"\", regexPossiveis: string = \"0-9\\+\"): string => {\n if (s == null) return \"\";\n let regex = new RegExp(\"(?![\" + regexPossiveis + \"]).\");\n return s.toString().replace(regex, \"\");\n }\n\n static getV = (keys: string | string[], objeto: any): any => {\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\n // LibUtil.getV(\"a.b.c\",{a:{b:{c:\"d\"}}})\n if (LibUtil.classof(objeto) == \"object\") {\n if (LibUtil.classof(keys) == \"string\") {\n if (keys.includes(\".\")) {\n // Multi\n let ks: string[] = (keys as string).split(\".\");\n let lastObj = objeto;\n let lastV = {};\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\n ks.forEach((k) => {\n if (lastObj) { // Pode ficar nulo durante\n lastV = lastObj[k];\n if (typeof lastV == \"object\") {\n lastObj = lastV;\n } else {\n lastObj = null;\n }\n }\n });\n return lastV;\n } else {\n // Simples\n return objeto[(keys as string)];\n }\n } else if (LibUtil.classof(keys) == \"array\") {\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.\n let lastV = null;\n for (let k of (keys as string[])) {\n lastV = LibUtil.getV(k, objeto);\n if (lastV != null) {\n return lastV;\n }\n }\n } else {\n LOG(1, \"❌ getV() - Nome da propriedade precisa ser em String. (\" + LibUtil.classof(keys) + \"):\", keys);\n }\n } else {\n LOG(1, \"❌ Para ver a chave, o parametro objeto precisa receber um objeto. (\" + typeof objeto + \")\");\n }\n return null;\n };\n\n static setV = (keys: string, value: any, objeto: any) => {\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\n // LibUtil.setV(\"a.b.c\",\"mudei\",{a:{b:{c:\"d\"}}})\n if (typeof objeto == \"object\") {\n if (LibUtil.classof(keys) == \"string\") {\n if (keys.includes(\".\")) {\n // Multi\n let ks: string[] = keys.split(\".\");\n let lastObj = objeto;\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\n ks.forEach((k) => {\n if (ks.indexOf(k) == (ks.length - 1)) {\n // Último\n lastObj[k] = value;\n } else {\n if (LibUtil.classof(lastObj[k]) != \"object\") {\n lastObj[k] = {};\n }\n }\n lastObj = lastObj[k];\n });\n return objeto;\n } else {\n // Set direto, não tem ponto e é string\n objeto[keys] = value;\n return objeto;\n }\n } else {\n LOG(1, \"❌ setV() - Nome da propriedade precisa ser em string. (\" + LibUtil.classof(keys) + \"):\", keys);\n }\n } else {\n LOG(1, \"❌ setV() - Objeto precisa receber um objeto. (\" + typeof objeto + \")\");\n }\n return null;\n };\n\n static geraObjForm = (form: any) => {\n // Gerar Objeto a partir de um Form Entries\n if (LibUtil.classof(form) != \"object\") {\n // Se vier o Elemento Form / o Query do Form\n form = LibUtil.Q(form);\n }\n // Coleta apenas os campos com value.\n let rObjeto: any = [...form.querySelectorAll(\" *[name]\")]\n .map(o => { return { [o.name]: o.value } })\n .reduce((a, o) => { a = { ...a, ...o }; return a; }, {});\n if (form) {\n\n for (let [k, v] of Object.entries(rObjeto)) {\n LibUtil.setV(k, v, rObjeto);\n if (k.includes(\".\")) {\n delete rObjeto[k];\n }\n }\n Array.from(form.querySelectorAll(\"mk-sel\")).forEach((e: any) => {\n // rObjeto[mk.name] = mk.value;\n LibUtil.setV(e.name, e.value, rObjeto);\n });\n // Aqui apenas coleta os mkBot que foram modificados pelo usuário.\n Array.from(form.querySelectorAll(\"mk-bot.changed\")).forEach((e: any) => {\n // rObjeto[mk.name] = mk.value;\n LibUtil.setV(e.name, e.value, rObjeto);\n });\n }\n return rObjeto;\n }\n\n static funcoesDinamicas = new Map<string, Function>();\n static aCada1s = () => {\n Array.from(LibUtil.funcoesDinamicas.values()).map((fn: Function) => { if (fn != null) fn() });\n setTimeout(() => {\n LibUtil.aCada1s();\n }, 1000);\n };\n\n static cortarString = (linha: string, regex: string, casas: any) => {\n let resultado: any = \"\";\n try {\n resultado = new RegExp(regex).exec(linha)?.groups?.[\"ok\"];\n } catch (e) {\n LOG(1, \"Regex Inválido. \", e);\n return \"0\";\n }\n if ((!casas) || (casas == \"\") || (casas <= 0)) casas = 0;\n return `${LibUtil.toNumber(resultado, casas)}`;\n }\n\n static uuid = () => {\n // Padrão UUIDV4 - Gerador de identificador unico\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (c: any) => { // c = String\n return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);\n }).toString().toUpperCase();\n }\n\n // mk.isRoute(\"/Pesagem$\") // <= Rota termina com /Pesagem\n static isRoute = (rotaRegex: string) => {\n return new RegExp(rotaRegex).test(window.location.pathname);\n }\n\n static verificarIgualdade(array: any[], propriedades: string[]) {\n // Verifica se várias propriedades estão iguais em todos os objetos de um array.\n if (array.length <= 1) return true;\n const primeiro = array[0];\n return array.every(objeto => {\n return propriedades.every(propriedade => {\n // Verifica se a propriedade existe em ambos os objetos antes da comparação\n if (!(propriedade in objeto) || !(propriedade in primeiro)) {\n LOG(1, `⚠️ Propriedade '${propriedade}' ausente em um ou mais objetos.`);\n return false; // considera falso se a propriedade não existir\n }\n return objeto[propriedade] === primeiro[propriedade];\n });\n });\n }\n\n static individualNoObjeto(array: any[], propriedade: string): any[] {\n // Ignora os Objetos que esta Propriedade se repetir.\n let novoSet = new Set(array.map((o) => { return o[propriedade] }));\n return array.map((o) => {\n if (novoSet.has(o[propriedade])) {\n novoSet.delete(o[propriedade]);\n return o;\n } else return null;\n }).filter(o => o);\n }\n\n static hasFaltante(array: any[], propriedades: string[]) {\n // Verifica as propriedades informadas estão disponíveis em todos os objetos do array.\n if (array.length <= 0) return false;\n return array.every(objeto => {\n return propriedades.every(propriedade => {\n if (!(propriedade in objeto)) {\n return true;\n }\n return false;\n });\n });\n }\n\n static somarEmObjeto(lista: any[], propriedade: string) {\n // Soma uma determinada propriedade em uma lista\n return lista.reduce((acc: number, val: any) => {\n if (LibUtil.classof(val[propriedade]) == \"number\") {\n return acc + val[propriedade];\n }\n return acc;\n }, 0);\n }\n\n static capitalize = (texto?: string | null): string => {\n let arrayTexto = texto?.toString().split(\" \");\n return arrayTexto?.map(str => {\n let str_low = str.toLowerCase();\n if ([\"da\", \"de\", \"do\", \"das\", \"dos\", \"e\"].includes(str_low)) {\n return str_low;\n } else {\n return str_low.charAt(0).toUpperCase() + str_low.slice(1);\n }\n }).join(\" \") || \"\";\n };\n\n static GetParam = (name: string | null = null, url: string | null = null) => {\n // Coleta o valor do parametro da url.\n if (!url) url = document.location.toString();\n if (name != null) {\n return new URL(url).searchParams.get(name);\n } else {\n return new URL(url).searchParams.toString();\n }\n }\n\n static getParamObject = (url?: string) => {\n if (!url) url = document.location.toString();\n return url?.split(\"?\")[1]?.split(\"&\")?.reduce((acc: any, val: string) => {\n const [key, value] = val.split(\"=\");\n acc[key] = value;\n return acc;\n }, {});\n }\n\n static toQueryString(obj?: any, urlAtual: string = \"\"): string {\n if (obj) {\n // Quando é GET, modifica a URL e acrescenta os QUERYSTRING do objeto enviado por parametro.\n if (obj != null) {\n if (!urlAtual.includes(\"?\")) {\n urlAtual = urlAtual + \"?\"; // Cria o divisor entre os dados do query e o endereço destino.\n }\n let queryStrings = \"\";\n if (LibUtil.classof(obj) == \"object\") {\n for (let propriedade in obj) {\n if (LibUtil.classof(obj[propriedade]) == \"object\") {\n let propJson = JSON.stringify(obj[propriedade]);\n queryStrings += `&${propriedade}=${propJson}`;\n LOG(1, `⚠️ toQueryString() - Uma propriedade enviada: '${propriedade}' era um objeto. Url`, urlAtual);\n } else {\n if (obj[propriedade] != null) {\n queryStrings += `&${propriedade}=${obj[propriedade]}`;\n }\n }\n }\n } else {\n LOG(1, \"❌ Dados enviados via GET precisam ser Object. Dados: \", LibUtil.classof(obj));\n }\n urlAtual = urlAtual + queryStrings;\n }\n }\n if (urlAtual.endsWith(\"?\")) urlAtual = urlAtual.slice(0, -1); // Remove o ? final se não tiver nada depois.\n urlAtual = urlAtual.replaceAll(\"?&\", \"?\");\n return urlAtual;\n }\n\n /**\n * Mapeia uma EntidadeA para EntidadeB usando o TRANSFORMA\n * É nescessário informar o DE/PARA/TRANSFORMA de cada propriedade.\n */\n static mapearEntidade<T, U>(\n entidadeOrigem: T,\n mapeamento: MapeamentoItem<T, U>[]\n ): U {\n const entidadeDestino: any = {};\n mapeamento.forEach(item => {\n const valor = entidadeOrigem[item.de];\n if (valor !== undefined) {\n entidadeDestino[item.para] = item.transforma(valor);\n } else {\n entidadeDestino[item.para] = null;\n }\n });\n return entidadeDestino as U;\n\n }\n\n /**\n * Faz uma tentativa de obter uma url, mas se falhar, retorna nulo\n */\n static getURL(urlQuery?: string) {\n let url;\n if (urlQuery) {\n try {\n url = new URL(urlQuery);\n } catch (e) {\n LOG(1, \"❌ URL INVÁLIDA: \", urlQuery);\n }\n }\n return url;\n }\n\n static conversorCSS(texto: string): string[] {\n const regex = /\\.([a-z0-9-]+)\\s*{.*?}/g;\n let arrayTexto = texto.replace(/\\s+/g, ' ').replace(/[\\r\\n]/g, '').replace(regex, (match, group1) => group1 + \",\").trim().split(\",\");\n return arrayTexto.map(i => i.trim()).filter(o => o != \"\");\n }\n\n static sort<T, K extends keyof T>(array: T[], propriedade: K): T[] {\n return array.sort((a, b) => (a[propriedade] < b[propriedade] ? -1 : 1));\n }\n\n static converteEnterEmBr(texto: string): string {\n return texto.replace(/\\n/g, \"<br>\");\n }\n\n static hasHtmlTags(texto: string): boolean {\n const regex = /<\\/?[a-z][\\s\\S]*>/i;\n return regex.test(texto);\n }\n\n\n /**\n * Une duas listas quando elas tem uma propriedade em comum\n * @param listaA Lista a ser sobreescrita ou preenchida\n * @param listaB Lista com os dados para preencher ou sobreescrever\n * @param propEmComum Nome da propriedade que, se estiver em comum nas listas, será populado, do contrário não.\n * @returns Lista Unida por um Filtro.\n */\n static Union(listaA: any[], listaB: any[], propEmComum?: string): any[] {\n let resultado = listaA.map(itensA => ({\n ...itensA,\n ...listaB.filter(o => o[propEmComum as keyof typeof o]?.toString() == itensA[propEmComum as keyof typeof listaA]?.toString())[0],\n }));\n G_START(3, \"Unindo Listas...\")\n LOG(3, \"ListaA: \", listaA);\n LOG(3, \"ListaB: \", listaB);\n LOG(3, \"Resultado: \", resultado);\n G_END(3);\n return resultado;\n }\n\n /**\n * Gera uma string menor que a informada.\n * @returns \n */\n static gerarHashCurto(texto: string, tamanho: number = 8): string {\n let hash = 0;\n for (let i = 0; i < texto.length; i++) {\n hash = ((hash << 5) - hash) + texto.charCodeAt(i);\n hash = hash & hash; // Converte para inteiro de 32 bits\n }\n // Converter para string hexadecimal positiva e pegar os primeiros caracteres\n return Math.abs(hash).toString(16).substring(0, tamanho);\n }\n\n static gerarNomeColection(nomeSistema: string, colecao: string): string {\n return LibUtil.gerarHashCurto(nomeSistema) + \"_\" + colecao;\n }\n\n\n static apenasNumerosLetras = (s: string = \"\"): string => {\n if (s == null) return \"\";\n // Ignora qualquer outro caracter além de Numeros e Letras formato ocidental\n return s.replace(/(?![a-zA-Z0-9])./g, \"\");\n };\n\n static removeEspecias = (s: string): string => {\n if (s == null) return \"\";\n // Remove acentos e depois chama Apenas Números e Letras.\n s = s.toString();\n return LibUtil.apenasNumerosLetras(LibUtil.removeAcentos(s));\n };\n\n static LerTexto = async (texto = \"Teste som: 1, 2, 3.\", locutor = 0) => {\n let lerVoz = window.speechSynthesis;\n let listaVozes = lerVoz.getVoices().filter(o => o.lang.toLowerCase() == \"pt-br\");\n let locutorEncontrado = listaVozes[locutor] || listaVozes[0] || null;\n return new Promise((r) => {\n if (lerVoz.speaking) {\n LOG(1, \">> Ainda está reproduzindo. Tente mais tarde.\");\n return;\n }\n if (texto != \"\") {\n const ssu = new SpeechSynthesisUtterance(texto);\n ssu.lang = \"pt-BR\";\n ssu.voice = locutorEncontrado;\n ssu.pitch = 0; // Tom de voz\n ssu.rate = 1.5; // Velocidade\n ssu.onend = (ev) => { r(true) };\n ssu.onerror = (ev) => { LOG(1, \"❌ Erro: \", ev.error); r(false) };\n lerVoz.cancel();\n lerVoz.speak(ssu);\n }\n });\n }\n\n static async LerProximoERemover(playlist: string[]) {\n if (await LibUtil.LerTexto(playlist[0]) == true) {\n playlist.shift();\n }\n return playlist;\n }\n\n static LeituraInterrompida() {\n window.speechSynthesis.cancel();\n }\n\n static gerarNumeroInteiro(min: number, max: number): any {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n static SelectInner(e: HTMLInputElement) {\n // Seleciona texto do elemento\n if (window.getSelection) {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(e);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n\n static generatePrimaryKey(item: any, primarykey: string): any {\n if (item == null) {\n LOG(1, \"❌ Não foi possível gerar uma chave, pois o objeto ainda não está preenchido.\")\n return item;\n }\n\n if (LibUtil.classof(item) != \"object\") {\n LOG(1, \"⚠️ Não foi possível gerar uma chave neste tipo de variável: \", LibUtil.classof(item));\n return item;\n }\n\n if (item[primarykey] != null) {\n LOG(5, \"Chave não gerada no objeto, pois já estava preenchido com:\", item[primarykey]);\n return item;\n }\n\n item[primarykey] = LibUtil.uuid();\n return item;\n }\n\n static hslToHex(h: number, s: number, l: number) {\n // Normalize saturation and lightness to a 0-1 range\n s /= 100;\n l /= 100;\n\n let c = (1 - Math.abs(2 * l - 1)) * s,\n x = c * (1 - Math.abs(((h / 60) % 2) - 1)),\n m = l - c / 2,\n r = 0,\n g = 0,\n b = 0;\n\n if (0 <= h && h < 60) {\n r = c;\n g = x;\n b = 0;\n } else if (60 <= h && h < 120) {\n r = x;\n g = c;\n b = 0;\n } else if (120 <= h && h < 180) {\n r = 0;\n g = c;\n b = x;\n } else if (180 <= h && h < 240) {\n r = 0;\n g = x;\n b = c;\n } else if (240 <= h && h < 300) {\n r = x;\n g = 0;\n b = c;\n } else if (300 <= h && h < 360) {\n r = c;\n g = 0;\n b = x;\n }\n\n // Convert RGB values to 0-255 range\n r = Math.round((r + m) * 255);\n g = Math.round((g + m) * 255);\n b = Math.round((b + m) * 255);\n\n // Convert RGB components to hexadecimal and pad with leading zero if needed\n const toHex = (c: any) => {\n const hex = c.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n\n static isFilled(dados: any): boolean {\n if (LibUtil.classof(dados) == \"array\") {\n if ((dados as Array<any>).length && (dados as Array<any>).length > 0) {\n return true;\n }\n }\n return false;\n }\n\n static replace(regex: string, valor: string | number): string {\n if (typeof valor === \"number\") valor = valor.toString();\n return valor.replace(new RegExp(regex, 'g'), '');\n }\n\n // Mínimo 2 timestamps\n static calculateJitter(timestamps: number[]): number {\n if (timestamps.length < 2) return 0;\n\n const delays = [];\n for (let i = 1; i < timestamps.length; i++) {\n delays.push(timestamps[i] - timestamps[i - 1]);\n }\n\n if (delays.length < 2) return 0;\n let totalJitterDifference = 0;\n\n for (let i = 1; i < delays.length; i++) {\n totalJitterDifference += Math.abs(delays[i] - delays[i - 1]);\n }\n\n return totalJitterDifference / (delays.length - 1);\n }\n\n // Soma os valores dos arrays por índice\n static somarPorIndice = (arrays: number[][]): number[] => {\n if (arrays.length === 0) return [];\n return arrays.reduce((acc, arr) =>\n arr.map((val, i) => (acc[i] || 0) + val)\n );\n }\n\n // Soma os valores dos arrays\n static somarArrayInterna = (arrays: number[][]): number[] => {\n if (arrays.length === 0) return [];\n return arrays.map(a => a.reduce((acc, v) => acc + v, 0));\n }\n\n // Faz o download de um Blob()\n static downloadBlob = (blob: Blob, nomeArquivo: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = nomeArquivo;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n static wordsToCamelCase(texto: string): string {\n // Se houver espaços, traços, undercores, converte para camelCase\n return texto.split(/[\\s-_]+/)\n .map((word, index) =>\n index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)\n ).join('');\n }\n\n static camelCase(texto: string): string {\n return texto.charAt(0).toLowerCase() + texto.slice(1);\n }\n\n static pascalCase(texto: string): string {\n return texto.charAt(0).toUpperCase() + texto.slice(1);\n }\n\n static dashedCase(texto: string): string {\n // Converte camelCase ou PascalCase para dashed-case\n return texto.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n static separaWordsCase(texto: string): string {\n // Separa as palavras ao trocar de letra minúscula para maiúscula.\n // CodigoIBGE => Codigo IBGE\n let textoSeparado = texto.replace(/([a-z])([A-Z])/g, '$1 $2');\n return textoSeparado;\n }\n\n // Separa as palavras por espaço, traço ou underline, e retorna um array com as palavras.\n static wordsArray(texto: string): string[] {\n return texto.split(/[\\s-_]+/).filter(word => word.length > 0);\n }\n\n static tentaAcentuarTexto(s: string | string[]): string {\n // Utiliza regras de acentuação de português para tentar acentuar a palavra informada.\n if (LibUtil.classof(s) == \"array\") {\n return (s as string[]).map((palavra) => LibUtil.tentaAcentuarTexto(palavra)).join(\" \");\n }\n let texto = (s as string);\n if (texto.endsWith(\"ao\")) {\n texto = texto.slice(0, -2) + \"ão\"; // Ex: mão\n }\n if (texto.endsWith(\"oes\")) {\n texto = texto.slice(0, -3) + \"ões\"; // Ex: permissões\n }\n if (texto.endsWith(\"cao\") || texto.endsWith(\"çao\") || (texto.endsWith(\"cão\") && texto != \"cão\")) {\n texto = texto.slice(0, -3) + \"ção\"; // Ex: ação\n }\n if (texto.endsWith(\"coes\") || texto.endsWith(\"çoes\") || texto.endsWith(\"cões\")) {\n texto = texto.slice(0, -4) + \"ções\"; // Ex: observações\n }\n\n return texto;\n }\n\n static pluralOf(word: string | string[]): string {\n // Retorna o plural da palavra informada em português\n if (LibUtil.classof(word) == \"array\") {\n return (word as string[]).map((palavra) => LibUtil.pluralOf(palavra)).join(\" \");\n }\n\n let texto = (word as string);\n if (texto.endsWith(\"ão\")) {\n return texto.slice(0, -2) + \"ões\";\n } else if (texto.endsWith(\"ões\")) {\n return texto.slice(0, -3) + \"ões\";\n } else if (texto.endsWith(\"r\") || texto.endsWith(\"s\") || texto.endsWith(\"z\")) {\n return texto + \"es\";\n } else if (texto.endsWith(\"m\")) {\n return texto.slice(0, -1) + \"ns\";\n } else if (texto.endsWith(\"l\")) {\n return texto.slice(0, -1) + \"is\";\n } else {\n return texto + \"s\";\n }\n }\n\n static setFormConfigs(configs: Partial<IFieldComponent<any>>): void {\n LibUtil.formConfigs = configs;\n }\n\n static paraPortugues(texto: string): string {\n let acentuado = LibUtil.tentaAcentuarTexto(LibUtil.wordsArray(LibUtil.separaWordsCase(texto)))\n return LibUtil.replaceDicionario(acentuado);\n }\n\n static paraPortuguesPlural(texto: string): string {\n let plural = LibUtil.pluralOf(LibUtil.paraPortugues(texto))\n return plural;\n }\n\n // Dicionário\n static replaceDicionario(texto: string): string {\n if (texto.startsWith(\"Is \")) {\n texto = texto.replace(/^Is /, \"É \");\n }\n texto = texto.replaceAll(\"Codigo\", \"Código\");\n texto = texto.replaceAll(\"Icone\", \"Ícone\");\n texto = texto.replaceAll(\"Enderec\", \"Endereç\");\n texto = texto.replaceAll(\"Balanc\", \"Balanç\");\n texto = texto.replaceAll(\"Usuari\", \"Usuári\");\n texto = texto.replaceAll(\"Lancamento\", \"Lançamento\");\n texto = texto.replaceAll(\"Referencia\", \"Referência\");\n texto = texto.replaceAll(\"Ultim\", \"Últim\");\n texto = texto.replaceAll(\"Numero\", \"Número\");\n texto = texto.replaceAll(\"Inicio\", \"Início\");\n texto = texto.replaceAll(\"Socio\", \"Sócio\");\n texto = texto.replaceAll(\"Socia\", \"Sócia\");\n texto = texto.replaceAll(\"Especie\", \"Espécie\");\n texto = texto.replaceAll(\"Cobranca\", \"Cobrança\");\n texto = texto.replaceAll(\"Modulo\", \"Módulo\");\n texto = texto.replaceAll(\"Servico\", \"Serviço\");\n texto = texto.replaceAll(\"Aliquota\", \"Alíquota\");\n texto = texto.replaceAll(\"Calculo\", \"Cálculo\");\n texto = texto.replaceAll(\"Unitario\", \"Unitário\");\n texto = texto.replaceAll(\"Procedencia\", \"Procedência\");\n texto = texto.replaceAll(\"Mudanca\", \"Mudança\");\n texto = texto.replaceAll(\"Pratica\", \"Prática\");\n texto = texto.replaceAll(\"Propria\", \"Própria\");\n texto = texto.replaceAll(\"Impropria\", \"Imprópria\");\n texto = texto.replaceAll(\"Responsavel\", \"Responsável\");\n texto = texto.replaceAll(\"Conjuge\", \"Cônjuge\");\n texto = texto.replaceAll(\"Cafe\", \"Café\");\n texto = texto.replaceAll(\"Transferencia\", \"Transferência\");\n texto = texto.replaceAll(\"Bancaria\", \"Bancária\");\n texto = texto.replaceAll(\"Agencia\", \"Agência\");\n texto = texto.replaceAll(\"Digito\", \"Dígito\");\n\n if (texto.includes(\"Mes \")) texto = texto.replaceAll(\"Mes \", \"Mês \");\n if (texto.endsWith(\"Mes\")) texto = texto.replace(/Mes$/, \"Mês\");\n if (texto.includes(\"Ate \")) texto = texto.replaceAll(\"Ate \", \"Até \");\n if (texto.endsWith(\"Ate\")) texto = texto.replace(/Ate$/, \"Até\");\n if (texto.includes(\"Socio \")) texto = texto.replaceAll(\"Socio \", \"Sócio \");\n if (texto.endsWith(\"Socio\")) texto = texto.replace(/Socio$/, \"Sócio\");\n if (texto.includes(\"Socia \")) texto = texto.replaceAll(\"Socia \", \"Sócia \");\n if (texto.endsWith(\"Socia\")) texto = texto.replace(/Socia$/, \"Sócia\");\n return texto;\n }\n\n}\n\n\nexport type IClassOf = \"string\" | \"number\" | \"nan\" | \"object\" | \"array\" | \"boolean\" | \"undefined\" | \"null\" | \"function\" | \"date\" | \"regexp\" | \"error\" | \"symbol\" | \"bigint\"\n\nexport interface IFormatter {\n mask: string | ((value: any) => string);\n regex: string;\n validate: (value: any) => boolean;\n}\n\nexport interface IUtilFormatters {\n cpf: IFormatter;\n cnpj: IFormatter;\n cpf_cnpj: IFormatter;\n cnh: IFormatter;\n pis: IFormatter;\n dia: IFormatter;\n mes: IFormatter;\n ano: IFormatter;\n anoRecente: IFormatter;\n data: IFormatter;\n dataIso: IFormatter;\n numero: IFormatter;\n decimal: IFormatter;\n letra: IFormatter;\n numeroELetra: IFormatter;\n ip: IFormatter;\n email: IFormatter;\n cep: IFormatter;\n}\n\nexport interface MapeamentoItem<T, U> {\n de: keyof T;\n para: keyof U;\n transforma: (v: T[keyof T]) => U[keyof U];\n}\n","import { computed, signal, Type, WritableSignal } from \"@angular/core\";\nimport { IKV, IKV_ext, ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\nimport { LibUtil } from \"../../util/util\";\nimport { LOG } from '../../util/log';\n\nexport class Formulario {\n\n campos = signal<IFields<any>>({});\n listaCampos = computed<IFieldComponent<any>[]>(() => Object.values(this.campos()));\n listaErrors = computed<string[]>(() => {\n let errors: string[] = [];\n for (const key of Object.keys(this.campos())) {\n const campoErros = this.campos()?.[key]?.errors;\n if (campoErros && campoErros.length > 0) {\n errors = [...errors, ...campoErros.map(e => `${String(key)}: ${e}`)];\n }\n }\n return errors;\n });\n values = signal<any>({});\n registredFields = signal<{ [key in keyof IFields<any>]: any }>({});\n\n showTouched = signal<boolean>(false);\n isEnviado: boolean = false;\n isEnviando: boolean = false;\n instance: any = null;\n\n valido = computed(() => {\n for (const key of Object.keys(this.campos())) {\n const campo = this.campos()[key];\n const errors = campo.errors;\n if (errors && errors.length > 0) {\n return false;\n }\n }\n return true;\n });\n algumTocado = computed(() => {\n return this.listaCampos().some(campo => campo.touched);\n });\n\n constructor(campos: IFields<any>, startValues: any = {}, instance: any = null) {\n this.instance = instance;\n let values: any = this._startValues(campos, startValues);\n let camposStarted: IFields<any> = {};\n for (const key of Object.keys(campos)) {\n camposStarted[key] = {\n ...campos[key],\n touched: false,\n invalid: false,\n errors: [], // [Valide.msg.naoValidado]\n ...LibUtil.formConfigs,\n };\n }\n this.campos.set(camposStarted);\n this.values.set(values);\n this.obterOpcoes();\n return this;\n }\n\n updateValues(newValues: any) {\n if (LibUtil.classof(newValues) !== 'object') {\n LOG(1, \"❌ Formulario.updateValues deve receber um objeto.\");\n }\n this.values.update(v => {\n return { ...v, ...newValues }\n });\n }\n\n removeValue(prop: keyof IFields<any>) {\n this.values.update(v => {\n if (v.hasOwnProperty(prop)) {\n delete v[prop];\n } else {\n LOG(1, `❌ Formulario.removeValue: Propriedade '${String(prop)}' não existe nos valores.`);\n }\n return { ...v };\n });\n }\n\n updateCampo(prop: keyof IFields<any>, newCampoData: Partial<IFieldComponent<any>>) {\n if (newCampoData.hasOwnProperty('errors')) {\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\n }\n this.campos.update(c => {\n if (c[prop]) {\n c[prop] = { ...c[prop], ...newCampoData };\n } else {\n LOG(1, `❌ Formulario.updateCampo: Campo '${String(prop)}' não existe.`);\n }\n return { ...c };\n });\n }\n\n setAllCamposPartial(newCampoData: Partial<IFieldComponent<any>>) {\n if (newCampoData.hasOwnProperty('errors')) {\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\n }\n this.campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key] = { ...c[key], ...newCampoData };\n }\n return { ...c };\n });\n }\n\n setAllValuesTo(value: any) {\n this.values.update(v => {\n for (const key of Object.keys(v)) {\n v[key] = value;\n }\n return { ...v };\n });\n }\n\n resetToStartValues() {\n const campos = this.campos();\n const startValues = this._startValues(campos);\n this.values.set(startValues);\n }\n\n private _startValues(campos: IFields<any>, startValues: any = {}) {\n let values: any = {};\n for (const key of Object.keys(campos)) {\n values[key] = campos[key].value ?? '';\n }\n values = { ...values, ...startValues };\n return values;\n }\n\n setDisabledAll(disabled: boolean) {\n this.setAllCamposPartial({ disabled });\n }\n\n setTouchedAll(touched: boolean) {\n this.setAllCamposPartial({ touched });\n }\n\n async validar(): Promise<any> {\n let camposComErros: string[] = [];\n let camposPendentes: string[] = [];\n\n // Executa validações diretamente nos campos registrados\n for (const key of Object.keys(this.registredFields())) {\n const campoComponent = this.registredFields()[key];\n if (campoComponent && typeof campoComponent.executarValidacoes === 'function') {\n try {\n await campoComponent.executarValidacoes();\n } catch (error) {\n LOG(1, `❌ Erro ao validar o campo '${key}':`, error);\n }\n }\n }\n\n // Verifica cada campo para erros e pendências\n for (const key of Object.keys(this.campos())) {\n const campo = this.campos()[key];\n if (campo.errors && campo.errors.length > 0) {\n LOG(1, `❌ Erro de validação no campo '${key}':`, campo.errors);\n camposComErros.push(key);\n }\n if (campo.pending) {\n LOG(1, `⏳ Campo '${key}' ainda está pendente.`);\n camposPendentes.push(key);\n }\n }\n\n // Se houver campos pendentes ou com erros rejeita a validação\n if (camposPendentes.length > 0) {\n return Promise.reject(`${camposPendentes.length} Campos pendentes: ${camposPendentes.join(', ')}`);\n }\n if (camposComErros.length > 0) {\n return Promise.reject(`${camposComErros.length} Campos com erros (inválidos): ${camposComErros.join(', ')}`);\n }\n return this.values();\n }\n\n private async obterOpcoes() {\n let campos = this.campos();\n for (const key of Object.keys(campos)) {\n let campo = campos[key];\n // Ignora campos que não são de seleção\n if ([IField.AutoComplete, IField.Select].indexOf(campo.tipo) === -1) continue;\n this.updateCampo(campo.prop, { pending: false });\n\n // Inicializa o signal de opções se não existir\n if (campo.options === undefined) campo.options = signal<IKV[]>([]);\n\n // Opções atuais\n const opcoesAtuais = campo.options?.();\n\n // Se já houver opções E não estiverem vazias, não executa o refill neste momento\n if (opcoesAtuais && opcoesAtuais.length > 0) continue;\n\n // Um refill inicial será executado se definido\n if (campo.refill) {\n LOG(4, `🔄 Refill em '${key}'. Opções iniciais:`, opcoesAtuais);\n this.updateCampo(campo.prop, { pending: true });\n let options: IKV[] | null = null;\n try {\n options = await campo.refill(this);\n\n // await LibUtil.wait(1000);\n if (campo.mapear) {\n options = await campo.mapear(options);\n }\n // let opcoesKV: IKV[] = this.conveterEntidadesParaKV(options, campo.servico.configService.propsDisplay);\n if (options === null || LibUtil.classof(options) !== 'array') {\n options = [];\n }\n\n // Só atualiza as opções se houver conteúdo, pois já está iniciado o signal.\n if (options.length > 0) {\n // campo.options.set(options);\n this.updateCampo(campo.prop, { options: signal(options) });\n LOG(3, `🔄 Refill em '${key}'. recebido:`, options);\n }\n } catch (error) {\n LOG(1, `❌ Erro ao obter opções para o campo '${key}':`, error);\n }\n this.updateCampo(campo.prop, { pending: false });\n\n // Se o onMatchOptionOnInit estiver definido, executa o onMatchOption com a opção correspondente ao valor atual do campo.\n if (campo.onMatchOptionOnInit) {\n const optionValue = options?.find(opt => opt.k === this.values()[campo.prop]);\n if (campo.onMatchOption && optionValue) {\n try {\n campo.onMatchOption?.(this, optionValue);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${key}'`, err);\n }\n }\n }\n\n // Ao concluir o refill executa afterRefill, se definido.\n if (campo.afterRefill) {\n await campo.afterRefill(this, options);\n }\n }\n }\n }\n\n // Remove os valores que não estão nos campos e os tipos campos que não devem ter valor.\n sanitizar() {\n const campos = this.campos();\n const valoresAtuais = this.values();\n const novosValores: any = {};\n const tiposSemValor = [IField.Display, IField.Button];\n for (const key of Object.keys(campos)) {\n if (key in valoresAtuais && tiposSemValor.indexOf(campos[key].tipo) === -1) {\n novosValores[key] = valoresAtuais[key];\n }\n }\n this.values.set(novosValores);\n }\n\n // Remove os valores que não estão nos campos ou que estão em campos desabilitados.\n onlyAvailable() {\n const novosValores: any = {};\n const valoresAtuais = this.values();\n const campos = this.campos();\n for (const campo of Object.values(campos)) {\n if (campo.prop in valoresAtuais && !campo.disabled) {\n novosValores[campo.prop] = valoresAtuais[campo.prop];\n }\n }\n this.values.set(novosValores);\n }\n\n save() {\n if (this.instance && typeof this.instance.onSave === 'function') {\n this.instance.onSave();\n } else {\n LOG(1, \"❌ Formulario.save: instância não encontrada.\");\n }\n }\n\n}\n\n\n\n/************************************************\\\\\n// Modo de uso\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFields<T> {\n [key: string]: IFieldComponent<T>;\n}\n\n/************************************************\\\\\n// Tipos de Campos disponíveis para uso\t \\\\\n//*************************************************/\n\nexport enum IField {\n AutoComplete = 'autocomplete',\n Button = 'button',\n Checkbox = 'checkbox',\n Color = 'color',\n Custom = 'custom',\t\t\t\t\t\t\t\t// <== Componentes customizados para uma determinada área.\n Date = 'date',\n DateTime = 'datetime',\n Display = 'display',\t\t\t\t\t\t\t// Representa um campo apenas para exibição\n Editor = 'editor',\t\t\t\t\t\t\t\t// Texto multilinha e com Editor\n Email = 'email',\n Hidden = 'hidden',\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.\n MultiFactor = 'multifactor',\t\t\t// Combo de 6 campos texto para preenchimento individual por caracter.\n MultiKV = 'multikv', // Permite adicionar ou retirar itens em forma KV (Como usado nos seletores e no Importar)\n MultiText = 'multitext',\t\t\t\t\t// Lista com: Texto em unica linha.\n Number = 'number',\n Password = 'password',\n Referencia = 'referencia',\t\t\t\t// Campo que referencia um registro de outra entidade. Utilizado para exibir objetos recebidos de relacionamento.\n Search = 'search',\n Select = 'select',\n Slide = 'slide',\n Text = 'text',\t\t\t\t\t\t\t\t\t\t// Texto em unica linha.\n Textarea = 'textarea',\t\t\t\t\t\t// Texto multilinha.\n Time = 'time',\t\t\t\t\t\t\t\t\t\t// Campo de hora (HH:MM)\n Upload = 'upload', \t\t\t\t\t\t\t\t// (Padrão 1 Imagem)(Padrao Accept: \".png,.svg,.jpg,.jpeg,.gif\")\n\n}\n\n/************************************************\\\\\n// Propriedades para Campos\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFieldComponent<T> {\n tipo: IField,\t\t\t\t\t\t\t\t\t\t\t// [OBRIGATORIO] Tipo do campo.\n prop: keyof T & string,\t\t\t\t\t\t// [OBRIGATORIO] nome da propriedade a ser enviada e do controle do formulário.\n value?: any,\t\t\t\t\t\t\t\t\t\t\t// Valor do campo.\n titulo?: string,\t\t\t\t\t\t\t\t\t// nome do campo a ser exibido ao usuário (Display)\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\n icone?: string,\t\t\t\t\t\t\t\t\t\t// Ícone a ser exibido no campo.\n placeholder?: string,\t\t\t\t\t\t\t// Texto exibido que não representam o valor.\n style?: string,\t\t\t\t\t\t\t\t\t\t// Estilos CSS a serem aplicados no campo.\n classe?: string,\t\t\t\t\t\t\t\t\t// Classes CSS a serem aplicadas no campo.\n hideLabel?: boolean,\t\t\t\t\t\t\t// Controla se o campo deve ocultar o label (titulo).\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).\n autofocus?: boolean,\t\t\t\t\t\t\t// Define se o campo deve receber foco automaticamente ao ser exibido.\n regras?: IRegra[],\t\t\t\t\t\t\t\t// Regras de validação do campo.\t\n maxl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho máximo do valor.\n minl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho mínimo do valor.\n errors?: (string | undefined)[],\t// Lista de mensagens de erro para o campo.\n dica?: string,\t\t\t\t\t\t\t\t\t\t// Texto de ajuda para o campo.\n onInput?: (form: Formulario) => any;// Executada a cada alteração simples no campo.\n onChange?: (form: Formulario) => any;// Executada ao fim de uma alteração no campo.\n\n // Indicadores\n readonly?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza a edição.\n need?: boolean,\t\t\t\t\t\t\t\t\t\t// Valida se o campo está preenchido.\n touched?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo foi tocado/editado.\n disabled?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza todos os controles.\n invalid?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo está inválido.\n empty?: boolean,\t\t\t\t\t\t\t\t\t// Indica se o campo está vazio.\n pending?: boolean,\t\t\t\t\t\t\t\t// Indica que o campo está em estado de espera (loading).\n\n // Configurações específicas por tipo de campo\n tema?: ITiposTema,\t\t\t\t\t\t\t\t// Tema do botão (para button, etc).\n tituloClicavel?: string,\t\t\t\t\t// Título do botão (para button, slide, etc).\n textoAtivo?: string,\t\t\t\t\t\t\t// Texto quando ativo (para slide).\n textoInativo?: string,\t\t\t\t\t\t// Texto quando inativo (para slide).\n tituloChave?: string,\t\t\t\t\t\t // Titulo para a chave (para multikv).\n tituloValor?: string,\t\t\t\t\t\t // Titulo para o valor (para multikv).\n rows?: number,\t\t\t\t\t\t\t\t\t\t// Número de linhas (para textarea, select).\n cols?: number,\t\t\t\t\t\t\t\t\t\t// Número de colunas (para textarea).\n mask?: string | ((valor?: string) => string),\t// Máscara a ser aplicada ao valor.\n options?: WritableSignal<IKV[]>// Opções para campos que possuem seleção (select, radio, etc).\n multiple?: boolean,\t\t\t\t\t\t\t\t// Permitir múltiplas seleções (para select, upload, etc).\n canUnselect?: boolean,\t\t\t\t\t\t// Permitir desselecionar a opção selecionada (para select, radio, etc).\n componente?: Type<any>;\t\t\t\t\t\t// Componente Angular personalizado para renderizar este campo. (para custom)\n tipoBotao?: ITipoBotao;\t\t\t\t\t\t// Tipo do botão (para button).\n onClick?: (form: Formulario) => any;// Função chamada quando o campo é clicado (para button, etc).\n afterRefill?: (form: Formulario, options: IKV[] | null) => any;// Função chamada após o refill do campo (para select, autocomplete, etc).\n onMatchOption?: (form: Formulario, option?: IKV_ext) => any;\t// Função chamada quando uma opção é selecionada (para autocomplete, select, etc).\n onMatchOptionOnInit?: boolean,\t\t// Indica se deve disparar onMatchOption ao iniciar o componente.\n onComplete?: (form: Formulario, value: any) => any\t// Função chamada quando o campo é completado (para multifactor, etc).\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.\n showToolbar?: boolean,\t\t\t\t\t\t// Define se o campo deve exibir a toolbar de formatação (para editor).\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\"\n refill?: (form: Formulario) => Promise<IKV[] | null>;\t// Função que retorna os dados para popular o campo (para select, autocomplete, etc).\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.\n subFields?: IFields<any>; \t\t\t\t// Define os sub-campos (para multiobject).\n isCollapsed?: () => boolean;\t\t\t// Indica se o campo deve colapsar.\n getDisplay?: (value: any, form?: Formulario) => any;\t// Função para obter o valor a ser exibido no campo, normalmente no campo Referencia.\n textEmpty?: string;\t\t\t\t\t\t\t\t// Texto a ser exibido quando o campo estiver vazio (para select).\n}\n\n/************************************************\\\\\n// FASES\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFases<T> {\n fases: IFaseCampos<T>[],\n isLinear?: boolean,\n orientation?: 'horizontal' | 'vertical',\n}\n\nexport interface IFaseCampos<T> {\n nome: string,\n icone?: string | null,\n completed?: boolean,\n optional?: boolean,\n hasErrors?: boolean,\n errorMessage?: string,\n campos: (IFaseCamposAgrupados<T> | keyof T & string)[],\n disabled?: boolean,\n gridMin?: string,\t// Valor padrão para grid-template-columns mínimo das fases. Ex: \"150px\"\n gridMax?: string,\t// Valor padrão para grid-template-columns máximo das fases. Ex: \"1fr\"\n}\n\nexport interface IFaseCamposAgrupados<T> {\n campos: (keyof T & string)[],\n titulo?: string,\n area?: string,\n tituloArea?: string,\n}\n\n/************************************************\\\\\n// CAMPOS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport class CampoDe {\n\n static AutoComplete<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.AutoComplete,\n prop,\n titulo,\n ...config,\n };\n }\n\n static Button<T>(prop: any, tituloClicavel: string, click: (form: Formulario) => void, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Button,\n prop,\n tituloClicavel,\n onClick: click,\n ...config,\n }\n }\n\n static Checkbox<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Checkbox,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Color<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Color,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Cpf<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cpf.mask,\n placeholder: \"000.000.000-00\",\n regras: [Regra.CPF()],\n ...config,\n }\n }\n\n static Cnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cnpj.mask,\n placeholder: \"00.000.000/0000-00\",\n regras: [Regra.CNPJ()],\n ...config,\n }\n }\n\n static CpfCnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cpf_cnpj.mask,\n placeholder: \"000.000.000-00 ou 00.000.000/0000-00\",\n maxl: 18,\n // regras: [Regra.CPF_CNPJ()],\n ...config,\n }\n }\n\n static Custom<T>(prop: keyof T & string, componente: Type<any>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Custom,\n prop,\n titulo,\n componente,\n ...config,\n }\n }\n\n static Date<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Date,\n prop,\n titulo,\n ...config,\n }\n }\n\n static DateTime<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.DateTime,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Display<T>(prop: any, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Display,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Editor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Textarea,\n prop,\n titulo,\n area: 'auto / auto / span 2 / auto',\n ...config,\n }\n }\n\n static Email<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Email,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Hidden<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Hidden,\n need: false,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Icon<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Icon,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiFactor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiFactor,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiKV<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiKV,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiText<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiText,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Number<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Number,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Password<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Password,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Referencia<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Referencia,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Search<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Search,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Select<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Select,\n prop,\n titulo,\n ...config,\n };\n }\n\n static Slide<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Slide,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Upload<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Upload,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Text<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Textarea<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Textarea,\n prop,\n titulo,\n rows: 15,\n cols: 30,\n ...config,\n }\n }\n\n static Time<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Time,\n prop,\n titulo,\n ...config,\n }\n }\n\n static UploadImage<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Upload,\n prop,\n titulo,\n accept: \".png,.svg,.jpg,.jpeg,.gif\",\n ...config,\n }\n }\n\n}\n\n/************************************************\\\\\n// FILTROS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport class FiltroDe {\n\n static Boolean<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Select<T>((prop as any), titulo, {\n options: signal([{ k: \"\", v: \"Todos\" }, { k: \"true\", v: \"Sim\" }, { k: \"false\", v: \"Não\" }])\n }),\n ...config,\n };\n };\n\n static Hidden<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return CampoDe.Hidden<T>((prop as any), titulo, config);\n };\n\n /** Usar este FiltroTexto quando não for Hidden, Select ou Booleano */\n static Text<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return CampoDe.Text<T>((prop as any), titulo, config);\n };\n\n static Select<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Select<T>((prop as any), titulo),\n ...config,\n };\n };\n\n static Date<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Date<T>((prop as any), titulo),\n ...config,\n };\n };\n\n}\n\n/************************************************\\\\\n// VALIDAÇÃO de campos\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport enum IRegraTipo {\n ApenasNumeros = \"apenasNumeros\",\n}\n\nexport interface IRegra {\n nome: string;\n mensagem: string;\n validar: (value: any) => boolean | Promise<boolean>;\n}\n\nexport class Regra {\n\n static ApenasNumeros(): IRegra {\n return {\n nome: IRegraTipo.ApenasNumeros,\n mensagem: Regra.mensagens.apenasNumeros,\n validar: (value: any): boolean => {\n let s = value.replace(/(?![0-9])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static ApenasLista(): IRegra {\n return {\n nome: \"apenasLista\",\n mensagem: Regra.mensagens.apenasLista,\n validar: (value: any): boolean => {\n return Array.isArray(value);\n }\n }\n }\n\n static ApenasListaDeObjetos(): IRegra {\n return {\n nome: \"apenasListaDeObjetos\",\n mensagem: Regra.mensagens.apenasListaDeObjetos,\n validar: (value: any): boolean => {\n if (!Array.isArray(value)) return false;\n for (let item of value) {\n if (typeof item !== 'object' || item === null) return false;\n }\n return true;\n }\n }\n }\n\n static EntreValores(min: number, max: number): IRegra {\n return {\n nome: \"apenasEntre\",\n mensagem: Regra.mensagens.apenasEntre(min, max),\n validar: (value: any): boolean => {\n if (typeof value !== 'number') return false;\n return value >= min && value <= max;\n }\n }\n }\n\n static TamanhoMinimo(qntCaracteres: number): IRegra {\n return {\n nome: \"temSizeMin\",\n mensagem: Regra.mensagens.temSizeMin,\n validar: (value: any): boolean => {\n if (!value) return false;\n return value.length >= qntCaracteres;\n }\n }\n }\n\n static TamanhoMaximo(qntCaracteres: number): IRegra {\n return {\n nome: \"temSizeMax\",\n mensagem: Regra.mensagens.temSizeMax,\n validar: (value: any): boolean => {\n if (!value) return true;\n return value.length <= qntCaracteres;\n }\n }\n }\n\n static ApenasLetras(): IRegra {\n return {\n nome: \"temApenasLetras\",\n mensagem: Regra.mensagens.temApenasLetras,\n validar: (value: any): boolean => {\n if (!value) return true;\n let s = value.replace(/(?![A-Za-z])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static ApenasNumerosELetras(): IRegra {\n return {\n nome: \"temApenasNumerosELetras\",\n mensagem: Regra.mensagens.temApenasNumerosELetras,\n validar: (value: any): boolean => {\n if (!value) return true;\n let s = value.replace(/(?![0-9A-Za-z])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static TemMaiuscula(): IRegra {\n return {\n nome: \"temMaiuscula\",\n mensagem: Regra.mensagens.temMaiuscula,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n }\n }\n\n static TemMinuscula(): IRegra {\n return {\n nome: \"temMinuscula\",\n mensagem: Regra.mensagens.temMinuscula,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n }\n }\n\n static TemNumero(): IRegra {\n return {\n nome: \"temNumero\",\n mensagem: Regra.mensagens.temNumero,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[0-9]/.test(value);\n }\n }\n }\n\n static TemEspecial(): IRegra {\n return {\n nome: \"temEspecial\",\n mensagem: Regra.mensagens.temEspecial,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /(?![0-9a-zA-Z])./.test(value);\n }\n }\n }\n\n static Email(): IRegra {\n return {\n nome: \"isEmail\",\n mensagem: Regra.mensagens.isEmail,\n validar: (value: any): boolean => {\n if (!value) return true;\n return LibUtil.formats.email.validate(value);\n }\n }\n }\n\n static Same(compareValue: any, mensagem?: string): IRegra {\n return {\n nome: \"isSame\",\n mensagem: mensagem || Regra.mensagens.isSame,\n validar: (value: any): boolean => {\n return value === compareValue;\n }\n }\n }\n\n static SenhaForte(): IRegra {\n return {\n nome: \"senhaForte\",\n mensagem: Regra.mensagens.senhaForte,\n validar: (value: any): boolean => {\n if (!value) return true;\n const hasNumber = /[0-9]/.test(value);\n const hasMaiuscula = /[A-Z]/.test(value);\n const hasMinuscula = /[a-z]/.test(value);\n const hasEspecial = /(?![0-9a-zA-Z])./.test(value);\n\n return hasNumber && hasMaiuscula && hasMinuscula && hasEspecial;\n }\n }\n }\n\n static Unique(asyncValidate: (value: any) => Promise<boolean>): IRegra {\n return {\n nome: \"isUnique\",\n mensagem: Regra.mensagens.isUnique,\n validar: async (value: any): Promise<boolean> => {\n return await asyncValidate(value);\n }\n }\n }\n\n static CepBR(): IRegra {\n return {\n nome: \"isCepBR\",\n mensagem: Regra.mensagens.isCepBR,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /^([0-9]{2}[\\.]?[0-9]{3}[-]?[0-9]{3})$/.test(value);\n }\n }\n }\n\n static CPF(): IRegra {\n return {\n nome: \"isCPF\",\n mensagem: Regra.mensagens.isCPF,\n validar: (value: any): boolean => {\n if (!value) return true;\n let c = 0;\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n let cpf = LibUtil.apenasNumeros(value);\n if (cpf.length != 11) { return false; }\n let temp = cpf.slice(0, 9);\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n return cpf.charAt(10) == r.toString();\n }\n }\n }\n\n static CNPJ(): IRegra {\n return {\n nome: \"isCNPJ\",\n mensagem: Regra.mensagens.isCNPJ,\n validar: (value: any): boolean => {\n if (!value) return true;\n let digitCnpj = (cnpj: string) => {\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cnpj) { return false; }\n cnpj = LibUtil.apenasNumeros(cnpj);\n if (cnpj.length != 14) { return false; }\n let temp = cnpj.slice(0, 12);\n let c = 0;\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n return cnpj.charAt(13) == r.toString();\n }\n return digitCnpj(value);\n }\n }\n }\n\n static ClickRequired(): IRegra {\n return {\n nome: \"clickRequired\",\n mensagem: Regra.mensagens.clickRequired,\n validar: (value: any): boolean => {\n return value === true;\n }\n }\n }\n\n static Obrigatorio(): IRegra {\n return {\n nome: \"obrigatorio\",\n mensagem: Regra.mensagens.obrigatorio,\n validar: (value: any): boolean => {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string' && value.trim() === '') return false;\n if (Array.isArray(value) && value.length === 0) return false;\n return true;\n }\n }\n }\n\n static mensagens = {\n obrigatorio: \"Campo Obrigatório.\",\n apenasNumeros: \"Apenas Números.\",\n apenasLista: \"O valor deve ser uma lista.\",\n apenasListaDeObjetos: \"O valor deve ser uma lista de objetos.\",\n apenasEntre: (min: number, max: number) => `O valor deve estar entre ${min} e ${max}.`,\n temSizeMin: \"Tamanho Mínimo.\",\n temSizeMax: \"Tamanho Excedido.\",\n temApenasNumeros: \"Apenas Números.\",\n temApenasLetras: \"Apenas Letras.\",\n temApenasNumerosELetras: \"Apenas Números e Letras.\",\n temMaiuscula: \"Faltou maiúscula.\",\n temMinuscula: \"Faltou minúscula.\",\n temNumero: \"Faltou numero.\",\n temEspecial: \"Faltou caracter Especial.\",\n isEmail: \"Email inválido.\",\n isSame: \"Valores diferentes.\",\n senhaForte: \"Senha Fraca.\",\n isUnique: \"Já está em uso.\",\n isCepBR: \"CEP inválido no Brasil.\",\n isCPF: \"CPF inválido.\",\n isCNPJ: \"CNPJ inválido.\",\n clickRequired: \"Clique Necessário.\",\n }\n\n\n}\n","import { Component, computed, effect, input, model, OnInit, output, signal } from '@angular/core';\nimport { Formulario, IFaseCamposAgrupados, IFases, IFieldComponent, IFields } from '../../Formulario/Formulario';\nimport { LOG } from '../../../util/log';\n\ninterface IFaseCampoGrupo {\n tipo: 'campo' | 'grupo',\n faseIndex: number,\n nome?: string,\n campo?: IFieldComponent<any>,\n grupo?: IFaseCamposAgrupados<any>,\n}\n\n@Component({\n selector: 'fields-base-fields-values',\n template: '',\n})\nexport abstract class BaseFieldsValues<T> implements OnInit {\n\n abstract onSave(): Promise<any>;\n\n form!: Formulario;\n\n values = model<Partial<T>>();\n campos = input.required<IFields<T>>();\n fases = input<IFases<T>>();\n\n gmin = input<string | undefined>();\n gmax = input<string | undefined>();\n showFormControls = input<boolean>(false);\n camposNaoEncontrados = new Set<string>();\n gruposNaoEncontrados = new Set<string>();\n\n formulario = output<Formulario>();\n\n isFaseado = computed(() => {\n let fases = this.fases()?.fases;\n return fases !== undefined && fases.length > 0;\n });\n isDisabledAction = signal<boolean>(true);\n isLoadingActive = signal<boolean>(false);\n faseIndex = signal<number>(0);\n\n listaFase = computed(() => {\n return this.fases()?.fases ?? [];\n });\n faseGrupo = computed<IFaseCampoGrupo[]>(() => {\n let listaFase = this.listaFase();\n if (!listaFase || listaFase.length === 0) {\n return [];\n }\n let resultado: IFaseCampoGrupo[] = [];\n for (let i = 0; i < listaFase.length; i++) {\n for (let campoOrGrupo of listaFase[i].campos) {\n if (typeof campoOrGrupo === 'string') {\n let campo = this.form.campos()[campoOrGrupo];\n if (!campo) {\n this.camposNaoEncontrados.add(campoOrGrupo);\n }\n resultado = [...resultado, { tipo: 'campo', nome: campoOrGrupo, campo: campo, grupo: undefined, faseIndex: i }];\n } else {\n if (campoOrGrupo.area === undefined) {\n // Para cada campo deste grupo encontrado em this.form.campos(), deve retornar a area de algum dos campos ou undefined\n let areaEncontrada = undefined;\n for (let campoNome of campoOrGrupo.campos) {\n let campo = this.form.campos()[campoNome];\n if (campo && campo.area) {\n areaEncontrada = campo.area;\n break;\n }\n }\n campoOrGrupo.area = areaEncontrada;\n }\n if (!campoOrGrupo) {\n this.gruposNaoEncontrados.add(campoOrGrupo);\n }\n resultado = [...resultado, { tipo: 'grupo', campo: undefined, grupo: campoOrGrupo, faseIndex: i }];\n }\n }\n }\n return resultado;\n });\n\n constructor() {\n effect(() => {\n let faseIndex = this.faseIndex();\n this.updateDisabledAction();\n });\n }\n ngOnInit(): void {\n this.form = new Formulario(this.campos(), this.values(), this);\n this.formulario.emit(this.form);\n\n // Verifica campos e grupos não encontrados após um pequeno delay para garantir que todos os cálculos foram feitos\n setTimeout(() => {\n if (this.camposNaoEncontrados.size > 0) LOG(1, \"❌ Campos não encontrados nas fases:\", Array.from(this.camposNaoEncontrados));\n if (this.gruposNaoEncontrados.size > 0) LOG(1, \"❌ Grupos não encontrados nas fases:\", Array.from(this.gruposNaoEncontrados));\n }, 1)\n }\n\n updateDisabledAction(forcedDisabled: boolean = false) {\n if (forcedDisabled) return this.isDisabledAction.set(true);\n\n let isFaseado = this.isFaseado();\n if (!isFaseado) return this.isDisabledAction.set(false);\n\n let isLinear = this.fases()?.isLinear ?? false;\n if (!isLinear) return this.isDisabledAction.set(false);\n\n let isUltimaFase = this.faseIndex() >= (this.listaFase().length - 1);\n this.isDisabledAction.set(!isUltimaFase);\n }\n}\n","import { Component, computed, HostBinding, input, OnDestroy, OnInit, output, Signal } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { LOG } from '../../../util/log';\nimport { Formulario, IFieldComponent, IFields, Regra } from '../../Formulario/Formulario';\n\n@Component({ selector: 'app-BaseFieldsForm', template: '' })\nexport class BaseFieldsForm implements OnInit, OnDestroy {\n\n readonly form = input.required<Formulario>()\n readonly name = input.required<keyof IFields<any>>();\n change = output<string>();\n\n readonly value = computed(() => this.form().values()[this.name()]);\n readonly campo: Signal<IFieldComponent<any> | undefined> = computed(() => this.form().campos()[this.name()]);\n\n ngOnInit(): void {\n this.form().registredFields.update(old => ({ ...old, [this.name()]: this }));\n }\n ngOnDestroy(): void {\n this.form().registredFields.update(old => {\n const updated = { ...old };\n delete updated[this.name()];\n return updated;\n });\n }\n\n updateCampo(newCampoData: Partial<IFieldComponent<any>>) {\n this.form().updateCampo(this.name(), newCampoData);\n }\n\n updateValue(newValue: any, touch: boolean = true) {\n if (touch) this.tocarCampo();\n this.form().updateValues({ [this.name()]: newValue })\n }\n\n tocarCampo() {\n this.updateCampo({ touched: true });\n }\n\n onClickLabel() {\n LOG(2, \"Valor:\", this.value());\n LOG(2, \"Campo: \", this.campo());\n LOG(2, \"ClassOf: \", LibUtil.classof(this.value()));\n LOG(2, \"Opcoes: \", this.campo()?.options?.());\n }\n\n @HostBinding('style.grid-area')\n get gridArea() {\n return this.campo()?.area ?? 'auto';\n }\n\n onClickEmit() {\n this.campo()?.onClick?.(this.form());\n }\n\n // Executa o onChange com delay para utilizar o valor após ter executado o effect do empty.\n async onChangeEmit() {\n setTimeout(async () => {\n await this.executarValidacoes();\n this.campo()?.onChange?.(this.form());\n this.change.emit(this.value());\n }, 1)\n }\n\n async executarValidacoes() {\n // Padrão para todos os campos\n this.validarRequired();\n // Validações específicas\n await this.validarRegrasDoCampo();\n\n }\n\n validarRequired() {\n let isEmpty = this.campo()?.empty;\n if (this.campo()?.need && isEmpty) {\n LOG(1, `Campo '${this.name()}' é obrigatório e está vazio.`, this.campo());\n this.adicionaErro(Regra.mensagens.obrigatorio);\n } else {\n this.removerErro(Regra.mensagens.obrigatorio);\n }\n }\n\n async validarRegrasDoCampo() {\n let regrasDefinidas = this.campo()?.regras ?? [];\n if (!regrasDefinidas.length) return;\n for (const regra of regrasDefinidas) {\n if (regra) {\n let isValid = await regra.validar(this.value());\n if (!isValid) {\n this.adicionaErro(regra.mensagem);\n } else {\n this.removerErro(regra.mensagem);\n }\n } else {\n console.warn(`Regra de validação não encontrada para o campo \"${this.name()}\".`);\n }\n }\n }\n\n adicionaErro(erroNovo: string) {\n let errosAtuais = this.campo()?.errors ?? [];\n if (!errosAtuais.includes(erroNovo)) {\n this.updateCampo({ errors: [...errosAtuais, erroNovo] });\n }\n }\n\n removerErro(erroRemover: string) {\n let errosAtuais = this.campo()?.errors ?? [];\n if (errosAtuais.includes(erroRemover)) {\n this.updateCampo({ errors: errosAtuais.filter(e => e !== erroRemover) });\n }\n }\n\n}\n","import { Component, computed, effect, ElementRef, input, model, OnInit, output, signal, viewChild } from '@angular/core';\nimport { ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './ui-button.html',\n styleUrl: './ui-button.css',\n})\nexport class UiButton {\n\n botao = viewChild('botao', { read: ElementRef });\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\n ripple = viewChild('ripple', { read: ElementRef });\n\n icone = model<string | undefined | null>(null);\n iconeAntes = model<boolean>(true);\n iconeDepois = model<boolean>(false);\n iconeCategory = model<string>('fa fa-chevron-right');\n\n clicked = output<PointerEvent>();\n\n disabled = input<boolean>();\n eventPropagation = input<boolean>(false);\n radiusTabFormat = input<boolean>(false);\n tabindex = input<number | string>();\n tipo = input<ITipoBotao | undefined>(\"fill\");\n tema = model<ITiposTema | undefined>(\"\");\n classes = input<string>(\"\");\n ativo = input<boolean>(false);\n\n isCategory = computed(() => this.tipo() === 'menu-item-category' || this.tipo() === 'sidebar-item-category');\n buttonClasses = computed(() => {\n return `btnr ${this.tipo() || 'fill'} ${this.classes()}`;\n });\n\n corFundo = signal<string | undefined>(undefined);\n corFrente = signal<string | undefined>(undefined);\n\n constructor() {\n effect(() => {\n let tema = this.tema();\n switch (tema) {\n case \"primary\":\n this.corFundo.set(`var(--sys-primary)`);\n this.corFrente.set(`var(--sys-on-primary)`);\n break;\n case \"secondary\":\n this.corFundo.set(`var(--sys-secondary)`);\n this.corFrente.set(`var(--sys-on-secondary)`);\n break;\n case \"high\":\n this.corFundo.set(`var(--sys-high)`);\n this.corFrente.set(`var(--sys-on-high)`);\n break;\n case \"success\":\n this.corFundo.set(`var(--sys-success)`);\n this.corFrente.set(`var(--sys-on-success)`);\n break;\n case \"warning\":\n this.corFundo.set(`var(--sys-warning)`);\n this.corFrente.set(`var(--sys-on-warning)`);\n break;\n case \"error\":\n this.corFundo.set(`var(--sys-error)`);\n this.corFrente.set(`var(--sys-on-error)`);\n break;\n case \"info\":\n this.corFundo.set(`var(--sys-info)`);\n this.corFrente.set(`var(--sys-on-info)`);\n break;\n case \"white\":\n this.corFundo.set(`var(--sys-white)`);\n this.corFrente.set(`var(--sys-on-white)`);\n break;\n case \"black\":\n this.corFundo.set(`var(--sys-black)`);\n this.corFrente.set(`var(--sys-on-black)`);\n break;\n case \"card\":\n this.corFundo.set(`var(--sys-card)`);\n this.corFrente.set(`var(--sys-on-card)`);\n break;\n case \"\": // Sem Tema \n default: // Tema Desconhecido\n this.corFundo.set(undefined);\n this.corFrente.set(undefined);\n break;\n }\n });\n }\n\n\n onKeyPressed(ev: Event) {\n this.onClickExpanded(ev as any);\n }\n\n onClickExpanded(ev: PointerEvent) {\n if (this.disabled()) {\n ev.preventDefault();\n if (this.eventPropagation()) {\n ev.stopPropagation();\n }\n return;\n }\n this.botao()?.nativeElement.focus();\n if (ev instanceof PointerEvent) {\n this.createRipple(ev);\n }\n this.clicked.emit(ev);\n if (this.eventPropagation()) {\n ev.stopPropagation();\n }\n }\n\n createRipple(e: PointerEvent) {\n const rippleEffect = e.currentTarget ?? this.rippleEffect()?.nativeElement;\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\n const rect = rippleEffect.getBoundingClientRect();\n // Calcula a posição do clique relativa ao botão\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n // Define o tamanho do ripple (maior dimensão do botão * 2)\n const size = Math.max(rect.width, rect.height) * 2;\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (x - size / 2) + 'px';\n ripple.style.top = (y - size / 2) + 'px';\n ripple.classList.add('ripple');\n rippleEffect.appendChild(ripple);\n ripple.addEventListener('animationend', () => {\n ripple.remove();\n });\n }\n}\n","<button #botao type=\"button\" [class]=\"buttonClasses()\" [style.--btnr-corFundo]=\"corFundo()\"\n\t[style.--btnr-corFrente]=\"corFrente()\" [disabled]=\"disabled()\" [tabIndex]=\"tabindex()\"\n\t[class.radiusTabFormat]=\"radiusTabFormat()\" [class.disabled]=\"disabled()\" [class.ativo]=\"ativo()\"\n\t(keyup.Enter)=\"onKeyPressed($event)\" [class.category]=\"isCategory()\">\n\t@if(icone() && iconeAntes()){ <div class=\"icone iconeAntes\"><i [class]=\"icone()\"></i></div> }\n\t<ng-content />\n\t@if(icone() && iconeDepois()){ <div class=\"icone iconeDepois\"><i [class]=\"icone()\"></i></div> }\n\t@if(isCategory()){ <div class=\"icone iconeCategory\"><i [class]=\"iconeCategory()\"></i></div> }\n\t<span #rippleEffect class=\"expandedClick\" (click)=\"onClickExpanded($event)\">\n\t\t<span #ripple class=\"ripple\"></span>\n\t</span>\n</button>","import { Component, computed, input } from '@angular/core';\nimport { LibUtil } from '../../util/util';\n\n@Component({\n selector: 'ui-chip',\n templateUrl: './ui-chip.html',\n styleUrl: './ui-chip.css',\n})\nexport class UiChip {\n\n // HSL\n cor = input<number | null | undefined>();\n\n hue = computed<number | null>(() => {\n let hue = this.cor();\n if (LibUtil.classof(hue) == 'number') {\n if (hue! < 0) { return 0; };\n if (hue! > 359) { return 359; };\n return hue!;\n }\n return null;\n });\n\n\n}\n","<span class=\"baseChip\" [style.--ChipHue]=\"hue() ?? 'var(--sys-hue-color1)'\">\n\t<ng-content></ng-content>\n</span>","import { Component, ElementRef, input, model, output, viewChild } from '@angular/core';\nimport { IDropOutput, IDropZoneEvent, IFileMetadata } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\n\n@Component({\n selector: 'ui-drop-zone',\n templateUrl: './ui-drop-zone.html',\n styleUrl: './ui-drop-zone.css',\n})\nexport class UiDropZone {\n\n value = model<IDropOutput>();\n disabled = input<boolean>();\n sobrepor = input<boolean>();\n clicked = output<Event>();\n changed = output<IDropOutput>();\n\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\n ripple = viewChild('ripple', { read: ElementRef });\n // dropzonearea = viewChild('dropzonearea', { read: ElementRef })\n isDragging: boolean = false;\n\n async onDropZone(tipo: IDropZoneEvent, ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n if (this.disabled()) return;\n\n let target = ((ev as Event).target as HTMLDivElement);\n if (tipo == \"dragenter\" && !this.disabled()) this.isDragging = true;\n if (tipo == \"dragleave\" && !this.disabled()) this.isDragging = false;\n if (tipo == \"click\" && target && target.classList?.contains(\"dropzone\")) {\n this.clicked.emit(ev);\n }\n }\n\n async onDrop(ev: DragEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n this.isDragging = false;\n if (this.disabled()) return;\n\n const dataTransfer = ev.dataTransfer;\n if (!dataTransfer) {\n this.createRipple(ev as DragEvent, \"red\");\n return;\n }\n this.createRipple(ev as DragEvent);\n\n const output: IDropOutput = {\n timestamp: new Date().toISOString(),\n types: (dataTransfer.types as any),\n tipo: \"unknown\",\n };\n\n // 1. Verificar se há arquivos\n if (dataTransfer.files && dataTransfer.files.length > 0) {\n\n output.data = ([] as IFileMetadata[]);\n output.tipo = \"file\";\n\n for await (let file of dataTransfer.files) {\n let lastIndexOf = file.name.lastIndexOf(\".\");\n if (lastIndexOf < 0) {\n LOG(1, `❌ O arquivo ${file.name} está sem uma extensão.`);\n continue;\n }\n let base64: string | null = await LibUtil.fileReader(file);\n if (!base64) {\n LOG(1, `❌ Ocorreu um erro com o arquivo ${file.name}.`);\n continue;\n }\n\n (output.data as IFileMetadata[]).push({\n base64: base64,\n name: file.name,\n size: file.size,\n extension: file.name.slice(lastIndexOf), // inclui o \".\"\n type: file.type,\n lastModifiedIso: new Date(file.lastModified).toISOString(),\n });\n }\n\n }\n\n // 2. Verificar se há texto\n const text = dataTransfer.getData('text/plain');\n if (text) {\n output.data = text;\n output.tipo = \"text\";\n }\n\n // 3. Verificar se há HTML\n const html = dataTransfer.getData('text/html');\n if (html) {\n output.data = html;\n output.tipo = \"html\";\n }\n\n // 4. Verificar se há URL\n const url = dataTransfer.getData('text/uri-list');\n if (url) {\n output.data = url;\n output.tipo = \"url\";\n }\n\n // 5. Verificar se há dados JSON customizados\n try {\n const json = dataTransfer.getData('application/json');\n if (json) {\n output.data = JSON.parse(json);\n output.tipo = \"json\";\n }\n } catch (e) {\n // JSON inválido, ignorar\n }\n\n // 6. Capturar todos os outros tipos de dados disponíveis\n dataTransfer.types.forEach(type => {\n if (!['text/plain', 'text/html', 'text/uri-list', 'application/json', 'Files'].includes(type)) {\n const data = dataTransfer.getData(type);\n if (data) {\n output.data = data;\n output.tipo = \"unknown\";\n }\n }\n });\n\n this.value.set(output);\n this.changed.emit(output);\n }\n\n createRipple(ev: DragEvent, classColor: string = \"\") {\n const rippleEffect = ev.currentTarget ?? this.rippleEffect()?.nativeElement;\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\n const rect = rippleEffect.getBoundingClientRect();\n // Calcula a posição do clique relativa ao botão\n const x = ev.clientX - rect.left;\n const y = ev.clientY - rect.top;\n // Define o tamanho do ripple (maior dimensão do botão * 2)\n const size = Math.max(rect.width, rect.height) * 2;\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (x - size / 2) + 'px';\n ripple.style.top = (y - size / 2) + 'px';\n ripple.classList.add('ripple');\n if (classColor) {\n ripple.classList.add(classColor);\n }\n rippleEffect.appendChild(ripple);\n ripple.addEventListener('animationend', () => {\n ripple.remove();\n });\n }\n}\n","<div #dropzonearea class=\"dropzone\" [class.naosobrepor]=\"!sobrepor()\" (dragenter)=\"onDropZone('dragenter',$event)\"\n\t(dragleave)=\"onDropZone('dragleave',$event)\" (drop)=\"onDrop($event)\" (dragover)=\"onDropZone('dragover',$event)\"\n\t(click)=\"onDropZone('click',$event)\" [class.disabled]=\"disabled()\" [class.dragging]=\"isDragging\">\n\t<span #rippleEffect class=\"rippleArea\">\n\t\t<span #ripple class=\"ripple\"></span>\n\t</span>\n</div>\n<ng-content></ng-content>","import { Component, input, output } from '@angular/core';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { IFileMetadata } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-file-list',\n templateUrl: './ui-file-list.html',\n styleUrl: './ui-file-list.css',\n imports: [UiButton]\n})\nexport class UiFileList {\n\n disabled = input<boolean>();\n filesList = input<IFileMetadata[]>();\n remove = output<IFileMetadata>();\n\n onDelete(file: IFileMetadata) {\n if (this.disabled()) return;\n this.remove.emit(file);\n }\n\n}\n","<div class=\"e-filelist-area\">\n\t@for (file of filesList(); track $index) {\n\t<div class=\"e-filelist-item\">\n\t\t<div class=\"e-filelist-item-icon\">\n\t\t\t<i class=\"bi bi-file-earmark-fill\"></i>\n\t\t\t<div class=\"e-filelist-item-icon-ext\">{{ file.extension?.slice(1) }}</div>\n\t\t</div>\n\t\t<div class=\"e-filelist-item-text\">{{ file.name }}</div>\n\t\t<div class=\"e-filelist-action\">\n\t\t\t@if(!disabled()){\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" [disabled]=\"disabled()\" (click)=\"onDelete(file)\" icone=\"bi bi-x-lg\">\n\t\t\t</ui-button>\n\t\t\t}\n\t\t</div>\n\t</div>\n\t}\n</div>","import { AfterViewInit, Component, computed, effect, ElementRef, HostListener, inject, input, model, OnDestroy, output, signal, viewChild } from '@angular/core';\nimport { computePosition, flip, offset, shift, detectOverflow, Elements, autoUpdate } from '@floating-ui/dom';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { IKV } from '../../interfaces/interfaces';\nimport { UiButton } from \"../ui-button/ui-button\";\n\nexport interface IOptionValue {\n optionChanged?: IKV;\n keys: string | number | string[] | number[];\n values: string | number | string[] | number[];\n}\n\ninterface IKVSeletor extends IKV {\n selected: boolean;\n choosing: boolean;\n}\n\n@Component({\n selector: 'ui-select',\n templateUrl: './ui-select.html',\n styleUrl: './ui-select.css',\n host: { '[class]': 'hostClasses()' },\n imports: [UiButton],\n})\nexport class UiSelect implements OnDestroy, AfterViewInit {\n\n elementRef: ElementRef = inject(ElementRef);\n\n value = model<string | number | string[] | number[] | undefined>();\n options = input<IKV[] | undefined | null>();\n\n name = input<string | number | undefined>();\n placeholder = input<string>();\n disabled = input<boolean>();\n multiple = input<boolean>(false);\n canUnselect = input<boolean | undefined>(false);\n textEmpty = input<string | undefined>(\"Nada selecionado\");\n\n changed = output<IOptionValue>();\n\n isOpenedOptions = signal(false);\n markedOptionKey = signal<string | number | null | undefined>(null);\n elementoAcima: HTMLElement | null = null;\n // isUnderOverflow = signal(false);\n isSmallScreen = signal(window.innerWidth < 500);\n\n\n textoFiltrado = signal<string>(\"\");\n\n readonly optionsList = computed<IKVSeletor[]>(() => {\n const options = this.options?.() ?? [];\n if (this.multiple() !== true) {\n let valor = (this.value() as string | number | undefined);\n return options.map(op => ({\n ...op,\n selected: String(op.k) == String(valor),\n choosing: op.k == this.markedOptionKey()\n }));\n } else {\n let valor = (this.value() as string[] | number[] | undefined);\n if (!Array.isArray(valor)) {\n valor = [];\n }\n return options.map(op => ({\n ...op,\n selected: op.k != null ? valor.some(v => String(op.k) == String(v)) : false,\n choosing: op.k == this.markedOptionKey()\n }));\n }\n });\n readonly optionsFiltered = computed<IKVSeletor[]>(() => {\n let words = this.textoFiltrado().trim().split(\" \").filter(t => t != \"\");\n const options = (this.optionsList() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\n // Sem filtro, retorna tudo\n if (words.length === 0) return options;\n return options.filter(op => {\n for (const w of words) {\n let encontrado = false;\n if (op.v != null && LibUtil.contem(op.v, w)) {\n encontrado = true;\n }\n // Termo não encontrado na opção\n if (!encontrado) return false;\n }\n // Todos os termos encontrados\n return true;\n }).map(op => {\n let data = op.v?.toString() || '';\n\n // Substitui o valor do html, colocando uma mark em volta do texto buscado.\n if (words.length > 0) {\n for (let word of words) {\n let w = word.toLowerCase();\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n // Se w estiver dentro de < ou >, ignora (para não interferir em tags HTML)\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\n // Se a palavra for encontrada, envolve com a tag <mark>\n let pos = preparedData.indexOf(w);\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n return {\n ...op,\n html: data,\n };\n });\n });\n\n readonly textoExibindo = computed<string>(() => {\n const val = this.value();\n if (this.multiple() !== true) {\n let selectedOption = this.optionsList().find(op => String(op.k) == String(val));\n return selectedOption?.v ?? (selectedOption?.k ? `⚠️ Chave: ${selectedOption?.k}` : (this.textEmpty() ?? 'Nada selecionado'));\n }\n\n let valor = (this.value() as string[] | number[] | undefined);\n if (valor == undefined || !Array.isArray(valor)) {\n valor = [];\n }\n const textosSelecionados = this.optionsList()\n .filter(op => valor.some(v => String(v) == String(op.k)))\n .map(op => op.v);\n return textosSelecionados.length > 0 ? `[${textosSelecionados.length}] ${textosSelecionados.join(\", \")}` : (this.textEmpty() ?? 'Nada selecionado');\n\n });\n\n readonly displayText = viewChild<ElementRef>('displayText');\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\n readonly optionsOverlay = viewChild<ElementRef>('optionsOverlay');\n readonly optionsContainer = viewChild<ElementRef>('optionsContainer');\n readonly optionSearchInput = viewChild<ElementRef>('optionSearchInput');\n optionMinWidth = signal<number>(0);\n menuPosition = signal<{ top: string; left: string }>({ top: '0px', left: '0px' });\n\n // scrollCleanup: (() => void) | null = null;\n\n constructor() {\n effect(() => {\n const eTrigger = this.triggerElement()?.nativeElement as HTMLElement;\n if (!eTrigger) return;\n\n if (!this.isOpenedOptions()) return;\n\n const cleanupAutoUpdate = autoUpdate(\n eTrigger,\n this.optionsContainer()?.nativeElement,\n () => this.updatePosition()\n );\n return () => {\n cleanupAutoUpdate();\n };\n\n\n // const resizeObserver = new ResizeObserver((entries) => {\n // // Atualiza a posição do menu quando redimensiona\n // if (this.isOpenedOptions()) {\n // this.updatePosition();\n // }\n // });\n // resizeObserver.observe(eTrigger);\n // return () => resizeObserver.disconnect();\n });\n\n // Atualiza posição quando o menu abre\n effect(() => {\n if (this.isOpenedOptions()) {\n setTimeout(() => {\n this.updatePosition();\n // this.setupScrollListeners();\n this.focusToSearchInput();\n }, 1);\n } else {\n // this.cleanupScrollListeners();\n }\n });\n }\n\n ngOnDestroy() {\n if (this.isOpenedOptions() == true) this.closeOverlay();\n // this.cleanupScrollListeners();\n }\n ngAfterViewInit() {\n this.checkScreenSize();\n this.setOverlaySizeToSizeViewport();\n\n\n this.updatePosition();\n }\n\n\n // Manipula mudança de valor (valueOfK não chegará nulo ou undefined)\n onChange(valueOfK: string | number | null): string | number | string[] | number[] {\n if (valueOfK == null) return '';\n\n let optionChanged = this.options?.()?.find(op => String(op.k) === String(valueOfK));\n let newKeys = valueOfK;\n let newValues = optionChanged?.v ?? newKeys;\n\n // SINGLE\n if (this.multiple() !== true) {\n if (this.canUnselect() === true && this.value() === newKeys) {\n newKeys = '';\n newValues = '';\n }\n this.changed.emit({ optionChanged, keys: newKeys, values: newValues });\n return newKeys;\n }\n\n // MULTIPLE (canUnselect sempre é true)\n let currentKeys = this.value() ?? [] as any[];\n let currentValues = [];\n if (!Array.isArray(currentKeys)) {\n currentKeys = [];\n }\n\n if (currentKeys.indexOf(newKeys) === -1) {\n currentKeys = [...currentKeys, newKeys];\n } else {\n currentKeys = currentKeys.filter(v => v !== newKeys);\n }\n setTimeout(() => {\n this.updatePosition();\n }, 1);\n\n currentValues = currentKeys.map(k => this.options?.()?.find(op => op.k === k)?.v ?? k);\n this.changed.emit({ optionChanged, keys: currentKeys, values: currentValues });\n return currentKeys;\n }\n\n // Abre ou fecha o overlay de opções\n onOpenOrCloseOptions() {\n if (!this.disabled()) {\n if (this.isOpenedOptions()) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n }\n }\n\n // Fecha o overlay de opções\n protected closeOverlay() {\n setTimeout(() => {\n this.isOpenedOptions.set(false);\n }, 2)\n\n this.textoFiltrado.set(\"\");\n this.markedOptionKey.set(null);\n this.focusToDisplayText();\n }\n\n // Abre o overlay de opções\n protected openOverlay() {\n this.updatePosition();\n setTimeout(() => {\n this.isOpenedOptions.set(true);\n }, 2)\n }\n\n // Seleciona uma opção\n onSelectOption(option?: IKV) {\n if (!option || option.k == null) {\n LOG(1, `❌ (SelectOption) Chave nula! (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\n return;\n }\n this.value.set(this.onChange(option.k));\n if (this.multiple() !== true) {\n this.closeOverlay();\n } else {\n this.focusToSearchInput();\n }\n }\n\n // Filtra as opções\n onInputSearch(text: string) {\n this.textoFiltrado.set(text);\n this.markedOptionKey.set(null);\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.textoFiltrado.set(\"\");\n this.focusToSearchInput();\n }\n\n focusToSearchInput() {\n this.optionSearchInput()?.nativeElement?.focus();\n }\n\n focusToDisplayText() {\n this.displayText()?.nativeElement?.focus();\n }\n\n // Navegação por teclado\n markKey(event: KeyboardEvent) {\n const options = this.optionsFiltered();\n if (options.length === 0) return;\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\n let currentKV = options.find(op => op.k === this.markedOptionKey());\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + options.length) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n event.preventDefault();\n this.closeOverlay();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (this.markedOptionKey() != null) {\n this.onSelectOption(currentKV);\n }\n this.closeOverlay();\n }\n }\n\n // ----------------------------------------------------\n // Funções de Suporte ao Overlay\n // ----------------------------------------------------\n\n // Quando o overlay estiver aberto, define a classe showing no host\n readonly hostClasses = computed(() => {\n return this.isOpenedOptions() ? 'opened' : '';\n })\n\n\n // Fecha o overlay ao clicar fora\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n if (!clickedInside && this.isOpenedOptions()) {\n setTimeout(() => {\n this.isOpenedOptions.set(false);\n }, 2)\n this.textoFiltrado.set(\"\");\n this.markedOptionKey.set(null);\n }\n }\n\n // Configura os listeners de scroll (Só necessita se não utilizar o autoUpdate do floating-ui, que já faz isso automaticamente)\n // private setupScrollListeners() {\n // const trigger = this.triggerElement()?.nativeElement;\n // if (!trigger) return;\n\n // const updatePositionHandler = () => this.updatePosition();\n // const scrollElements: HTMLElement[] = [];\n // window.addEventListener('scroll', updatePositionHandler, { passive: true });\n // let parent = trigger.parentElement;\n // while (parent) {\n // const overflow = window.getComputedStyle(parent).overflow;\n // const overflowY = window.getComputedStyle(parent).overflowY;\n // const overflowX = window.getComputedStyle(parent).overflowX;\n // if (\n // overflow === 'auto' || overflow === 'scroll' ||\n // overflowY === 'auto' || overflowY === 'scroll' ||\n // overflowX === 'auto' || overflowX === 'scroll'\n // ) {\n // parent.addEventListener('scroll', updatePositionHandler, { passive: true });\n // scrollElements.push(parent);\n // }\n // parent = parent.parentElement;\n // }\n // this.scrollCleanup = () => {\n // window.removeEventListener('scroll', updatePositionHandler);\n // scrollElements.forEach(el => {\n // el.removeEventListener('scroll', updatePositionHandler);\n // });\n // };\n // }\n\n // Limpa os listeners de scroll (Só necessita se não utilizar o autoUpdate do floating-ui, que já faz isso automaticamente)\n // private cleanupScrollListeners() {\n // if (this.scrollCleanup) {\n // this.scrollCleanup();\n // this.scrollCleanup = null;\n // }\n // }\n\n // Atualiza a posição do menu de opções\n private async updatePosition() {\n if (this.isSmallScreen()) return;\n\n const trigger = this.triggerElement()?.nativeElement;\n const optionsContainer = this.optionsContainer()?.nativeElement;\n if (!trigger || !optionsContainer) return;\n\n const { x, y } = await computePosition(trigger, optionsContainer, {\n placement: 'bottom-start',\n middleware: [\n offset(2),\n flip({\n fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],\n }),\n shift({ padding: 10 }),\n ],\n });\n this.menuPosition.set({\n left: `${x}px`,\n top: `${y}px`\n });\n }\n\n setOverlaySizeToSizeViewport() {\n // if (!this.isOpenedOptions()) return;\n\n // Obtem o tamanho da largura da viewport\n const viewportWidth = window.innerWidth;\n const parcialViewport = viewportWidth * 0.92;\n\n const overlay = this.optionsOverlay()?.nativeElement as HTMLElement;\n if (overlay) {\n let currentElement = overlay.parentElement as HTMLElement | null;\n while (currentElement) {\n let larguraOverlay = overlay.clientWidth;\n\n // Se chegar no body, para (para evitar mover o overlay para fora do body)\n if (currentElement.tagName.toLowerCase() === \"body\") break;\n\n // Move o overlay para o próximo nível acima\n currentElement.appendChild(overlay);\n\n if (larguraOverlay >= parcialViewport) {\n currentElement = null;\n break;\n }\n\n currentElement = currentElement.parentElement as HTMLElement;\n }\n\n }\n }\n\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\n this.isSmallScreen.set(e.matches);\n const eTrigger = this.triggerElement()?.nativeElement as HTMLElement;\n if (eTrigger) {\n if (this.isSmallScreen()) {\n this.optionMinWidth.set(0);\n } else {\n this.optionMinWidth.set(eTrigger.offsetWidth - 4);\n }\n }\n }\n\n checkScreenSize() {\n const mediaQuery = window.matchMedia('(max-width: 500px)');\n this.onChangeMediaQuery(mediaQuery);\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\n }\n\n // Move o scroll para a opção marcada\n private moveScrollToMarkedOption() {\n setTimeout(() => {\n const optionsContainer = this.optionsContainer()?.nativeElement?.querySelector(\".e-select-options-list\") as HTMLElement;\n const markedOption = optionsContainer?.querySelector('.e-select-option.choosing') as HTMLElement;\n if (optionsContainer && markedOption) {\n const containerTop = optionsContainer.scrollTop;\n const containerBottom = containerTop + optionsContainer.clientHeight;\n const optionTop = markedOption.offsetTop;\n const optionBottom = optionTop + markedOption.offsetHeight;\n if (optionTop < containerTop) {\n optionsContainer.scrollTop = optionTop - 40; // 40px do elemento Search\n } else if (optionBottom > containerBottom) {\n optionsContainer.scrollTop = optionBottom - optionsContainer.clientHeight;\n }\n }\n }, 1);\n }\n}\n","<div #triggerElement class=\"e-select-container\" (click)=\"onOpenOrCloseOptions()\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\n\t(keyup.ArrowDown)=\"onOpenOrCloseOptions()\" (keyup.ArrowUp)=\"onOpenOrCloseOptions()\">\n\t<div class=\"e-select\">\n\t\t<input #displayText type=\"text\" [name]=\"'select_'+(name() ?? '')\" [value]=\"textoExibindo()\" readonly\n\t\t\t[placeholder]=\"placeholder() ?? ''\" [disabled]=\"disabled()\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t</div>\n\t<div class=\"e-select-arrow-area\">\n\t\t<div class=\"e-select-arrow\" [class.open]=\"isOpenedOptions()\"></div>\n\t</div>\n</div>\n\n\n<div #optionsOverlay class=\"e-select-overlay\" [class.open]=\"isOpenedOptions()\" (click)=\"closeOverlay()\">\n\n\t<div #optionsContainer class=\"e-select-options-container\" [class.open]=\"isOpenedOptions()\"\n\t\t[class.smallScreen]=\"isSmallScreen()\" [style.left]=\"menuPosition().left\" [style.top]=\"menuPosition().top\">\n\t\t@if(isOpenedOptions()) {\n\t\t<div class=\"e-select-search-area\" [style.minWidth.px]=\"optionMinWidth()\">\n\t\t\t<input #optionSearchInput type=\"text\" name=\"e-select-search-input\" class=\"e-select-search\"\n\t\t\t\t(keyup)=\"markKey($event)\" placeholder=\"Procurar...\" [value]=\"textoFiltrado()\" (keydown.Escape)=\"closeOverlay()\"\n\t\t\t\tsize=\"8\" (keydown.Tab)=\"closeOverlay()\" (input)=\"onInputSearch($event.target.value)\" />\n\t\t\t@if(textoFiltrado().length > 0) {\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" class=\"e-select-search-clearicon\" (click)=\"onClearSearch()\"\n\t\t\t\ticone=\"fa fa-times\"></ui-button>\n\t\t\t}\n\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-select-search-icon\" (click)=\"focusToSearchInput()\"\n\t\t\t\ticone=\"fa fa-search\"></ui-button>\n\t\t</div>\n\t\t<div class=\"e-select-options-list\">\n\t\t\t@for(option of optionsFiltered(); track $index) {\n\t\t\t<div class=\"e-select-option\" [class.selected]=\"option.selected\" [style.minWidth.px]=\"optionMinWidth()\"\n\t\t\t\t[title]=\"option.v\" (click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\n\t\t\t\t[class.choosing]=\"option.choosing\">\n\t\t\t\t<div class=\"e-select-option-check\"></div>\n\t\t\t\t<div class=\"e-select-option-text\" [innerHTML]=\"option.html\"></div>\n\t\t\t</div>\n\t\t\t}@empty {\n\t\t\t<div class=\"e-select-option empty\">\n\t\t\t\tNenhuma opção disponível\n\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t\t}\n\t</div>\n\n</div>","import { Component, computed, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\nimport { UiButton } from \"../ui-button/ui-button\";\n\n@Component({\n selector: 'ui-procurar',\n templateUrl: './ui-procurar.html',\n styleUrl: './ui-procurar.css',\n host: { '[class.focused]': 'focused()' },\n imports: [UiButton],\n})\nexport class UiProcurar {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n\n inputed = output<string>();\n changed = output<string>();\n value = model<string>('');\n colapsed = model<boolean | undefined>(false);\n autoColapse = model<boolean | undefined>(false);\n\n computedColapsed = computed(() => {\n if (this.focused() || this.value().length > 0) {\n return false;\n }\n if (this.autoColapse()) {\n return this.value().length === 0;\n }\n return this.colapsed() ?? false;\n });\n\n name = input<string | number | undefined>();\n placeholder = input<string>();\n disabled = input<boolean>();\n\n focused = signal<boolean | undefined>(false);\n\n onInput(value: string) {\n this.value.set(value);\n this.inputed.emit(value);\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.value.set('');\n this.focusSearchInput();\n this.onInputed();\n this.onChange();\n }\n\n focusSearchInput() {\n this.searchInput()?.nativeElement?.focus();\n }\n\n onClickSearchIcon() {\n this.focusSearchInput();\n this.onInputed();\n this.onChange();\n }\n\n onSearch() {\n this.onInputed();\n this.onChange();\n }\n\n onInputed() {\n this.inputed.emit(this.value());\n }\n\n onChange() {\n this.changed.emit(this.value());\n }\n\n\n onFocus(ev: FocusEvent) {\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n}\n","<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-procurar-icone-search\" (clicked)=\"onClickSearchIcon()\" tabindex=\"-1\"\n\ticone=\"fa fa-search\">\n</ui-button>\n<div class=\"e-procurar-input-container\" [class.colapsed]=\"computedColapsed()\">\n\t<input #searchInput type=\"text\" class=\"e-procurar-input\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\n\t\t[name]=\"'procurar_'+(name() ?? '')\" (change)=\"onChange()\" [placeholder]=\"placeholder() ?? 'Procurar...'\"\n\t\t[disabled]=\"disabled()\" (keyup.Enter)=\"onSearch()\" (keyup.Escape)=\"onClearSearch()\" (focus)=\"onFocus($event)\"\n\t\t(blur)=\"onBlur($event)\" />\n</div>\n@if(value().length > 0) {\n<ui-button tipo=\"icon\" tema=\"error\" class=\"e-procurar-botao-clear\" (clicked)=\"onClearSearch()\" title=\"Limpar\"\n\ticone=\"fa fa-times\">\n</ui-button>\n}","import { Component, input } from '@angular/core';\nimport { IUiProgressMode } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-progress',\n templateUrl: './ui-progress.html',\n styleUrl: './ui-progress.css',\n})\nexport class UiProgress {\n\n value = input<number | undefined>(0);\n bufferValue = input<number | undefined>(0);\n mode = input<IUiProgressMode | undefined>('indeterminate');\n\n}\n","@switch (mode()) {\n@case ('determinate'){\n<div class=\"bar-progress determinate\">\n\t<div class=\"bar-progress-filled\" [style.width.%]=\"value() ?? 0\"></div>\n</div>\n}\n\n@case ('indeterminate'){\n<div class=\"bar-progress indeterminate\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n@case ('buffer'){\n<div class=\"bar-progress buffer\">\n\t<div class=\"bar-progress-filled\" [style.width.%]=\"value() ?? 0\"></div>\n\t<div class=\"bar-progress-buffer\" [style.width.%]=\"bufferValue() ?? 0\"></div>\n</div>\n}\n\n@case ('query'){\n<div class=\"bar-progress query\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n@default {\n<div class=\"bar-progress indeterminate\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n}","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ui-slide',\n templateUrl: './ui-slide.html',\n styleUrl: './ui-slide.css',\n host: { '[class.focused]': 'focused()' }\n})\nexport class UiSlide implements AfterViewInit {\n\n sliderbox = viewChild('sliderbox', { read: ElementRef });\n\n value = model<boolean>(false);\n disabled = input<boolean>();\n focused = model<boolean>(false);\n focus = input<boolean>(false);\n changed = output<boolean>();\n\n ativo = computed(() => {\n const val = (this.value() as any);\n return val === true || val === 'true' || val === 1 || val === '1';\n });\n\n constructor() {\n effect(() => {\n if (this.focus()) {\n this.sliderbox()?.nativeElement.focus();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.sliderbox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onClickSlide();\n }\n });\n }\n\n onClickSlide() {\n if (this.disabled()) return;\n\n const currentValue = (this.value() as any);\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\n this.value.set(newValue);\n this.changed.emit(newValue);\n }\n\n onFocus(ev: FocusEvent) {\n if (this.disabled()) return;\n\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n\n}\n","<div #sliderbox class=\"sliderbox\" tabindex=\"0\" (click)=\"onClickSlide()\" [class.ativo]=\"ativo()\"\n\t[class.disabled]=\"disabled()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\">\n\t<div class=\"slidercircle\">\n\t\t<i class=\"checkmark bi bi-check-lg\"></i>\n\t\t<i class=\"nocheckmark bi bi-dash\"></i>\n\t</div>\n</div>","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ui-check-box',\n templateUrl: './ui-check-box.html',\n styleUrl: './ui-check-box.css',\n host: {\n '[class.focused]': 'focused()',\n }\n})\nexport class UiCheckBox implements AfterViewInit {\n\n marcabox = viewChild('marcabox', { read: ElementRef });\n\n value = model<boolean>(false);\n disabled = input<boolean>();\n focused = model<boolean>(false);\n focus = input<boolean>(false);\n changed = output<boolean>();\n single = input<boolean>(false);\n hasDash = input<boolean>(false);\n\n ativo = computed(() => {\n const val = (this.value() as any);\n return val === true || val === 'true' || val === 1 || val === '1';\n });\n\n constructor() {\n effect(() => {\n if (this.focus()) {\n this.marcabox()?.nativeElement.focus();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.marcabox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onClickMarcador();\n }\n });\n }\n\n onClickMarcador() {\n if (this.disabled()) return;\n\n const currentValue = (this.value() as any);\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\n this.value.set(newValue);\n this.changed.emit(newValue);\n }\n\n onFocus(ev: FocusEvent) {\n if (this.disabled()) return;\n\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n\n}\n","<div #marcabox class=\"marcador-area\" tabindex=\"0\" (click)=\"onClickMarcador()\" [class.ativo]=\"ativo()\"\n\t[class.multiple]=\"!single()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\" [class.disabled]=\"disabled()\">\n\t<div class=\"checkmark {{ single() ? 'simples' : 'multiple' }}\" [class.hasDash]=\"hasDash()\" [class.ativo]=\"ativo()\">\n\t</div>\n</div>","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ui-list-errors',\n templateUrl: './ui-list-errors.html',\n styleUrl: './ui-list-errors.css',\n})\nexport class UiListErrors {\n\n show = input.required<boolean | undefined>();\n\n errors = input.required<(string | undefined)[] | undefined>();\n dica = input.required<string | undefined>();\n}\n","@if(show()){\n<div class=\"erroArea\" [class.hide]=\"(!errors() || errors()?.length === 0) && (!dica())\">\n\t@for (erro of errors(); track $index) {\n\t<span class=\"erroText\">{{ erro ?? 'Erro desconhecido' }}</span>\n\t}\n\t@if(dica()){\n\t<span class=\"dicaText\">{{ dica() ?? '' }}</span>\n\t}\n</div>\n}","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ui-loading',\n templateUrl: './ui-loading.html',\n styleUrl: './ui-loading.css',\n})\nexport class UiLoading {\n\n}\n","<i class=\"fa fa-spinner\"></i>","import { AfterViewInit, Component, effect, ElementRef, inject, input, model, OnDestroy, OnInit, signal, viewChild } from '@angular/core';\nimport { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { LibUtil } from '../../util/util';\nimport { IPosicoesFloating } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-menu',\n templateUrl: './ui-menu.html',\n styleUrl: './ui-menu.css',\n imports: [UiButton],\n host: { '[class.opened]': 'isOpened()' }\n})\nexport class UiMenu implements OnDestroy, OnInit, AfterViewInit {\n // UTILIZE:\n // 'slot:botao' para colocar o botão que irá abrir o menu, ou utilize o botão padrão (três pontos verticais)\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\n\n elementRef: ElementRef = inject(ElementRef);\n\n readonly disabled = input<boolean>();\n readonly icone = input<string | undefined | null>(\"bi bi-three-dots-vertical\");\n autoCloseInCascade = model<boolean>(true);\n\n posicao = model<IPosicoesFloating & string>('right-start');\n isOpened = model(false);\n id = signal(LibUtil.uuid().split('-')[0]);\n internalId = signal<{ id: string | undefined; changed: boolean } | undefined>({ id: undefined, changed: false });\n isSmallScreen = signal(window.innerWidth < 500);\n optionMinWidth = signal<number>(0);\n menuPosition = signal<{ top: string; left: string }>({ top: '0px', left: '0px' });\n zIndex = signal<string>('999');\n closeOverlayObserver = new MutationObserver((mutations) => {\n let hasOpenClass = false;\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n const target = mutation.target as HTMLElement;\n if (target.classList.contains('open')) {\n hasOpenClass = true;\n break;\n }\n }\n }\n if (!hasOpenClass) {\n // LOG(1, \"%cObserver detectou overlay fechado:\", 'color: lightcoral;', mutations?.[0]);\n this.closeOverlay(true); // Callback para fechar o overlay quando a mutação indicar que perdeu a classe 'open'\n }\n });\n\n\n readonly menuTrigger = viewChild<ElementRef>('menuTrigger');\n readonly menuOverlay = viewChild<ElementRef>('menuOverlay');\n readonly menuContainer = viewChild<ElementRef>('menuContainer');\n\n constructor() {\n effect(() => {\n\n const eTrigger = this.menuTrigger()?.nativeElement as HTMLElement;\n if (!eTrigger) return;\n\n if (!this.isOpened()) return;\n\n const cleanupAutoUpdate = autoUpdate(\n eTrigger,\n this.menuContainer()?.nativeElement,\n () => this.updatePosition()\n );\n return () => {\n cleanupAutoUpdate();\n };\n\n });\n\n // Atualiza posição quando o menu abre\n effect(() => {\n if (this.isOpened()) {\n setTimeout(() => {\n this.updatePosition();\n }, 1);\n }\n });\n effect(() => {\n let internalId = this.internalId();\n if (internalId?.id === undefined && internalId?.changed === true) {\n // LOG(1, \"%cAlterado Internal:\", 'color: lightcoral;', internalId, \" - Menu ID:\", this.id());\n this.closeOverlay();\n };\n });\n }\n ngOnInit() {\n // Inicializa o zIndex com base no valor armazenado no sessionStorage\n this.zIndex.set(sessionStorage.getItem(`ui-menu-index`) ? (Number(sessionStorage.getItem(`ui-menu-index`)) + 1).toString() : '1001');\n sessionStorage.setItem(`ui-menu-index`, this.zIndex());\n }\n ngOnDestroy() {\n if (this.isOpened() == true) this.closeOverlay();\n this.closeOverlayObserver.disconnect();\n // this.cleanupScrollListeners();\n }\n ngAfterViewInit() {\n this.checkScreenSize();\n this.setOverlaySizeToSizeViewport();\n\n this.updatePosition();\n }\n\n // Abre ou fecha o overlay de opções\n onOpenOrCloseOptions() {\n if (!this.disabled()) {\n if (this.isOpened()) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n this.menuTrigger()?.nativeElement.focus();\n }\n }\n // Abre ou fecha o overlay de opções\n onClickSlotBotao(event: Event) {\n if (!this.disabled()) {\n this.openOverlay();\n this.menuTrigger()?.nativeElement.focus();\n }\n // LOG(1, \"%cAbriu ID:\", 'color: lightgreen;', this.id());\n }\n\n onClickOverlay() {\n // LOG(1, \"%cFECHOU OVERLAY ID:\", 'color: lightblue;', this.id());\n this.closeOverlay();\n }\n\n\n onClickContainer(event: Event) {\n event.stopPropagation();\n let closestOverlay = (event.target as HTMLElement).closest('.e-menu-overlay');\n let overlayId = closestOverlay?.id?.replaceAll('ov', '');\n let closestTrigger = (event.target as HTMLElement).closest('.e-menu-trigger');\n let triggerId = closestTrigger?.id?.replaceAll('tr', '');\n this.internalId.set({ id: triggerId, changed: true });\n\n // LOG(1, 'Triger ID:', triggerId, ' - Overlay ID:', overlayId);\n\n if (overlayId == this.id() && triggerId != null && triggerId != this.id()) {\n // Um menu interno foi clicado, não fecha o overlay\n // O atual nível de menu irá observar o elemento closestTrigger e só irá fechar o overlay quando o elemento trigger fechar.\n this.closeOverlayObserver.observe(closestTrigger as HTMLElement, { attributes: true, attributeFilter: ['class'] });\n } else {\n // Clicou no container, fecha o overlay\n this.closeOverlay();\n }\n\n }\n\n // Fecha o overlay de opções\n protected closeOverlay(fromCascade: boolean = false) {\n if (fromCascade && !this.autoCloseInCascade()) return;\n\n this.closeOverlayObserver.disconnect();\n setTimeout(() => {\n this.isOpened.set(false);\n }, 2)\n }\n\n // Abre o overlay de opções\n protected openOverlay() {\n this.updatePosition();\n setTimeout(() => {\n this.isOpened.set(true);\n }, 2)\n }\n\n // Atualiza a posição do menu de opções\n private async updatePosition() {\n if (this.isSmallScreen()) return;\n\n const trigger = this.menuTrigger()?.nativeElement;\n const menuContainer = this.menuContainer()?.nativeElement;\n if (!trigger || !menuContainer) return;\n\n const { x, y } = await computePosition(trigger, menuContainer, {\n placement: this.posicao(),\n middleware: [\n offset(2),\n flip({\n fallbackPlacements: ['left-start', 'bottom-start', 'top-start', 'bottom-end', 'top-end'],\n }),\n shift({ padding: 10 }),\n ],\n });\n this.menuPosition.set({\n left: `${x}px`,\n top: `${y}px`\n });\n }\n\n setOverlaySizeToSizeViewport() {\n // if (!this.isOpened()) return;\n\n // Obtem o tamanho da largura da viewport\n const viewportWidth = window.innerWidth;\n const parcialViewport = viewportWidth * 0.92;\n\n const overlay = this.menuOverlay()?.nativeElement as HTMLElement;\n if (overlay) {\n let currentElement = overlay.parentElement as HTMLElement | null;\n while (currentElement) {\n let larguraOverlay = overlay.clientWidth;\n\n // Se chegar no body, para (para evitar mover o overlay para fora do body)\n if (currentElement.tagName.toLowerCase() === \"body\") break;\n\n // Move o overlay para o próximo nível acima\n currentElement.appendChild(overlay);\n\n if (larguraOverlay >= parcialViewport) {\n currentElement = null;\n break;\n }\n\n currentElement = currentElement.parentElement as HTMLElement;\n }\n\n }\n }\n\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\n this.isSmallScreen.set(e.matches);\n const eTrigger = this.menuTrigger()?.nativeElement as HTMLElement;\n if (eTrigger) {\n if (this.isSmallScreen()) {\n this.optionMinWidth.set(0);\n } else {\n this.optionMinWidth.set(eTrigger.offsetWidth - 4);\n }\n }\n }\n\n checkScreenSize() {\n const mediaQuery = window.matchMedia('(max-width: 500px)');\n this.onChangeMediaQuery(mediaQuery);\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\n }\n\n onArrowUp(event: Event) {\n event.preventDefault();\n // this.moveFocoPara('cima', event);\n }\n\n onArrowDown(event: Event) {\n event.preventDefault();\n // this.moveFocoPara('baixo', event);\n }\n\n // moveFocoPara(direcao: 'cima' | 'baixo', event: Event) {\n // this.openOverlay();\n // LOG(1, `Moverá para ${direcao} - Event:`, event);\n // const container = this.menuContainer()?.nativeElement as HTMLElement;\n // if (!container) return;\n\n // const focusableElements = Array.from(container.querySelectorAll('.e-menu-area>*')).filter(el => el instanceof HTMLElement && !el.hasAttribute('disabled')) as HTMLElement[];\n // if (focusableElements.length === 0) return;\n\n // // \n\n // }\n\n}\n","<div #menuTrigger class=\"e-menu-trigger\" (click)=\"onClickSlotBotao($event)\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\n\t(keydown.ArrowDown)=\"onArrowDown($event)\" (keyup.ArrowUp)=\"onArrowUp($event)\" (keyup.Escape)=\"closeOverlay()\"\n\t[id]=\"'tr'+id()\" [class.open]=\"isOpened()\">\n\t<ng-content select=\"[slot='botao']\">\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" [icone]=\"icone()\"></ui-button>\n\t</ng-content>\n</div>\n\n<div #menuOverlay class=\"e-menu-overlay\" [class.open]=\"isOpened()\" (click)=\"onClickOverlay()\"\n\t(keydown.ArrowDown)=\"onArrowDown($event)\" (keyup.ArrowUp)=\"onArrowUp($event)\" [style.zIndex]=\"zIndex()\"\n\t[id]=\"'ov'+id()\">\n\n\t<div #menuContainer class=\"e-menu-container\" [class.smallScreen]=\"isSmallScreen()\" [style.left]=\"menuPosition().left\"\n\t\t[style.top]=\"menuPosition().top\" (click)=\"onClickContainer($event)\">\n\t\t<div [style.minWidth.px]=\"optionMinWidth()\" class=\"e-menu-area\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t</div>\n\n</div>","import { Component, computed, effect, ElementRef, HostListener, inject, OnDestroy, signal, viewChild } from '@angular/core';\nimport { computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { IKV } from '../../interfaces/interfaces';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\nexport interface IKVAutoCompletador extends IKV {\n selected: boolean;\n choosing: boolean;\n}\n\n@Component({\n selector: 'fields-autocomplete',\n templateUrl: './autocomplete.html',\n styleUrls: ['../fields.css', './autocomplete.css'],\n imports: [UiListErrors],\n})\nexport class FieldsAutocomplete extends BaseFieldsForm implements OnDestroy {\n\n elementRef: ElementRef = inject(ElementRef);\n\n isOpenedOptions = signal(false);\n markedOptionKey = signal<string | number | null | undefined>(null);\n\n options = computed<IKVAutoCompletador[]>(() => {\n const options = this.campo()?.options?.() || [];\n // Autocompletar não exibe opções sem valor\n return options.filter((op: IKV) => op.v != null && op.v !== '').map((op: IKV) => ({\n ...op,\n selected: op.k === this.value(),\n choosing: op.k === this.markedOptionKey()\n }));\n });\n optionsFiltered = computed<IKVAutoCompletador[]>(() => {\n let words = this.value()?.toString().trim().split(\" \").filter((t: string) => t != \"\");\n const options = (this.options() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\n // Sem filtro, retorna tudo\n if (words.length === 0) return options;\n\n return options.filter(op => {\n for (const w of words) {\n let encontrado = false;\n if (op.v != null && LibUtil.contem(op.v, w)) {\n encontrado = true;\n }\n\n // Termo não encontrado na opção\n if (!encontrado) return false;\n }\n\n // Todos os termos encontrados\n return true;\n }).map(op => {\n let data = op.v?.toString() || '';\n // Substitui o valor do html, colocando uma mark em volta do texto buscado.\n if (words.length > 0) {\n for (let word of words) {\n let w = word.toLowerCase();\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n // Se w estiver dentro de < ou >, ignora (para não interferir em tags HTML)\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\n // Se a palavra for encontrada, envolve com a tag <mark>\n let pos = preparedData.indexOf(w);\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n\n return {\n ...op,\n html: data,\n };\n });\n });\n\n readonly displayText = viewChild<ElementRef>('displayText');\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\n readonly optionsContainer = viewChild<ElementRef>('optionsContainer');\n offsetWidth = signal<number>(0);\n menuPosition = signal<{ top: string; left: string }>({ top: '0px', left: '0px' });\n\n scrollCleanup: (() => void) | null = null;\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n effect(() => {\n const el = this.triggerElement()?.nativeElement as HTMLElement;\n if (!el) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n this.offsetWidth.set(entry.target.clientWidth - 4); // -4 para compensar borda\n }\n // Atualiza a posição do menu quando redimensiona\n if (this.isOpenedOptions()) {\n this.updatePosition();\n }\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n });\n\n // Atualiza posição quando o menu abre\n effect(() => {\n if (this.isOpenedOptions()) {\n setTimeout(() => {\n this.updatePosition();\n this.setupScrollListeners();\n }, 1);\n } else {\n this.cleanupScrollListeners();\n }\n });\n }\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.closeOverlay();\n this.cleanupScrollListeners();\n }\n\n onInput(newValue: string) {\n if (newValue != \"\") {\n this.isOpenedOptions.set(true);\n } else {\n this.isOpenedOptions.set(false);\n }\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n if (this.campo()?.onMatchOption) {\n let option = this.campo()?.options?.()?.find((op: IKV) => op.v === newValue);\n try {\n this.campo()?.onMatchOption?.(this.form(), option);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name.toString()}'`, err);\n }\n }\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n override onClickLabel() {\n super.onClickLabel();\n this.closeOverlay();\n }\n\n // Fecha o overlay de opções\n protected closeOverlay() {\n this.isOpenedOptions.set(false);\n this.markedOptionKey.set(null);\n }\n\n // Seleciona uma opção\n onSelectOption(option?: IKV) {\n if (!option || option.k == null) {\n LOG(1, `❌ Chave nula (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\n return;\n }\n this.onInput(option.v?.toString() ?? '');\n this.closeOverlay();\n }\n\n // Navegação por teclado\n markKey(event: KeyboardEvent) {\n const options = this.optionsFiltered();\n if (options.length === 0) return;\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\n let currentKV = options.find(op => op.k === this.markedOptionKey());\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.isOpenedOptions.set(true);\n currentIndex = (currentIndex + 1) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.isOpenedOptions.set(true);\n currentIndex = (currentIndex - 1 + options.length) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (this.markedOptionKey() != null) {\n this.onSelectOption(currentKV);\n }\n this.closeOverlay();\n }\n }\n\n\n // ----------------------------------------------------\n // Funções de Suporte ao Overlay\n // ----------------------------------------------------\n\n // Fecha o overlay ao clicar fora\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n if (!clickedInside && this.isOpenedOptions()) {\n this.isOpenedOptions.set(false);\n this.markedOptionKey.set(null);\n }\n }\n\n // Configura os listeners de scroll\n private setupScrollListeners() {\n const trigger = this.triggerElement()?.nativeElement;\n if (!trigger) return;\n\n const updatePositionHandler = () => this.updatePosition();\n const scrollElements: HTMLElement[] = [];\n window.addEventListener('scroll', updatePositionHandler, { passive: true });\n let parent = trigger.parentElement;\n while (parent) {\n const overflow = window.getComputedStyle(parent).overflow;\n const overflowY = window.getComputedStyle(parent).overflowY;\n const overflowX = window.getComputedStyle(parent).overflowX;\n if (\n overflow === 'auto' || overflow === 'scroll' ||\n overflowY === 'auto' || overflowY === 'scroll' ||\n overflowX === 'auto' || overflowX === 'scroll'\n ) {\n parent.addEventListener('scroll', updatePositionHandler, { passive: true });\n scrollElements.push(parent);\n }\n parent = parent.parentElement;\n }\n this.scrollCleanup = () => {\n window.removeEventListener('scroll', updatePositionHandler);\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', updatePositionHandler);\n });\n };\n }\n\n // Limpa os listeners de scroll\n private cleanupScrollListeners() {\n if (this.scrollCleanup) {\n this.scrollCleanup();\n this.scrollCleanup = null;\n }\n }\n\n // Atualiza a posição do menu de opções\n private async updatePosition() {\n const trigger = this.triggerElement()?.nativeElement;\n const optionsContainer = this.optionsContainer()?.nativeElement;\n if (!trigger || !optionsContainer) return;\n const { x, y } = await computePosition(trigger, optionsContainer, {\n placement: 'bottom-start',\n middleware: [\n offset(2),\n flip({\n fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],\n }),\n shift({ padding: 10 }),\n ],\n });\n this.menuPosition.set({\n left: `${x}px`,\n top: `${y}px`\n });\n }\n\n // Move o scroll para a opção marcada\n private moveScrollToMarkedOption() {\n setTimeout(() => {\n const optionsContainer = this.optionsContainer()?.nativeElement?.querySelector(\".options-list\") as HTMLElement;\n const markedOption = optionsContainer?.querySelector('.option-item.choosing') as HTMLElement;\n if (optionsContainer && markedOption) {\n const containerTop = optionsContainer.scrollTop;\n const containerBottom = containerTop + optionsContainer.clientHeight;\n const optionTop = markedOption.offsetTop;\n const optionBottom = optionTop + markedOption.offsetHeight;\n if (optionTop < containerTop) {\n optionsContainer.scrollTop = optionTop - 40; // 40px do elemento Search\n } else if (optionBottom > containerBottom) {\n optionsContainer.scrollTop = optionBottom - optionsContainer.clientHeight;\n }\n }\n }, 1);\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div #triggerElement class=\"fieldField FieldAutoComplete\">\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\">\n\t\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t\t[style]=\"campo()?.style\" (keyup)=\"markKey($event)\" (keydown.tab)=\"closeOverlay()\" [class.outlined]=\"true\"\n\t\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>\n\n<div #optionsContainer class=\"select-options-container\" [class.open]=\"isOpenedOptions()\"\n\t[style.left]=\"menuPosition().left\" [style.top]=\"menuPosition().top\">\n\t@if(isOpenedOptions()) {\n\t<div class=\"options-list\">\n\t\t@for(option of optionsFiltered(); track option.k) {\n\t\t<div class=\"option-item\" [class.selected]=\"option.selected\" [style.width.px]=\"offsetWidth()\" [title]=\"option.v\"\n\t\t\t(click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\n\t\t\t[class.choosing]=\"option.choosing\">\n\t\t\t<div class=\"option-item-check\"></div>\n\t\t\t<div class=\"option-item-text\" [innerHTML]=\"option.html\"></div>\n\t\t</div>\n\t\t}\n\t</div>\n\t}\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { LOG } from '../../util/log';\n\n@Component({\n selector: 'fields-button',\n templateUrl: './button.html',\n styleUrls: ['../fields.css', './button.css'],\n imports: [UiButton, UiListErrors]\n})\nexport class FieldsButton extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onClickButton(ev: Event) {\n this.tocarCampo();\n if (this.campo()?.onClick) {\n try {\n this.campo()?.onClick?.(this.form());\n } catch (err) {\n LOG(1, '❌ Erro ao executar onClick do botão:', err);\n }\n }\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo ?? ' ' }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldButton\">\n\t\t\t\t<ui-button [tipo]=\"campo()?.tipoBotao\" [tema]=\"campo()?.tema\" [style]=\"campo()?.style\"\n\t\t\t\t\t(click)=\"onClickButton($event)\" [disabled]=\"campo()?.disabled\" [icone]=\"campo()?.icone\">\n\t\t\t\t\t<div [innerHTML]=\"campo()?.tituloClicavel\"></div>\n\t\t\t\t</ui-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, signal } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiCheckBox } from \"../../elements/ui-check-box/ui-check-box\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-checkbox',\n templateUrl: './checkbox.html',\n styleUrls: ['../fields.css', './checkbox.css'],\n imports: [UiCheckBox, UiListErrors],\n})\nexport class FieldsCheckbox extends BaseFieldsForm {\n\n signalFocus = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onChange(newValue: boolean) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n ngAfterViewInit(): void {\n let val = this.value();\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\n }\n\n toogleAtivo() {\n this.onChange(!this.value());\n this.signalFocus.set(true);\n setTimeout(() => {\n this.signalFocus.set(false);\n }, 1)\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldCheckbox microPos4\">\n\t\t\t\t<ui-check-box [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-check-box>\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\n\t\t\t\t\tcampo()?.tituloClicavel) }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, input } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\n\n@Component({\n selector: 'field-color-circulocolorido',\n templateUrl: './circulocolorido.html',\n styleUrls: ['./circulocolorido.css'],\n})\nexport class CirculoColorido {\n\n valor = input<string | number | null>(null);\n\n angle = computed<number | null>(() => {\n let angle = this.valor();\n if (!angle) return null;\n if (LibUtil.classof(angle) === 'string') {\n let num = Number(angle);\n if (isNaN(num)) return 0;\n angle = num;\n }\n return angle as number | null;\n });\n\n}\n","<div class=\"container\" [style.--atualColor]=\"angle()\">\n\t<div class=\"circulo {{ angle() != null ? 'show' : 'hide' }}\"></div>\n\t@if(angle() != null){\n\t<div class=\"arrow\" [style.--arrowAngle]=\"(angle()! - 47) + 'deg'\">\n\t\t<i class=\"bi bi-cursor-fill\"></i>\n\t</div>\n\t}\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { CirculoColorido } from './CirculoColorido/circulocolorido';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-color',\n templateUrl: './color.html',\n styleUrls: ['../fields.css', './color.css'],\n imports: [CirculoColorido, UiListErrors],\n})\nexport class FieldsColor extends BaseFieldsForm implements OnInit {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '' || val === 0;\n // if (val && LibUtil.classof(val) === 'number' && (val < 0 || val > 360)) {\n // errors = [...errors, Valide.msg.apenasEntre(0, 360)];\n // }\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.onInput(this.value(), false);\n }\n\n onInput(newValue: string, touch: boolean = true) {\n let num = Number(newValue);\n if (isNaN(num)) num = 0;\n this.updateValue(num, touch);\n this.campo()?.onInput?.(this.form());\n }\n\n onInputRange(event: any) {\n let num = Number(event.target.value);\n if (isNaN(num)) num = 0;\n if (num < 0) num = 0;\n if (num > 360) num = 360;\n this.updateValue(num);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<field-color-circulocolorido [valor]=\"value()\"></field-color-circulocolorido>\n\t\t<div class=\"fieldComRange\">\n\t\t\t<div class=\"fieldEffect\">\n\t\t\t\t<div class=\"fieldField FieldColor\">\n\t\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t\t[style]=\"campo()?.style\" min=\"0\" max=\"360\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<input type=\"range\" [value]=\"value() ?? 0\" (input)=\"onInputRange($event)\" min=\"0\" max=\"360\"\n\t\t\t\t[disabled]=\"campo()?.disabled\" (change)=\"onChangeEmit()\" />\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-date',\n templateUrl: './date.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsDate extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDate\">\n\t\t\t\t<input type=\"date\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-datetime',\n templateUrl: './datetime.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsDatetime extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDate\">\n\t\t\t\t<input type=\"datetime-local\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { LibUtil } from './util';\n\n@Pipe({ name: 'jsonColorido' })\nexport class JsonColoridoPipe implements PipeTransform {\n\n\ttransform(value: any, args?: any): string {\n\t\treturn LibUtil.formatJson(value, true);\n\t}\n\n}\n","import { Component, computed, effect, inject, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { JsonColoridoPipe } from '../../util/JsonColorido.pipe';\n\n@Component({\n selector: 'fields-display',\n templateUrl: './display.html',\n styleUrls: ['../fields.css', './display.css'],\n imports: [UiListErrors, JsonColoridoPipe],\n})\nexport class FieldsDisplay extends BaseFieldsForm {\n\n sanitizer = inject(DomSanitizer);\n\n // Importante:\n // - Este campo não é editável, então não tem onChange ou onInput.\n // - Este campo não deve entrar no estado Pendente. A exibição foi removida e o fundo foi deixado transparente.\n\n readonly displayValue = computed<SafeHtml>(() => {\n let value = this.value();\n if (this.campo()?.mask) value = LibUtil.mascarar(value, this.campo()?.mask) ?? '';\n if (LibUtil.classof(value) === 'boolean') {\n value = value ? 'Sim' : 'Não';\n }\n if (value == null) {\n value = '';\n }\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isEmpty]=\"campo()?.empty\" (click)=\"onClickEmit()\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDisplay\">\n\t\t\t\t@if(campo()?.classe == 'displayJson') {\n\t\t\t\t<pre class=\"p-2\" [innerHTML]=\"value() | jsonColorido\"></pre>\n\t\t\t\t}@else {\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [innerHTML]=\"displayValue()\"></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, inject, OnInit, viewChild } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-editor',\n templateUrl: './editor.html',\n styleUrls: ['../fields.css', './editor.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsEditor extends BaseFieldsForm implements OnInit {\n\n sanitizer = inject(DomSanitizer);\n editavel = viewChild('editavel', { read: ElementRef });\n\n iconeJustifyLeft = 'fa fa-align-left';//'bi bi-justify-left';\n iconeJustifyCenter = 'fa fa-align-center';//'bi bi-text-center';\n iconeJustifyRight = 'fa fa-align-right';//'bi bi-justify-right';\n iconeJustify = 'fa fa-align-justify';//'bi bi-justify';\n iconeNegrito = 'fa fa-bold';//'bi bi-type-bold';\n iconeItalico = 'fa fa-italic';//'bi bi-type-italic';\n iconeUnderline = 'fa fa-underline';//'bi bi-type-underline';\n iconeClearFormat = 'fa fa-eraser';//'bi bi-eraser';\n\n isNegrito: boolean = false;\n isItalico: boolean = false;\n isSublinhado: boolean = false;\n currentJustify: 'left' | 'center' | 'right' | null = null;\n\n safeValue = computed<SafeHtml>(() => {\n let value = this.value();\n if (value == null) {\n value = '';\n }\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n override ngOnInit() {\n super.ngOnInit();\n this.inicializarEstados();\n }\n\n onInput(ev?: Event, cursorPosition?: { start: number; end: number, plus: number } | null) {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n let texto = eEditavel.innerHTML;\n if (!texto) return;\n\n // Salva a posição do cursor apenas quando o usuário está digitando\n if (cursorPosition === undefined) {\n cursorPosition = ev ? LibUtil.saveCursorPosition(eEditavel) : null;\n }\n\n // Converte <br> em [br]s para preservar quebras de linha\n texto = texto.replace(/<br>/g, '[br]');\n\n // Ao ocorrer mudança aqui, deve-se retirar todas as tags de hipertexto e depois aplicar apenas as que estão ativas.\n texto = LibUtil.removeHtmlTags(texto);\n\n // Restaura as quebras de linha\n texto = texto.replace(/\\[br\\]/g, '<br>');\n if (texto === \"<br>\") {\n texto = \"\";\n }\n\n if (this.isNegrito) {\n texto = `<b>${texto}</b>`;\n }\n if (this.isItalico) {\n texto = `<i>${texto}</i>`;\n }\n if (this.isSublinhado) {\n texto = `<u>${texto}</u>`;\n }\n if (this.currentJustify) {\n texto = `<div style=\"text-align: ${this.currentJustify};\">${texto}</div>`;\n }\n eEditavel.innerHTML = texto;\n\n if (cursorPosition) {\n LibUtil.restoreCursorPosition(eEditavel, cursorPosition);\n }\n\n this.campo()?.onInput?.(this.form());\n }\n\n onChange() {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n\n let texto = eEditavel.innerHTML;\n this.updateValue(texto);\n\n this.onChangeEmit();\n }\n\n onDragEvent(dragEvent: DragEvent) {\n if (this.campo()?.disabled) return;\n const dataTransfer = dragEvent.dataTransfer;\n if (!dataTransfer) return;\n\n // Drag and Drop não é suportado.\n dragEvent.preventDefault();\n dragEvent.stopPropagation();\n const text = dataTransfer.getData('text/plain');\n LOG(1, \"Drag and Drop Text: \", text, dragEvent);\n }\n\n onNegrito() {\n if (this.campo()?.disabled) return;\n this.isNegrito = !this.isNegrito;\n this.onInput();\n this.onChange();\n }\n onItalico() {\n if (this.campo()?.disabled) return;\n this.isItalico = !this.isItalico;\n this.onInput();\n this.onChange();\n }\n onSublinhado() {\n if (this.campo()?.disabled) return;\n this.isSublinhado = !this.isSublinhado;\n this.onInput();\n this.onChange();\n }\n onJustify(direction: 'left' | 'center' | 'right') {\n if (this.campo()?.disabled) return;\n if (this.currentJustify === direction) {\n this.currentJustify = null;\n this.onInput();\n this.onChange();\n return;\n }\n this.currentJustify = direction;\n this.onInput();\n this.onChange();\n }\n\n\n onClearFormat() {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n let texto = eEditavel.innerHTML;\n if (!texto) return;\n\n this.currentJustify = null;\n this.isNegrito = false;\n this.isItalico = false;\n this.isSublinhado = false;\n\n texto = LibUtil.removeHtmlTags(texto);\n eEditavel.innerHTML = texto;\n this.onChange();\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (this.campo()?.disabled) return;\n if (event.key === 'Enter') {\n event.preventDefault();\n\n const eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n\n // Salva a posição do cursor\n const cursorPosition = LibUtil.saveCursorPosition(eEditavel, 1);\n\n // Insere uma quebra de linha (<br>) na posição do cursor\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n\n const br = document.createElement('br');\n range.insertNode(br);\n\n // Move o cursor para depois do <br>\n range.setStartAfter(br);\n range.setEndAfter(br);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n\n this.onInput(undefined, cursorPosition);\n }\n }\n\n inicializarEstados() {\n let valor = this.value();\n if (typeof valor !== 'string' || !valor) return;\n valor = valor.toLowerCase();\n\n this.isNegrito = valor.includes('<b>') && valor.includes('</b>');\n this.isItalico = valor.includes('<i>') && valor.includes('</i>');\n this.isSublinhado = valor.includes('<u>') && valor.includes('</u>');\n if (valor.includes('text-align: left')) {\n this.currentJustify = 'left';\n } else if (valor.includes('text-align: center')) {\n this.currentJustify = 'center';\n } else if (valor.includes('text-align: right')) {\n this.currentJustify = 'right';\n }\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField fieldEditor\">\n\t\t\t\t@if(campo()?.showToolbar !== false) {\n\t\t\t\t<div class=\"toolbar\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isNegrito\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t(click)=\"onNegrito()\" [icone]=\"iconeNegrito\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isItalico\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t(click)=\"onItalico()\" [icone]=\"iconeItalico\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isSublinhado\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onSublinhado()\" [icone]=\"iconeUnderline\"></ui-button>\n\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone espaco\" [class.ativo]=\"currentJustify === 'left'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('left')\" [icone]=\"iconeJustifyLeft\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'center'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('center')\" [icone]=\"iconeJustifyCenter\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'right'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('right')\" [icone]=\"iconeJustifyRight\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [disabled]=\"campo()?.disabled\" (click)=\"onClearFormat()\"\n\t\t\t\t\t\t[icone]=\"iconeClearFormat\"></ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div #editavel [class.corpo]=\"true\" [contentEditable]=\"!campo()?.disabled && !campo()?.readonly\"\n\t\t\t\t\t[class]=\"campo()?.classe\" [style]=\"campo()?.style\" (input)=\"onInput($event)\" [innerHTML]=\"safeValue()\"\n\t\t\t\t\t(blur)=\"onChange()\" (drop)=\"onDragEvent($event)\" (keydown)=\"onKeyDown($event)\"></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-email',\n templateUrl: './email.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsEmail extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldEmail\">\n\t\t\t\t<input type=\"email\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\n@Component({\n selector: 'fields-hidden',\n templateUrl: './hidden.html',\n styles: `.fieldHidden{display: none;}`\n})\nexport class FieldsHidden extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n}\n","<div class=\"fieldHidden\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"></div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-icon',\n templateUrl: './icon.html',\n styleUrls: ['../fields.css', './icon.css'],\n imports: [UiButton, UiListErrors]\n})\nexport class FieldsIcon extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<ui-button tipo=\"raised\" tema=\"secondary\" (clicked)=\"onClickEmit()\" [disabled]=\"campo()?.disabled\"\n\t\t\t[style.width.px]=\"100\">\n\t\t\t@if(value()){\n\t\t\t<i [class]=\"value()\" [style.fontSize]=\"'25px'\"></i>\n\t\t\t}@else {\n\t\t\t<div class=\"noIcon\">ICO</div>\n\t\t\t}\n\t\t</ui-button>\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldIconType\">\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { AfterViewInit, Component, effect, ElementRef, viewChild } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\ninterface ICode {\n [key: string]: string;\n}\n\n@Component({\n selector: 'fields-multifactor',\n templateUrl: './multifactor.html',\n styleUrls: ['../fields.css', './multifactor.css'],\n imports: [UiListErrors],\n})\nexport class FieldsMultifactor extends BaseFieldsForm implements AfterViewInit {\n\n code: ICode = {};\n controle = viewChild('controle', { read: ElementRef });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n if (this.campo()?.autofocus && this.controle()?.nativeElement) {\n this.controle()?.nativeElement.focus();\n }\n }, 100);\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n\n onInputChar(ev: Event) {\n let e = (ev.target as HTMLInputElement);\n let v = e.value;\n let name = e.name;\n let order = \"abcdef\";\n let nextInputName: String = \"b\";\n let isLast = false;\n\n if (v && v != \"\" && \"0123456789\".includes(v)) {\n // Só seta no objeto se for válido\n this.code[name] = v;\n // Identificar próximo campo\n nextInputName = order.charAt(order.indexOf(name) + 1);\n // Tentativa de focar próximo elemento\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\n if (nextE) {\n nextE.focus();\n } else {\n isLast = true;\n }\n } else {\n e.value = \"\";\n delete this.code[name];\n }\n\n // Seta valor do campo de forma ordenada\n let novoValor = Object.values(Object.fromEntries(Object.entries(this.code).sort())).join(\"\");\n this.updateValue(novoValor);\n\n // Verifica se completou\n if (this.campo()?.onComplete && novoValor.length == 6 && isLast) {\n try {\n this.campo()?.onComplete?.(this.form(), novoValor);\n this.onChangeEmit();\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatch do campo '${this.name.toString()}'`, err);\n }\n }\n }\n\n onKeyUp(ev: KeyboardEvent) {\n let key = ev.key;\n let e = (ev.target as HTMLInputElement);\n let v = e.value;\n if (e && v == \"\" && key == \"Backspace\") {\n let order = \"abcdef\";\n let indexOf = order.indexOf(e.name);\n let nextInputName: String = order.charAt(indexOf - 1);\n // Tentativa de focar próximo elemento\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\n if (nextE) {\n if (nextE.value != \"\") {\n nextE.focus();\n }\n }\n }\n }\n\n onFocus(ev: Event) {\n (ev.target as HTMLInputElement)?.select();\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultifactor\">\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" [name]=\"campo()?.prop\"\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [hidden]=\"true\" [readOnly]=\"true\" />\n\n\t\t\t\t<div class=\"gridFactor\">\n\t\t\t\t\t<input #controle class=\"fieldSingleInput\" name=\"a\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"b\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"c\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"d\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"e\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"f\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-multitext',\n templateUrl: './multitext.html',\n styleUrls: ['../fields.css', './multitext.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsMultiText extends BaseFieldsForm implements OnInit {\n\n items: string[] | null = [];\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n let value = this.value();\n if (value && Array.isArray(value)) this.items = value ?? [];\n else this.items = [];\n }\n\n ngAfterViewInit(): void {\n this.updateValue(this.items ?? [], false);\n }\n\n onInput(newValue: string) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n onClickAddItem() {\n let value = \"\";\n if (!this.items) this.items = [];\n this.items = [...this.items, value];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n\n setTimeout(() => {\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\n if (allInputs && allInputs.length > 0) {\n allInputs[allInputs.length - 1].focus();\n }\n }, 1);\n }\n\n onClickDelItem(index: number) {\n this.items = this.items?.filter((v, i) => i != index) ?? [];\n if (this.items && this.items?.length <= 0) this.items = [];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n _onLocalInput(value: string, index: number) {\n if (this.items) this.items[index] = value;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultiText\">\n\t\t\t\t@if(campo()?.showHeader){\n\t\t\t\t<div>Itens</div>\n\t\t\t\t<div class=\"action\"></div>\n\t\t\t\t}\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInput($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"action\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\n\t\t\t\t\t\ticone=\"bi bi-trash\">\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"add\">\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\n\t\t\t\t\t\ticone=\"bi bi-plus-circle\">\n\t\t\t\t\t\tAdicionar Linha\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-number',\n templateUrl: './number.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsNumber extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '' || val === 0;\n this.updateCampo({ empty });\n });\n }\n\n ngAfterViewInit(): void {\n this.onInput(this.value(), false);\n }\n\n onInput(newValue: string, touch: boolean = true) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n let num = parseFloat(newValue);\n if (isNaN(num)) num = 0;\n this.updateValue(num, touch);\n this.campo()?.onInput?.(this.form());\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldText\">\n\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [readOnly]=\"campo()?.readonly ?? false\" [class.outlined]=\"true\"\n\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, signal } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-password',\n templateUrl: './password.html',\n styleUrls: ['../fields.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsPassword extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n // Exibir e Ocultar Senha\n hide = signal(true);\n _aoClicarVerSenha(event: MouseEvent) {\n this.hide.set(!this.hide());\n event.stopPropagation();\n }\n}\n\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldPassword\">\n\t\t\t\t<input [type]=\"hide() ? 'password' : 'text'\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\n\t\t\t\t\t(change)=\"onChangeEmit()\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.outlined]=\"true\"\n\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"_aoClicarVerSenha($event)\" aria-label=\"Oculta ou Exibe Senha\"\n\t\t\t\t\ttitle=\"Oculta ou Exibe Senha\" [aria-pressed]=\"hide()\"><i\n\t\t\t\t\t\t[class]=\"hide() ? 'bi bi-eye-slash-fill' : 'bi bi-eye-fill'\"></i></ui-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, viewChild } from '@angular/core';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { UiProcurar } from \"../../elements/ui-procurar/ui-procurar\";\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\n@Component({\n selector: 'fields-search',\n templateUrl: './search.html',\n styleUrls: ['../fields.css', './search.css'],\n imports: [UiListErrors, UiProcurar],\n})\nexport class FieldsSearch extends BaseFieldsForm {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n\n isCollapsed = computed(() => this.campo()?.isCollapsed?.() ?? false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.updateValue(\"\");\n this.focusSearchInput();\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n focusSearchInput() {\n this.searchInput()?.nativeElement?.focus();\n }\n\n onClickSearchIcon() {\n this.focusSearchInput();\n this.onChangeEmit();\n }\n\n onSearch() {\n this.onChangeEmit();\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"\n\t[class.isCollapsed]=\"isCollapsed()\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSearch\">\n\t\t\t\t<ui-procurar [value]=\"value()\" [name]=\"campo()?.prop\" (inputed)=\"onInput($event)\" (changed)=\"onChangeEmit()\"\n\t\t\t\t\t[colapsed]=\"isCollapsed()\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? 'Procurar...'\"></ui-procurar>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, OnInit, signal } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiSelect } from '../../elements/ui-select/ui-select';\nimport { IOptionValue } from '../../elements/ui-select/ui-select';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { LOG } from '../../util/log';\n\n\n@Component({\n selector: 'fields-select',\n templateUrl: './select.html',\n styleUrls: ['../fields.css', './select.css'],\n imports: [UiSelect, UiListErrors],\n})\nexport class FieldsSelect extends BaseFieldsForm {\n\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n // Um Refill pode estar em andamento enquanto este componente é iniciado.\n // Utilize o campo.mapear ou campo.refill para alterar o comportamento do refill inicial.\n\n\n fieldOptions = computed(() => {\n return this.campo()?.options?.() ?? [];\n });\n\n\n // Manipula mudança de valor (valueOfK não chegará nulo ou undefined)\n onChange(optionValue: IOptionValue) {\n let newValue: any = optionValue.keys;\n\n if (this.campo()?.onMatchOption && optionValue.optionChanged) {\n try {\n this.campo()?.onMatchOption?.(this.form(), optionValue.optionChanged);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name()}'`, err);\n }\n }\n\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSelect\">\n\t\t\t\t<ui-select [value]=\"this.value()\" [options]=\"fieldOptions()\" (changed)=\"onChange($event)\"\n\t\t\t\t\t[multiple]=\"this.campo()?.multiple ?? false\" [name]=\"this.campo()?.prop\" [textEmpty]=\"this.campo()?.textEmpty\"\n\t\t\t\t\t[canUnselect]=\"campo()?.canUnselect\"></ui-select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { AfterViewInit, Component, effect, signal } from '@angular/core';\nimport { UiSlide } from '../../elements/ui-slide/ui-slide';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-slide',\n templateUrl: './slide.html',\n styleUrls: ['../fields.css', './slide.css'],\n imports: [UiSlide, UiListErrors],\n})\nexport class FieldsSlide extends BaseFieldsForm implements AfterViewInit {\n\n signalFocus = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onChange(newValue: boolean) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n ngAfterViewInit(): void {\n let val = this.value();\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\n }\n\n toogleAtivo() {\n this.onChange(!this.value());\n this.signalFocus.set(true);\n setTimeout(() => {\n this.signalFocus.set(false);\n }, 1)\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSlide microPos4\">\n\t\t\t\t<ui-slide [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-slide>\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\n\t\t\t\t\tcampo()?.tituloClicavel) }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\n\n@Component({\n selector: 'fields-text',\n templateUrl: './text.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors]\n})\nexport class FieldsText extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldText\">\n\t\t\t\t<input type=\"text\" [value]=\"value() ?? ''\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, OnInit, signal, viewChild } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { UiDropZone } from '../../elements/ui-drop-zone/ui-drop-zone';\nimport { IDropOutput, IFileMetadata } from '../../interfaces/interfaces';\nimport { UiFileList } from '../../elements/ui-file-list/ui-file-list';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-upload',\n templateUrl: './upload.html',\n styleUrls: ['../fields.css', './upload.css'],\n imports: [UiDropZone, UiFileList, UiListErrors],\n})\nexport class FieldsUpload extends BaseFieldsForm implements OnInit {\n\n multiple: boolean = false;\n inputFile = viewChild('inputFile', { read: ElementRef })\n acceptFormats: string = \"\";\n sobrepondo = signal<boolean>(true);\n\n acceptFormatsShow = computed<string>(() => {\n return this.acceptFormats.split(',').map(ext => ext.trim().toUpperCase().slice(1)).join(', ');\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n this.sobrepondo.set(empty);\n });\n }\n override ngOnInit() {\n super.ngOnInit();\n this.multiple = this.campo()?.multiple ?? false;\n this.acceptFormats = this.campo()?.accept ?? \"\";\n }\n\n onChange(newValue: IFileMetadata[]) {\n let campo = this.campo();\n if (!campo) return;\n if (campo.disabled) return;\n // Filtra apenas os arquivos válidos\n newValue = newValue.filter(file => this.validarImagem(file));\n // Atualiza o valor do campo\n let valueToUpdate: any = this.multiple ? newValue : newValue[newValue.length - 1];\n this.updateValue(valueToUpdate);\n\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n filesList = computed<IFileMetadata[]>(() => {\n let val = (this.value() as IFileMetadata[] | IFileMetadata | string | undefined);\n if (this.multiple) {\n // Quando é multiplo, ja vem um array.\n return val as IFileMetadata[];\n } else {\n // Quando não é multiplo, vem um objeto, mas precisa ser tratado como array.\n if (val && val !== '') {\n return [val as IFileMetadata];\n } else {\n return [];\n }\n }\n });\n\n // Adiciona arquivos recebidos do DropZone\n onDropped(content: IDropOutput) {\n if (this.campo()?.disabled) return;\n if (content.tipo !== \"file\" || !content.data || !(content.data instanceof Array)) return;\n let dataFiles: IFileMetadata[] = content.data;\n this.onAddFile(dataFiles);\n }\n\n // Remove arquivo da lista\n onRemove(file: IFileMetadata) {\n if (this.campo()?.disabled) return;\n let currentFiles = this.filesList();\n const index = currentFiles.findIndex(f => f.size === file.size);\n if (index > -1) {\n currentFiles.splice(index, 1);\n this.onChange(currentFiles);\n }\n }\n\n onAddFile(newFiles: IFileMetadata[]) {\n if (this.campo()?.disabled) return;\n let newValues: IFileMetadata[] = [];\n if (this.multiple) {\n newValues = [\n ...this.filesList() ?? [],\n ...newFiles,\n ];\n } else {\n newValues = newFiles.slice(-1);\n }\n this.onChange(newValues);\n }\n\n async onChangedInputFile(ev: Event) {\n if (this.campo()?.disabled) return;\n const inputElement = ev.target as HTMLInputElement;\n if (inputElement.files && inputElement.files.length > 0) {\n for await (let newFile of inputElement.files) {\n let lastIndexOf = newFile.name.lastIndexOf(\".\");\n let extension = newFile.name.slice(lastIndexOf);\n let base64: string | null = await LibUtil.fileReader(newFile);\n if (!base64) { LOG(1, `❌ Ocorreu um erro com o arquivo ${newFile.name}.`); continue; }\n this.onAddFile([{\n base64,\n name: newFile.name,\n size: newFile.size,\n extension, // inclui o \".\"\n type: newFile.type,\n lastModifiedIso: new Date(newFile.lastModified).toISOString(),\n }]);\n }\n inputElement.value = '';\n }\n }\n\n validarImagem(file: IFileMetadata): boolean {\n if (!file.extension) return false;\n const validExtensions = this.acceptFormats.split(',').map(ext => ext.trim().toLowerCase());\n return validExtensions.includes(file.extension.toLowerCase());\n }\n\n onClickUpload() {\n // Se o alvo do click for mesmo o elemento dropzone (CSS ignora alguns elementos)\n if (this.inputFile() && this.inputFile()?.nativeElement) {\n this.inputFile()?.nativeElement.click();\n }\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldUpload\">\n\n\t\t\t\t<ui-drop-zone (changed)=\"onDropped($event)\" [disabled]=\"campo()?.disabled\" (clicked)=\"onClickUpload()\"\n\t\t\t\t\t[sobrepor]=\"sobrepondo()\">\n\t\t\t\t\t@if(filesList().length > 0) {\n\n\t\t\t\t\t<ui-file-list [filesList]=\"filesList()\" (remove)=\"onRemove($event)\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\"></ui-file-list>\n\n\t\t\t\t\t} @else {\n\n\t\t\t\t\t<div class=\"fieldDidplayUpload\">\n\t\t\t\t\t\t<i class=\"bi bi-cloud-upload-fill\"></i>\n\t\t\t\t\t\t<div class=\"f-s-16\"><span class=\"text-primary\">Solte</span> seu arquivo aqui</div>\n\t\t\t\t\t\t<div class=\"f-s-14\"><span class=\"text-primary\">ou clique</span> para procurar</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t}\n\t\t\t\t</ui-drop-zone>\n\n\t\t\t\t<div [style.display]=\"'none'\">\n\t\t\t\t\t<input #inputFile type=\"file\" [accept]=\"acceptFormats\" [multiple]=\"campo()?.multiple\"\n\t\t\t\t\t\t(change)=\"onChangedInputFile($event)\" [disabled]=\"campo()?.disabled\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t@if(acceptFormats){\n\t<div class=\"dica\">Formatos: {{ acceptFormatsShow() }}</div>\n\t}\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-time',\n templateUrl: './time.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsTime extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldTime\">\n\t\t\t\t<input type=\"time\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\n\n@Component({\n selector: 'fields-textarea',\n templateUrl: './textarea.html',\n styleUrls: ['../fields.css', './textarea.css'],\n imports: [UiListErrors]\n})\nexport class FieldsTextarea extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(event: Event) {\n let newValue = (event.target as HTMLTextAreaElement).value;\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldTextArea\">\n\t\t\t\t<textarea [value]=\"value()\" (input)=\"onInput($event)\" (change)=\"onChangeEmit()\" [name]=\"campo()?.prop\"\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [attr.maxLength]=\"campo()?.maxl\"\n\t\t\t\t\t[attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [class.outlined]=\"true\"\n\t\t\t\t\t[rows]=\"campo()?.rows ?? 5\" [cols]=\"campo()?.cols\" [attr.readonly]=\"campo()?.readonly ? true : null\"\n\t\t\t\t\t[class.input]=\"true\"></textarea>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { IKV } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'fields-multikv',\n templateUrl: './multikv.html',\n styleUrls: ['../fields.css', './multikv.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsMultiKV extends BaseFieldsForm implements OnInit {\n\n // Componente para adicionar ou retirar itens em forma KV (Como usado nos seletores)\n items: IKV[] | null = [];\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n let value = this.value();\n if (value && Array.isArray(value)) this.items = value ?? [];\n else this.items = [];\n }\n\n ngAfterViewInit(): void {\n this.updateValue(this.items ?? [], false);\n }\n\n onClickAddItem() {\n let value: IKV = this.campo()?.value ?? { k: \"\", v: \"\" };\n if (!this.items) this.items = [];\n this.items = [...this.items, value];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n\n setTimeout(() => {\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\n if (allInputs && allInputs.length > 0) {\n allInputs[allInputs.length - 1].focus();\n }\n }, 1);\n }\n\n onClickDelItem(index: number) {\n this.items = this.items?.filter((v, i) => i != index) ?? [];\n if (this.items && this.items?.length <= 0) this.items = [];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n _onLocalInputK(key: string, index: number) {\n if (this.items) this.items[index].k = key;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n }\n\n _onLocalInputV(value: string, index: number) {\n if (this.items) this.items[index].v = value;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n }\n\n _onLocalChangeK(key: string, index: number) {\n if (this.items) this.items[index].k = key;\n this.updateValue(this.items);\n this.onChangeEmit();\n }\n\n _onLocalChangeV(value: string, index: number) {\n if (this.items) this.items[index].v = value;\n this.updateValue(this.items);\n this.onChangeEmit();\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultiKv\">\n\t\t\t\t@if(campo()?.showHeader != false){\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloChave ?? 'Chaves'}}</div>\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloValor ?? 'Valores'}}</div>\n\t\t\t\t<div class=\"header action\"></div>\n\t\t\t\t}\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item.k\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputK($event.target.value, $index)\"\n\t\t\t\t\t\t(change)=\"_onLocalChangeK($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item.v\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputV($event.target.value, $index)\"\n\t\t\t\t\t\t(change)=\"_onLocalChangeV($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"action\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\n\t\t\t\t\t\ticone=\"bi bi-trash\">\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"add\">\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\n\t\t\t\t\t\ticone=\"bi bi-plus-circle\">\n\t\t\t\t\t\tAdicionar Linha\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { NgComponentOutlet } from '@angular/common';\nimport { Component, computed } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\nimport { FieldsAutocomplete } from '../autocomplete/autocomplete';\nimport { FieldsButton } from \"../button/button\";\nimport { FieldsCheckbox } from '../checkbox/checkbox';\nimport { FieldsColor } from '../color/color';\nimport { FieldsDate } from '../date/date';\nimport { FieldsDatetime } from '../datetime/datetime';\nimport { FieldsDisplay } from '../display/display';\nimport { FieldsEditor } from '../editor/editor';\nimport { FieldsEmail } from '../email/email';\nimport { FieldsHidden } from '../hidden/hidden';\nimport { FieldsIcon } from '../icon/icon';\nimport { FieldsMultifactor } from '../multifactor/multifactor';\nimport { FieldsMultiText } from '../multitext/multitext';\nimport { FieldsNumber } from '../number/number';\nimport { FieldsPassword } from '../password/password';\nimport { FieldsSearch } from '../search/search';\nimport { FieldsSelect } from '../select/select';\nimport { FieldsSlide } from '../slide/slide';\nimport { FieldsText } from '../text/text';\nimport { FieldsUpload } from '../upload/upload';\nimport { FieldsTime } from '../time/time';\nimport { FieldsTextarea } from '../textarea/textarea';\nimport { IField } from '../Formulario/Formulario';\nimport { FieldsMultiKV } from '../multikv/multikv';\n\n@Component({\n selector: 'fields-g',\n templateUrl: './generic.html',\n // styles: `:host.hidden {\n // display: none;\n // }`,\n imports: [NgComponentOutlet],\n})\nexport class FieldsGeneric extends BaseFieldsForm {\n\n readonly campos = computed(() => this.form().campos());\n\n // @HostBinding('class.hidden')\n // isHidden = false;\n\n // Mapeamento de tipos para componentes\n getComponentForType(tipo?: IField): any {\n // Tipo Hidden não exibe componente e coloca o host como hidden\n // if (tipo == IField.Hidden) {\n // this.isHidden = true;\n // return null;\n // }\n\n /************************************************\\\\\n // MAPA: Tipo de Campo - Componente Responsável \\\\\n //*************************************************/\n // Comente o campo caso haja algum problema de dependência circular ou outro...\n\n const FIELDS_MAP: Partial<Record<IField, any>> = {\n [IField.AutoComplete]: FieldsAutocomplete,\n [IField.Button]: FieldsButton,\n [IField.Checkbox]: FieldsCheckbox,\n [IField.Color]: FieldsColor,\n [IField.Date]: FieldsDate,\n [IField.DateTime]: FieldsDatetime,\n [IField.Display]: FieldsDisplay,\n [IField.Editor]: FieldsEditor,\n [IField.Email]: FieldsEmail,\n [IField.Hidden]: FieldsHidden,\n [IField.Icon]: FieldsIcon,\n [IField.MultiFactor]: FieldsMultifactor,\n [IField.MultiKV]: FieldsMultiKV,\n [IField.MultiText]: FieldsMultiText,\n [IField.Number]: FieldsNumber,\n [IField.Password]: FieldsPassword,\n [IField.Referencia]: FieldsDisplay,\n [IField.Search]: FieldsSearch,\n [IField.Select]: FieldsSelect,\n [IField.Slide]: FieldsSlide,\n [IField.Text]: FieldsText,\n [IField.Textarea]: FieldsTextarea,\n [IField.Time]: FieldsTime,\n [IField.Upload]: FieldsUpload,\n\n [IField.Custom]: this.campo()?.componente,\n }\n if (tipo) return FIELDS_MAP[tipo] || null;\n return null;\n }\n\n}\n\n","@if (getComponentForType(campo() ? campo()?.tipo : undefined); as component) {\n<ng-container [ngComponentOutlet]=\"component\" [ngComponentOutletInputs]=\"{ form: this.form(), name: name() }\" />\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { LibUtil } from './util';\n\n@Pipe({ name: 'classOf' })\nexport class ClassOfPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n return LibUtil.classof(value);\n }\n\n}\n","import { Component, computed, input, model, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { Formulario } from '../Formulario';\nimport { JsonColoridoPipe } from '../../../util/JsonColorido.pipe';\nimport { ClassOfPipe } from '../../../util/ClassOf.pipe';\nimport { LibUtil } from '../../../util/util';\n\n@Component({\n selector: 'ui-form-controls',\n templateUrl: './form-controls.html',\n styleUrls: ['./form-controls.css'],\n imports: [UiButton, JsonColoridoPipe, ClassOfPipe],\n})\nexport class FormControls {\n\n form = input.required<Formulario>();\n recebido = input<any>({});\n hasOutline = model<boolean>(false);\n faseIndex = input<number>(0);\n totalFases = input<number>(0);\n\n colapsed = signal(true);\n\n valoresOrdenados = computed(() => {\n let jsonValues: any = {};\n let formValues = this.form().values();\n if (LibUtil.classof(formValues) !== 'object') {\n return formValues;\n }\n let keys = Object.keys(formValues);\n keys.sort();\n for (let key of keys) {\n jsonValues[key] = formValues[key];\n }\n return jsonValues;\n });\n\n // CONTROLES\n copiar() {\n let values = LibUtil.formatJson(this.valoresOrdenados(), true)\n LibUtil.copy(values);\n }\n\n\n fullDisabled = signal(false);\n desativados() {\n this.fullDisabled.set(!this.fullDisabled());\n this.form().setDisabledAll(this.fullDisabled());\n }\n\n fullRequired = signal(false);\n obrigatorio() {\n this.fullRequired.set(!this.fullRequired());\n this.form().campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key].need = this.fullRequired();\n }\n return c;\n });\n }\n\n fullPending = signal(false);\n pendentes() {\n this.fullPending.set(!this.fullPending());\n this.form().campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key].pending = this.fullPending();\n }\n return c;\n });\n }\n\n fullTouched = signal(false);\n tocados() {\n this.fullTouched.set(!this.fullTouched());\n this.form().setTouchedAll(this.fullTouched());\n }\n\n forcarVazio() {\n this.form().setAllValuesTo('');\n }\n\n setarValInicio() {\n this.form().resetToStartValues();\n }\n\n setarValRecebido() {\n this.form().updateValues(this.recebido());\n }\n\n setOutline() {\n this.hasOutline.set(!this.hasOutline());\n this.form().showTouched.update(v => !v);\n }\n\n sanitizar() {\n this.form().sanitizar();\n }\n\n onlyAvailable() {\n this.form().onlyAvailable();\n }\n\n async validar() {\n await this.form().validar();\n }\n\n showingErrors = signal(false);\n changePreview() {\n this.showingErrors.set(!this.showingErrors());\n }\n\n errorsSetted = signal(false);\n setErrorAll() {\n this.errorsSetted.set(!this.errorsSetted());\n if (this.errorsSetted()) {\n this.form().setAllCamposPartial({ errors: ['Erro exemplo'] });\n } else {\n this.form().setAllCamposPartial({ errors: [] });\n }\n }\n}\n","<div class=\"areaFormControl\" [class.collapsed]=\"colapsed()\">\n\t<div class=\"areaValues barStatus\">\n\t\t<div class=\"f-s-e status\">\n\t\t\t<div class=\"statusItem f-s-12 f-t-b\" [title]=\"'Fases. Atual: ' + faseIndex() + '. Total: ' + totalFases()\"\n\t\t\t\t[class.ativo]=\"totalFases() > 1\" [class.inativo]=\"faseIndex() < 0 || faseIndex() > totalFases()\">\n\t\t\t\t@if(totalFases() > 1){\n\t\t\t\t<div class=\"f-s-e\">\n\t\t\t\t\t<div>A</div>\n\t\t\t\t\t<div>{{ faseIndex() }}</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"f-s-e\">\n\t\t\t\t\t<div>U</div>\n\t\t\t\t\t<div>{{ totalFases() - 1 }}</div>\n\t\t\t\t</div>\n\t\t\t\t} @else {\n\t\t\t\t<i class=\"fa fa-list-check f-s-18\"></i>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().algumTocado()\" [class.inativo]=\"!form().algumTocado()\"\n\t\t\t\ttitle=\"Algum campo tocado\">\n\t\t\t\t<i class=\"fa fa-handshake f-s-20\"></i>\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().valido()\" [class.inativo]=\"!form().valido()\"\n\t\t\t\ttitle=\"Todos campos Válidos\">\n\t\t\t\t<i class=\"bi bi-check2-all f-s-20\"></i>\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().isEnviado\" [class.inativo]=\"!form().isEnviado\"\n\t\t\t\ttitle=\"Estado de Enviado\">\n\t\t\t\t<i class=\"bi bi-send-check f-s-18\"></i>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"divider barIcoCollapse\" (click)=\"colapsed.set(!colapsed())\">\n\t\t\t<i class=\"bi bi-caret-down\"></i>\n\t\t</div>\n\t\t<div class=\"f-s-e status\">\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"dados\" (click)=\"copiar()\" icone=\"bi bi-copy\"\n\t\t\t\ttitle=\"Copiar o JSON de valores\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"estado\" (click)=\"setOutline()\" [class.ativo]=\"hasOutline()\"\n\t\t\t\ticone=\"fa fa-border-top-left\" [title]=\"(hasOutline() ? 'Com' : 'Sem') +' Outline'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"changePreview()\" [class.ativo]=\"showingErrors()\"\n\t\t\t\ticone=\"bi bi-exclamation-triangle\" [title]=\"showingErrors() ? 'Errors' : 'Values'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"obrigatorio()\" [class.ativo]=\"fullRequired()\"\n\t\t\t\ticone=\"fa fa-file-circle-exclamation\" [title]=\"fullRequired() ? 'Obrigatório' : 'Liberado'\"></ui-button>\n\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"desativados()\" [class.ativo]=\"fullDisabled()\"\n\t\t\t\ticone=\"bi bi-person-fill-lock\" [title]=\"fullDisabled() ? 'Desativado' : 'Ativo'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"pendentes()\" [class.ativo]=\"fullPending()\"\n\t\t\t\ticone=\"fa fa-clock-four\" [title]=\"fullPending() ? 'Pendente' : 'Sincronizado'\"></ui-button>\n\n\t\t</div>\n\t</div>\n\t@if(!colapsed()){\n\t<div class=\"formColtrols\">\n\t\t<div class=\"areaValues jsonArea\">\n\t\t\t@if(showingErrors()){\n\t\t\t<div>Erros do Formulário (Tipo: {{ form().listaErrors() | classOf }})</div>\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"form().listaErrors() | jsonColorido\"></pre>\n\t\t\t} @else {\n\t\t\t<div>Valor do Formulário (Tipo: {{ form().values() | classOf }})</div>\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"valoresOrdenados() | jsonColorido\"></pre>\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"areaValues controls\">\n\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"sanitizar()\" icone=\"fa fa-quidditch-broom-ball\"\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão definidos para este formulário.\">\n\t\t\t\tSanitizar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"onlyAvailable()\" icone=\"fa fa-power-off\"\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão disponíveis para este formulário.\">\n\t\t\t\tDisponíveis\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"validar()\" icone=\"bi bi-ui-checks\"\n\t\t\t\ttitle=\"Valida o formulário e seus campos.\">\n\t\t\t\tValidar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"warning\" class=\"dados\" (click)=\"setarValRecebido()\"\n\t\t\t\ticone=\"fa fa-clock-rotate-left\" title=\"Seta os valores que foram recebidos no formulário.\">\n\t\t\t\tRecebido\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"forcarVazio()\" icone=\"bi bi-eraser-fill\"\n\t\t\t\ttitle=\"Limpa todos os valores do formulário.\">\n\t\t\t\tLimpar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"setarValInicio()\" icone=\"bi bi-skip-backward\"\n\t\t\t\ttitle=\"Reseta os valores do formulário para os valores iniciais.\">\n\t\t\t\tReset\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"info\" class=\"dados\" (click)=\"tocados()\"\n\t\t\t\t[icone]=\"fullTouched() ? 'fa fa-handshake' : 'fa fa-handshake-slash'\"\n\t\t\t\ttitle=\"Marca todos os campos como tocados ou não tocados.\">\n\t\t\t\t{{ fullTouched() ? 'Tocados' : 'Tocar Todos' }}\n\t\t\t</ui-button>\n\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"estado\" (click)=\"setErrorAll()\"\n\t\t\t\t[class.ativo]=\"form().listaErrors().length > 0\"\n\t\t\t\t[icone]=\"form().listaErrors().length > 0 ? 'bi bi-exclamation-triangle' : 'bi bi-circle'\"\n\t\t\t\t[title]=\"form().listaErrors().length > 0 ? 'Erros adicionados' : 'Erros removidos'\">\n\t\t\t\t{{ form().listaErrors().length > 0 ? 'Erros Forçados' : 'Erros removidos' }}\n\t\t\t</ui-button>\n\n\t\t</div>\n\t</div>\n\t}\n</div>","import { Component, computed, input, model, output } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { LibUtil } from '../../../util/util';\nimport { IKV } from '../../../interfaces/interfaces';\nimport { FormControls } from \"../form-controls/form-controls\";\nimport { IField, IFields } from '../Formulario';\n\n@Component({\n selector: 'fields-form-filter',\n templateUrl: './form-filter.html',\n styleUrls: ['./form-filter.css', '../form-fields.css'],\n imports: [UiButton, FieldsGeneric, FormControls],\n})\nexport class FormFilter<T> extends BaseFieldsValues<T> {\n\n async onSave() {\n // Não faz nada. \n return;\n }\n\n hasOutline = model<boolean>(false);\n filtrar = output<any>();\n actionTitle = input<string>('Aplicar Filtro');\n\n onFiltrar() {\n let valores = LibUtil.clonar(this.form.values());\n valores = LibUtil.limparObject(valores);\n this.filtrar.emit(valores);\n }\n\n kvPreenchido = computed(() => {\n let propriedades: IKV[] = [];\n let valores = this.values() as any;\n if (!valores) return propriedades;\n let campos = this.campos();\n for (const key of Object.keys(campos)) {\n let campo = campos[key];\n if (campo.tipo === IField.Hidden) continue;\n if (valores?.[key] != null && valores?.[key] !== '' && !(Array.isArray(valores?.[key]) && valores?.[key].length === 0)) {\n propriedades.push({ k: campo.prop, v: campo.titulo ?? String(campo.prop) });\n }\n }\n return propriedades;\n });\n\n onDeletePropriedade(k: string | number | null | undefined) {\n if (k == null) return;\n this.form.updateValues({ [k as keyof IFields<T>]: '' });\n this.onFiltrar();\n }\n}\n","<div class=\"filtrosAtivos\">\n\t@for ( item of kvPreenchido(); track $index) {\n\t<div>\n\t\t{{ item.v }}\n\t\t<ui-button tipo=\"icon\" tema=\"error\" icone=\"bi bi-x\" (click)=\"onDeletePropriedade(item.k)\">\n\t\t</ui-button>\n\t</div>\n\t}\n</div>\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n<div class=\"buttonsGap\">\n\t<ui-button tipo=\"fill\" tema=\"primary\" icone=\"bi bi-funnel\" (click)=\"onFiltrar()\">{{ actionTitle() }}</ui-button>\n\t<ng-content></ng-content>\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, computed, effect, input, model, OnInit, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { IFaseCampos, IFases, IFieldComponent } from '../Formulario';\nimport { LOG } from '../../../util/log';\n\n@Component({\n selector: 'ui-form-fase',\n templateUrl: './form-fase.html',\n styleUrls: ['./form-fase.css'],\n imports: [UiButton],\n})\nexport class FormFase implements OnInit {\n\n fases = model<IFases<any>>();\n campos = input<IFieldComponent<any>[]>();\n\n isDisabledVoltar = signal(true);\n isDisabledAvancar = signal(true);\n isFaseado = computed(() => {\n let fases = this.fases()?.fases;\n return fases !== undefined && fases.length > 1; // 1 é faseado mas não tem navegação, mais de 1 é faseado com navegação\n });\n fasesList = computed(() => {\n return this.fases()?.fases ?? [];\n });\n faseIndex = model<number>(0);\n fase_historico = signal<number[]>([0]);\n isLinear = computed(() => this.fases()?.isLinear ?? false);\n\n constructor() {\n effect(() => {\n let fases = this.fases()?.fases;\n if (fases == null) {\n this.isDisabledAvancar.set(true);\n this.isDisabledVoltar.set(true);\n return;\n }\n this.isDisabledVoltar.set(this.faseIndex() <= 0);\n this.isDisabledAvancar.set(this.faseIndex() >= (fases.length - 1));\n });\n }\n ngOnInit(): void {\n let campos = this.campos();\n let fases = this.fases();\n\n if (campos == null || fases == null) return;\n let semFase = this.checkCamposInFase(campos, fases);\n if (semFase.length > 0) {\n semFase.forEach(prop => {\n this.fases.update(f => {\n if (f) {\n // Adiciona os campos sem fase a primeira fase, se ela existir.\n if (f.fases.length > 0) {\n let primeiraFase = f.fases[0];\n if (!primeiraFase.campos.includes(prop)) {\n primeiraFase.campos.push(prop);\n }\n } else {\n // Se não houver fase, cria uma nova fase e adiciona os campos sem fase nela.\n f.fases.push({\n nome: \"Geral\",\n campos: [prop],\n } as IFaseCampos<any>);\n }\n }\n return f;\n });\n });\n }\n // LOG(1, \"Fases configuradas:\", this.fases());\n }\n\n faseAvancar(faseIndex?: number): void {\n let fases = this.fases()?.fases;\n if (fases == null) return;\n\n if (faseIndex != null) {\n let proximaFaseIndex = fases.indexOf(fases[faseIndex]);\n if (proximaFaseIndex !== -1) {\n if (proximaFaseIndex !== this.faseIndex()) {\n this.faseIndex.set(faseIndex);\n this.fase_historico.update(h => { h = [...h, faseIndex]; return h; });\n }\n } else {\n LOG(1, \"Fase informada não existe.\");\n }\n } else {\n let proximaFaseIndex = fases.indexOf(fases[this.faseIndex() + 1]);\n if (proximaFaseIndex !== -1) {\n if (proximaFaseIndex !== this.faseIndex()) {\n this.faseIndex.set(proximaFaseIndex);\n this.fase_historico.update(h => { h = [...h, proximaFaseIndex]; return h; });\n }\n } else {\n LOG(1, \"Não há próxima fase para avançar.\");\n }\n }\n }\n faseVoltar(): void {\n let fases = this.fases()?.fases;\n if (fases == null) return;\n\n if (this.faseIndex() > 0) {\n this.fase_historico.update(h => { h.pop(); return h; });\n let ultimaFaseDoHistorico = this.fase_historico()[this.fase_historico().length - 1];\n if (ultimaFaseDoHistorico != null) {\n this.faseIndex.set(ultimaFaseDoHistorico);\n } else {\n LOG(1, \"Não para onde voltar.\");\n }\n } else {\n this.faseIndex.set(0);\n this.fase_historico.set([0]);\n LOG(1, \"Já está na primeira fase possível.\")\n }\n }\n\n\n\n checkCamposInFase(campos: IFieldComponent<any>[], fases: IFases<any>): string[] {\n // Verifica e informa no console se todos os campos recebidos estão presentes em alguma fase\n let camposNomes = campos.map(c => c.prop);\n let camposEmFases: string[] = [];\n let camposNaoEmFases: string[] = [];\n for (let campoNome of camposNomes) {\n let encontrado = false;\n for (let fase of fases.fases) {\n for (let campoOrGrupo of fase.campos) {\n if (typeof campoOrGrupo === 'string') {\n if (campoOrGrupo === campoNome) {\n encontrado = true;\n break;\n }\n } else {\n if (campoOrGrupo.campos.includes(campoNome)) {\n encontrado = true;\n break;\n }\n }\n }\n if (encontrado) break;\n }\n if (encontrado) {\n camposEmFases.push(campoNome);\n } else {\n camposNaoEmFases.push(campoNome);\n }\n }\n // if (camposNaoEmFases.length > 0) {\n // LOG(1, \"⚠️ Campos sem fase:\", camposNaoEmFases);\n // } else {\n // LOG(1, \"✔️ Todos os campos estão presentes em alguma fase.\");\n // }\n return camposNaoEmFases;\n\n }\n}\n","@if(isFaseado()){\n<div class=\"faseButtons\">\n\t<ui-button tipo=\"icon\" tema=\"primary\" (clicked)=\"faseVoltar()\" class=\"todosBotoes\" [disabled]=\"isDisabledVoltar()\"\n\t\ticone=\"fa fa-arrow-left\" title=\"Voltar\" [radiusTabFormat]=\"!isLinear()\"></ui-button>\n\t<div class=\"faseButtons faseHeader\" [class.hasGap]=\"isLinear()\">\n\t\t@if(isLinear()){\n\t\t<div class=\"fase-linha-entre-botoes\">\n\t\t\t<div class=\"fase-linha-central\"></div>\n\t\t</div>\n\t\t}\n\t\t@for (fase of fasesList(); track $index) {\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" class=\"todosBotoes faseBotao\" (clicked)=\"faseAvancar($index)\"\n\t\t\t[class.ativo]=\"faseIndex() == $index\" [disabled]=\"fase.disabled\" [icone]=\"fase.icone\" [title]=\"fase.nome\"\n\t\t\t[radiusTabFormat]=\"!isLinear()\">\n\t\t\t<div class=\"faseHeaderText\" [innerHTML]=\"fase.nome\"></div>\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (clicked)=\"faseAvancar()\" class=\"todosBotoes\" [disabled]=\"isDisabledAvancar()\"\n\t\ticone=\"fa fa-arrow-right\" [iconeAntes]=\"false\" [iconeDepois]=\"true\" title=\"Proximo\"\n\t\t[radiusTabFormat]=\"!isLinear()\"></ui-button>\n</div>\n<div class=\"faseUnderline\" [class.underline-linear]=\"isLinear()\"></div>\n}","import { Component, input, model, OnInit, output, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { LibUtil } from '../../../util/util';\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { FormControls } from \"../form-controls/form-controls\";\nimport { FormFase } from \"../form-fase/form-fase\";\nimport { UiLoading } from \"../../../elements/ui-loading/ui-loading\";\n\nexport interface ISaveTasks {\n title: string;\n icone: string;\n task: () => Promise<{ s: boolean, m: string }>;\n done?: boolean;\n success?: boolean;\n message?: string;\n}\n\nexport interface IActionsDone {\n values: any;\n result: any;\n tasks: ISaveTasks[];\n ok: boolean; // Booleano que indica se todas tarefas inseridas foram concluídas com sucesso.\n}\n\n@Component({\n selector: 'fields-form-action',\n templateUrl: './form-action.html',\n styleUrls: ['./form-action.css', '../form-fields.css'],\n imports: [UiButton, FieldsGeneric, FormControls, FormFase, UiLoading],\n})\nexport class FormAction<T> extends BaseFieldsValues<T> implements OnInit {\n\n hasOutline = model<boolean>(false);\n\n actionTitle = input<string | undefined>();\n sendValues = input<((values: any) => Promise<any>) | undefined>();\n sending = output<boolean>();\n done = output<IActionsDone>();\n\n // Permite customizar tarefas.\n taskTocar = input<boolean>(true);\n taskSanitizar = input<boolean>(true);\n taskDisponiveis = input<boolean>(true);\n taskValidar = input<boolean>(true);\n taskEnviar = input<boolean>(true);\n tasksToSave = signal<ISaveTasks[]>([]);\n\n result: any = null;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.updateDisabledAction();\n\n // Incrementa tarefa TOCAR\n if (this.taskTocar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Tocando campos',\n icone: 'fa fa-handshake',\n task: async () => {\n this.form.setTouchedAll(true);\n return { s: true, m: 'Tocando campos concluído' };\n }\n }]);\n }\n\n // Incrementa tarefa Sanitizando\n if (this.taskSanitizar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Sanitizando',\n icone: 'fa fa-quidditch-broom-ball',\n task: async () => {\n this.form.sanitizar();\n return { s: true, m: 'Sanitizando concluído' };\n }\n }]);\n }\n\n // Tarefa para filtrar apenas os campos disponíveis para envio (ex: campos desabilitados, etc).\n if (this.taskDisponiveis()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Disponíveis para envio',\n icone: 'fa fa-power-off',\n task: async () => {\n this.form.onlyAvailable();\n return { s: true, m: 'Disponíveis para envio concluído' };\n }\n }]);\n }\n\n // Incrementa tarefa VALIDAR\n if (this.taskValidar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Validando',\n icone: 'bi bi-ui-checks',\n task: async () => {\n try {\n await this.form.validar();\n return { s: true, m: 'Validação concluída' };\n } catch (e) {\n return { s: false, m: 'Erro na validação' };\n }\n }\n }]);\n }\n\n // Incrementa tarefa SENDVALUES\n if (this.taskEnviar() && this.sendValues()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Ação de enviar',\n icone: 'fa fa-paper-plane',\n task: async () => {\n // Para enviar, o form deve estar válido.\n if (!this.form.valido()) return { s: false, m: 'Formulário inválido' };\n\n // Para enviar, deve existir a função de envio.\n let fnEnviar = this.sendValues();\n if (!fnEnviar) return { s: false, m: 'Função de envio não definida' };\n\n // Reinicia o resultado anterior, se houver.\n this.result = null;\n\n // Obtem os valores do formulário.\n let valores = LibUtil.clonar(this.form.values());\n\n let errorMessage = \"\";\n\n // Inicia o envio.\n try {\n this.form.isEnviando = true;\n this.sending.emit(true);\n this.result = await fnEnviar(valores);\n this.form.isEnviando = false;\n this.sending.emit(false);\n if (this.result != null) {\n // Indica que a tarefa de envio foi concluída com sucesso.\n return { s: true, m: 'Envio concluído' };\n }\n } catch (e) {\n console.error(\"❌ ERRO ao Enviar Valores. \", e);\n errorMessage = e instanceof Error ? e.message : String(e);\n }\n\n // Qualquer outro caso, indica falha.\n return { s: false, m: `Erro ao enviar valores: ${errorMessage}` };\n }\n }]);\n }\n\n // Neste componente, há sempre uma ação e sempre emite tasksDone.\n this.tasksToSave.update(tasks => [\n ...tasks,\n {\n title: 'Ações concluídas',\n icone: 'fa fa-flag-checkered',\n task: async () => {\n let ok = this.tasksToSave().filter(task => task.title !== 'Ações concluídas').every(task => task.success);\n let values = LibUtil.clonar(this.form.values());\n let actionsDone: IActionsDone = {\n values,\n result: this.result,\n tasks: this.tasksToSave(),\n ok\n }\n this.done.emit(actionsDone);\n if (ok) this.form.isEnviado = true;\n return { s: ok, m: ok ? 'Ações concluídas com sucesso' : 'Erro nas ações' };\n }\n }\n ]);\n\n }\n\n async onSave() {\n this.tasksToSave.update(tasks => tasks.map(t => ({ ...t, done: false })));\n this.updateDisabledAction(true);\n this.isLoadingActive.set(true);\n\n for await (const task of this.tasksToSave()) {\n // await LibUtil.wait(1000);\n let r = task.task();\n r.then(s => {\n task.success = s.s;\n task.message = s.m;\n }).catch(f => {\n task.success = false;\n task.message = `Erro na execução da tarefa: ${f instanceof Error ? f.message : String(f)}`;\n });\n await r;\n task.done = true;\n }\n\n this.isLoadingActive.set(false);\n this.updateDisabledAction();\n }\n\n}\n","<ui-form-fase [fases]=\"fases()\" [campos]=\"form.listaCampos()\" [(faseIndex)]=\"faseIndex\"></ui-form-fase>\n@if(isFaseado()){\n<div class=\"containerFases\" [class.showOutlineFields]=\"hasOutline()\">\n\t@for (fase of listaFase(); track $index;let fIndex = $index) {\n\t<div class=\"areaFase g-fields\" [style.--fase]=\"faseIndex()\" [class.ativo]=\"faseIndex() == fIndex\"\n\t\t[style.--g-fields-min]=\"fase.gridMin\" [style.--g-fields-max]=\"fase.gridMax\"\n\t\t[class.showOutlineFields]=\"hasOutline()\">\n\t\t@for (faseGrupo of faseGrupo(); track $index) {\n\t\t@if(faseGrupo.faseIndex == fIndex){\n\n\t\t@if(faseGrupo.tipo == 'campo' && faseGrupo.campo){\n\n\t\t<fields-g [form]=\"form\" [name]=\"faseGrupo.campo.prop\"\n\t\t\t[class]=\"faseGrupo.campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\n\t\t} @else if (faseGrupo.tipo == 'grupo' && faseGrupo.grupo) {\n\n\t\t<div class=\"field-group\" [style.grid-area]=\"faseGrupo.grupo.area ?? 'auto / auto / auto / span 2'\">\n\t\t\t@if(faseGrupo.grupo.titulo){ <div class=\"group-title\"\n\t\t\t\t[style.grid-area]=\"faseGrupo.grupo.tituloArea ?? 'auto / auto / auto / span 2'\">{{\n\t\t\t\tfaseGrupo.grupo!.titulo }}</div> }\n\t\t\t@for(campo of faseGrupo.grupo!.campos; track $index){\n\t\t\t<fields-g [form]=\"form\" [name]=\"campo\"\n\t\t\t\t[class]=\"form.campos()[campo]?.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t\t\t}\n\t\t</div>\n\n\t\t}@else{\n\n\t\t<div class=\"card bg-danger\"> ❌ Falha tipo {{ faseGrupo.tipo }}.<br> Campo {{ faseGrupo.nome }} não encontrado!</div>\n\t\t}\n\n\t\t}\n\t\t}\n\t</div>\n\t}\n</div>\n\n}@else {\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\"\n\t[class.showOutlineFields]=\"hasOutline()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n}\n\n<div class=\"buttonsGap\">\n\t<ui-button tipo=\"fill\" tema=\"primary\" (clicked)=\"onSave()\" [disabled]=\"isDisabledAction()\" class=\"botaoAcaoSave\">\n\t\t@if(showFormControls()){\n\t\t<div class=\"icons\">\n\t\t\t@for (task of tasksToSave(); track $index) {\n\t\t\t<i [class]=\"task.icone\" [class.done]=\"task.done\" [class.success]=\"task.success == true\"\n\t\t\t\t[class.fail]=\"task.success == false\"></i>\n\t\t\t}\n\t\t</div>\n\t\t}\n\t\t<div class=\"f-1\">\n\t\t\t{{ actionTitle() ?? 'Salvar' }}\n\t\t</div>\n\t\t@if(isLoadingActive()){\n\t\t<div class=\"loadingSubmit\">\n\t\t\t<ui-loading></ui-loading>\n\t\t</div>\n\t\t}\n\t</ui-button>\n\t<ng-content></ng-content>\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, model } from '@angular/core';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FormControls } from \"../form-controls/form-controls\";\n\n@Component({\n selector: 'fields-form-no-action',\n templateUrl: './form-no-action.html',\n styleUrls: ['./form-no-action.css', '../form-fields.css'],\n imports: [FieldsGeneric, FormControls],\n})\nexport class FormNoAction<T> extends BaseFieldsValues<T> {\n\n async onSave() {\n // Não faz nada. \n return;\n }\n\n hasOutline = model<boolean>(false);\n\n}\n","<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, computed, input, model } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { IField, IFieldComponent } from '../Formulario';\nimport { LOG } from '../../../util/log';\n\nexport type IModeShowEntidade = \"centro\" | \"cantos\" | \"esquerda\" | \"grid\" | \"wrap\";\n\n@Component({\n selector: 'ui-formated-values',\n templateUrl: './formated-values.html',\n styleUrls: ['./formated-values.css'],\n imports: [],\n})\nexport class FormatedValues {\n\n campos = input<IFieldComponent<any>[] | undefined>();\n dados = input<any>();\n modo = model<IModeShowEntidade>(\"centro\");\n especialKeys = input<string[] | undefined>();\n ignoreKeys = input<string[] | undefined>([]);\n\n camposFormatados = computed(() => {\n let campos = this.campos();\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\n\n let listaDados = campos?.map(campo => {\n let inputs: any = {};\n // let isInner: boolean = this.getIsInner(campo, inputs);\n let titulo = campo.titulo ?? campo.prop ?? \"\";\n return {\n ...campo,\n label: titulo + ':',\n value: this.getFormattedValue(campo) ?? \"\",\n // isInner,\n inputs,\n isEspecial: especialKeys.includes(campo.prop?.toLowerCase()),\n };\n }).filter(campo => !this.ignoreKeys()?.includes(campo.prop));\n\n // Ordena a lista colocando os isEspecial no final\n listaDados = listaDados?.sort((a, b) => {\n if (a.isEspecial && !b.isEspecial) return 1;\n if (!a.isEspecial && b.isEspecial) return -1;\n return 0;\n });\n\n // Retorna\n return listaDados;\n });\n\n // changeModoTo(modo: IModeShowEntidade) {\n // this.modo.set(modo);\n // }\n\n // getIsInner(campo: IFieldComponent<any>, inputs: any): boolean {\n // switch (campo.tipo) {\n\n // case IField.Upload:\n // inputs[\"file\"] = this.dados()?.[campo.prop];\n // inputs[\"tipo\"] = IMGTYPE.Generic;\n // inputs[\"h\"] = 45;\n // return false;\n\n // default:\n // return true;\n\n // }\n // }\n\n getFormattedValue(campo: IFieldComponent<any>) {\n let value = this.dados()?.[campo.prop];\n if (value == null || value == undefined) return \"\";\n\n switch (campo.tipo) {\n\n case IField.AutoComplete:\n // A implementar...\n break;\n\n\n case IField.Button:\n // A implementar...\n break;\n\n case IField.Checkbox:\n value = value === true ? \"Sim\" : \"Não\";\n break;\n\n case IField.Color:\n // A implementar...\n break;\n\n case IField.Custom:\n LOG(1, \"ShowEntidade: A exibição do custom não deve ser alterada por aqui. (Remover o aviso quando for implementar o custom)\");\n break;\n\n case IField.Date:\n value = LibUtil.stringToDataBR(value)?.split(\" \")[0];\n break;\n\n case IField.DateTime:\n value = LibUtil.stringToDataBR(value);\n break;\n\n case IField.Display:\n // A implementar...\n break;\n\n case IField.Editor:\n // A implementar...\n break;\n\n case IField.Email:\n // A implementar...\n break;\n\n case IField.Hidden:\n // A implementar...\n break;\n\n case IField.Icon:\n value = `<i class=\"${value}\"></i> ${value}`;\n break;\n\n case IField.MultiFactor:\n // A implementar...\n break;\n\n case IField.MultiText:\n // A implementar...\n break;\n\n case IField.Number:\n // A implementar...\n break;\n\n case IField.Password:\n value = \"••••••••\";\n break;\n\n case IField.Referencia:\n if (campo.getDisplay) value = campo.getDisplay(value);\n break;\n\n case IField.Search:\n // A implementar...\n break;\n\n case IField.Select:\n let options = campo.options?.();\n let optionValue = options?.find(o => o.k == value)?.v\n optionValue ? value = `${optionValue}` : value = `${value}`;\n break;\n\n case IField.Slide:\n value = value == true ? \"Sim\" : \"Não\";\n break;\n\n case IField.Text:\n // A implementar...\n break;\n\n case IField.Upload:\n // A implementar...\n break;\n\n }\n\n // Estes abaixo só se aplicariam se o ShowEntidade fosse mais genérico.\n // switch (Util.classof(value)) {\n // case \"boolean\":\n // if (value === true) value = \"Sim\";\n // if (value === false) value = \"Não\";\n // break;\n // case \"array\":\n // if (value.length && value.length > 0) {\n // if (Util.classof(value[0]) == \"object\") {\n // value = `Lista com ${value.length} registros`\n // } else {\n // value = value.join(\", \");\n // }\n // }\n // break;\n // }\n return value;\n }\n}\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\n\n\n\t@for (field of camposFormatados(); track $index) {\n\t<div class=\"linhaDado\" [class.isEspecial]=\"field.isEspecial\">\n\t\t<div class=\"titulo\" [innerHTML]=\"field.label\"></div>\n\t\t<!-- @if(field.isInner){ -->\n\t\t<div class=\"conteudo\" [innerHTML]=\"field.value\"></div>\n\t\t<!-- }@else {\n\t\t<build-component [componente]=\"field.value\" [inputs]=\"field.inputs\"></build-component>\n\t\t} -->\n\t</div>\n\t}\n\n</div>","import { Component, computed, input, model } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { IModeShowEntidade } from '../formated-values/formated-values';\n\n@Component({\n selector: 'ui-single-values',\n templateUrl: './single-values.html',\n styleUrls: ['./single-values.css'],\n imports: [],\n})\nexport class SingleValues {\n\n dados = input<any>();\n modo = model<IModeShowEntidade>(\"centro\");\n especialKeys = input<string[] | undefined>();\n\n dadosAExibir = computed(() => {\n let dados = this.dados();\n let keys = Object.keys(dados ?? {}).sort();\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\n\n let listaDados = keys?.map(chave => {\n return {\n label: LibUtil.pascalCase(chave) + ':',\n value: this.getNormalizedValue(dados[chave]) ?? \"\",\n isEspecial: especialKeys.includes(chave.toLowerCase()),\n };\n });\n\n // Ordena a lista colocando os isEspecial no final\n listaDados = listaDados?.sort((a, b) => {\n if (a.isEspecial && !b.isEspecial) return 1;\n if (!a.isEspecial && b.isEspecial) return -1;\n return 0;\n });\n\n // Retorna\n return listaDados;\n });\n\n getNormalizedValue(value: any) {\n if (value == null || value == undefined) return \"\";\n\n let classofValue = LibUtil.classof(value);\n\n switch (classofValue) {\n\n case \"object\":\n value = `{ ... Objeto com ${Object.keys(value).length} itens }`\n break;\n\n case \"array\":\n if (value.length && value.length > 0) {\n if (LibUtil.classof(value[0]) == \"object\") {\n value = `[ ... Lista com ${value.length} registros ]`\n } else {\n value = value.join(\", \");\n }\n }\n break;\n\n }\n return value;\n }\n}\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\n\n\n\t@for (dado of dadosAExibir(); track $index) {\n\t<div class=\"linhaDado\" [class.isEspecial]=\"dado.isEspecial\">\n\t\t<div class=\"titulo\" [innerHTML]=\"dado.label\"></div>\n\t\t<div class=\"conteudo\" [innerHTML]=\"dado.value\"></div>\n\t</div>\n\t}\n\n</div>","import { InjectionToken, Signal, Type, WritableSignal } from \"@angular/core\";\nimport { IKV, ITiposTema } from \"../interfaces/interfaces\";\n\n\n// ─── ScreenMode (definido localmente — sem dependência do LayoutCoreService) ──────\nexport enum ScreenMode {\n\tMobile = \"Mobile\",\n\tDesktop = \"Desktop\",\n\tTablet = \"Tablet\",\n}\n\n// ─── Serviço de célula (interface para quebrar dependência circular) ──────────────\nexport interface IMkCellService {\n\tgridParams: Signal<IGridParam<any> | undefined>;\n\tupdateGridParams(params: IGridParam<any>): void;\n}\n\nexport const GRID_PARAMS_TOKEN = new InjectionToken<IGridParam<any>>('GRID_PARAMS');\n\nexport interface IGridCellComponentConfig {\n\tcomponent: Type<unknown>,\n\tinput: any,\n}\n\n// ─── Coluna ────────────────────────────────────────────────────────────────────────\nexport interface IColuna<T> {\n\tprop: keyof T & string | (keyof T & string)[],\n\ttitulo: string,\n\ttituloReduzido?: string,\n\twidth?: string,\n\tminWidth?: string,\n\tmaxWidth?: string,\n\n\tvisivel?: boolean,\n\tclasseFull?: string,\n\tclasseCell?: string,\n\tclasseHeader?: string,\n\tsortable?: boolean,\n\tstyleCell?: string,\n\tstyleHeader?: string,\n\tcellRenderer?: (p: IGridParam<T>) => string,\n\tcellRendererParams?: any,\n\tcellComponent?: IGridCellComponentConfig,\n\tcapitalize?: boolean,\n\tmask?: string | ((value: any) => string),\n\ttextVertical?: boolean,\n\tiniciaAgrupado?: boolean,\n\tcurrency?: string,\n\toverflow?: string,\n\ttextOverflow?: string,\n}\n\nexport type IColunaImage = \"\"\n\nexport enum IGridFilterType {\n\tExato = 'exact',\n\tComo = 'like',\n\tMaiorQue = 'bigger',\n\tMenorQue = 'smaller',\n\tEntre = 'between',\n\tColumn = 'column',\n}\n\nexport interface IGridFilter<T> {\n\tpropriedade: keyof T,\n\tpropriedade2?: keyof T,\n\ttipo: IGridFilterType,\n\tvalues: string[] | number[] | boolean[],\n}\n\nexport interface IGridEventAPI<T> {\n\tid: string | undefined,\n\tlinha: T,\n\taction: IGridConfigActions,\n}\n\nexport const PAGINATION_OPTIONS: IKV[] = [\n\t{ k: 5, v: \"5\" },\n\t{ k: 10, v: \"10\" },\n\t{ k: 25, v: \"25\" },\n\t{ k: 50, v: \"50\" },\n\t{ k: 100, v: \"100\" },\n\t{ k: 1000, v: \"1000\" },\n]\n\nexport interface IOrdenacao {\n\tcoluna: string | string[];\n\tdirecao: 'asc' | 'desc';\n}\n\nexport interface IPaginacao {\n\tpaginaAtual: number;\n\ttotalItens: number;\n\ttotalagrupado: number;\n}\n\nexport interface IGridConfigActions {\n\tinmenu?: boolean,\n\tdisplay: string,\n\tname: string,\n\ttema?: ITiposTema,\n\ticon?: string,\n\tshowIcon?: boolean,\n\taction?: (p: IGridEventAPI<any>) => void,\n\tshowAction: boolean,\n\tshowLineAction?: (linha: any) => boolean,\n\tactions?: IGridConfigActions[],\n}\n\nexport interface IDisplayValue {\n\tdisplay: string,\n\tvalue: string | number | boolean,\n}\n\nexport interface IGridBaseActions {\n\tmenuDisplay: string,\n\tmenuIcon: string,\n\tshowMenuIcon: boolean,\n\twidth: string,\n\twidthMax: string,\n\twidthMin: string,\n\taloneAlwaysOutside: boolean,\n}\n\nexport interface IActionsLineConfig extends IGridBaseActions {\n\theaderDisplayMore: string,\n\theaderClasse?: string,\n}\n\nexport interface IGridConfig<T> {\n\tactionsTop: IGridConfigActions[],\n\tactionsTopConfig: IGridBaseActions,\n\tactionsLine: IGridConfigActions[],\n\tactionsLineConfig: IActionsLineConfig,\n\tInativeRule: (linha: any) => boolean,\n\tSelectionDisabledRule?: (linha: any) => boolean,\n\tcolunas: IColuna<T>[],\n\tfilterSearchIcon: string,\n\tfilterBarStartCollapsed: boolean,\n\tscreen: Signal<ScreenMode>,\n\titensPorPagina: Signal<number>,\n\tlastGridEventAPI?: IGridEventAPI<T>,\n\tnameEntity: string | undefined,\n\tpaginations: IKV[],\n\tprimarykey: string,\n\tshowControlBar: boolean,\n\tshowSearch: boolean,\n\tshowFilterBar: boolean,\n\tshowGridMenu: boolean,\n\tshowInfoBar: boolean,\n\tshowMenuIcon: boolean,\n\tshowActionsLine: boolean,\n\tshowActionsTop: boolean,\n\tshowPagination: boolean,\n\ttimeRequest?: number,\n\tonSelected?: (linha: any, selecionados: any[]) => Promise<void> | void,\n\tonUnselected?: (linha: any, selecionados: any[]) => Promise<void> | void,\n\tonSelectionChanged?: (linha: any, selecionados: any[]) => Promise<void> | void,\n\tstartSelected?: any[], // IDs selecionados inicialmente\n\tselectionMode: 'single' | 'multiple' | 'none',\n\thasError: boolean,\n\thasVerticalLine: boolean,\n\thasSeletor: boolean,\n\thasGrid: boolean,\n\tminLineHeight?: string,\n\tisCompacted?: boolean,\n\tisLoaded: boolean,\n\tbackgroundHue?: (linha: any) => number,\n}\n\nexport interface IGridParam<T> {\n\tcoluna: IColuna<T>,\n\tcolunas: IColuna<T>[],\n\tdata: T,\n\tlista?: T[],\n\tparams: any,\n\tvalue: any,\n\tservicoParams: IMkCellService,\n}\n\nexport interface IFilterFields {\n\tpropriedade: string,\n\tpropriedade2?: string,\n\ttipo: IGridFilterType,\n\tvalues: string[] | number[] | boolean[],\n}\n\nexport interface IDadosDaLinha {\n\tid: string,\n\tdados: any,\n\thue: number | undefined,\n\tinativo: boolean,\n\tselecionado: boolean,\n\tgroupName: string,\n\tisSelectionDisabled?: boolean,\n\tisColapsed?: boolean,\n\tisGroup?: boolean,\n\tisFullLine?: {\n\t\tvisible: boolean,\n\t\tcolapsed: boolean,\n\t\tcolapsedCount?: number,\n\t\tshowIco?: boolean,\n\t},\n\tordem: number,\n\tactions?: IGridConfigActions[],\n\thasActionMenu?: boolean,\n}\n\nexport interface IActionClickEvent {\n\taction?: IGridConfigActions,\n\tdadosDaLinha?: IDadosDaLinha,\n}\n","import { Injectable, signal } from '@angular/core';\nimport { IGridParam, IMkCellService } from '../mk-grid.types';\n\n@Injectable()\nexport class GridCellService implements IMkCellService {\n\n\tpublic gridParams = signal<IGridParam<any> | undefined>(undefined);\n\n\tupdateGridParams(params: IGridParam<any>): void {\n\t\tthis.gridParams.set(params);\n\t}\n\n}\n","import { ChangeDetectionStrategy, Component, ComponentRef, inject, Injector, input, OnDestroy, OnInit, signal, SimpleChanges, viewChild, ViewContainerRef } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { GRID_PARAMS_TOKEN, IColuna, IGridConfig, IGridParam } from '../mk-grid.types';\nimport { GridCellService } from '../grid-cell/grid-cell.service';\n\nconst PROP_CONTROLE_ATIVO = 'is_ativo';\n\n@Component({\n selector: 'lib-grid-cell-handler',\n templateUrl: './grid-cell-handler.html',\n styleUrls: ['./grid-cell-handler.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [GridCellService],\n host: {\n '[class.table-inativo]': '!ativo()'\n }\n})\nexport class GridCellHandler<T> implements OnInit, OnDestroy {\n\n\n private parentInjector = inject(Injector);\n private sanitizer = inject(DomSanitizer);\n private servico = inject(GridCellService);\n\n lista = input.required<T[]>();\n linha = input.required<T>();\n config = input.required<IGridConfig<T>>();\n localColuna = input.required<IColuna<T>>();\n localColunas = input.required<IColuna<T>[]>();\n inputSearchText = input.required<string>();\n\n ativo = signal<boolean>(true);\n\n gridParams?: IGridParam<any>;\n\n vcr = viewChild('cellComponent', { read: ViewContainerRef });\n private componenteRef?: ComponentRef<any>;\n\n valueToRender: SafeHtml = \"\";\n\n ngOnInit() {\n this.gridParams = this.getGridParams();\n if (!this.localColuna().cellComponent) {\n this.valueToRender = this.getRenderer();\n }\n }\n ngOnDestroy() {\n if (this.componenteRef) {\n this.componenteRef.destroy();\n this.componenteRef = undefined;\n }\n }\n ngAfterViewInit() {\n this.createComponente()\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.valueToRender = this.getRenderer();\n this.gridParams = this.getGridParams();\n if (changes['linha'] && this.servico) {\n this.servico.updateGridParams(this.gridParams);\n }\n }\n\n getRenderer(): SafeHtml | string {\n let data = \"\";\n let prop: string | string[] = this.localColuna().prop;\n if (LibUtil.classof(prop) == \"string\" && (prop as string).includes(\".\")) {\n const props = (prop as string).split(\".\");\n const lastObj = LibUtil.getV(props.slice(0, -1).join(\".\"), this.linha());\n this.ativo.set(!!lastObj?.[PROP_CONTROLE_ATIVO]);\n }\n\n if (this.localColuna().prop) data = LibUtil.getV(this.localColuna().prop, this.linha());\n\n if (this.localColuna().mask) {\n data = LibUtil.mascarar(data, this.localColuna().mask) ?? data;\n }\n\n if (this.localColuna().capitalize) {\n data = LibUtil.capitalize(data);\n }\n\n if (this.localColuna().cellRenderer) {\n const html = this.localColuna().cellRenderer!(this.getGridParams())\n ?? data\n ?? '';\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n data = data?.toString() ?? '';\n\n let words = this.inputSearchText().trim().split(\" \").filter(t => t != \"\").map(p => LibUtil.removeEspecias(p).toLowerCase());\n if (words.length > 0) {\n for (let w of words) {\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n let regexTag = new RegExp(`<[^>]*${w}[^>]*>`, 'i');\n if (regexTag.test(preparedData.toString())) {\n continue;\n }\n let pos = preparedData.toString().toLowerCase().indexOf(w.toLowerCase());\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n\n return data ?? '';\n }\n\n private createComponente() {\n if (this.localColuna().cellComponent) {\n this.vcr()?.clear();\n this.componenteRef = this.vcr()?.createComponent(this.localColuna().cellComponent!.component, {\n injector: Injector.create({\n parent: this.parentInjector,\n providers: [\n { provide: GRID_PARAMS_TOKEN, useValue: this.gridParams },\n { provide: 'GRID_PARAMS', useValue: this.gridParams }\n ]\n })\n });\n }\n }\n\n getGridParams(): IGridParam<T> {\n let value = \"\"\n if (this.localColuna().prop) value = LibUtil.getV(this.localColuna().prop, this.linha());\n return {\n coluna: this.localColuna(),\n colunas: this.localColunas(),\n data: this.linha(),\n lista: this.lista(),\n params: this.localColuna().cellComponent?.input ?? this.localColuna().cellRendererParams,\n servicoParams: this.servico,\n value,\n }\n }\n}\n\n","@if(localColuna().cellComponent){\n<div class=\"d-none\" #cellComponent></div>\n} @else {\n<div [innerHTML]=\"valueToRender\"></div>\n}","import { Component, input, output } from '@angular/core';\nimport { IActionClickEvent, IDadosDaLinha, IGridConfig, IGridConfigActions } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { UiMenu } from '../../elements/ui-menu/ui-menu';\n\n@Component({\n selector: 'lib-grid-cell-actions',\n imports: [UiButton, UiMenu],\n templateUrl: './grid-cell-actions.html',\n styleUrls: ['./grid-cell-actions.css'],\n})\nexport class GridCellActions {\n\n config = input.required<IGridConfig<any>>();\n dadosDaLinha = input.required<IDadosDaLinha>();\n mobileHeader = input<boolean | undefined>(false);\n compact = input<boolean | undefined>(false);\n\n action = output<IActionClickEvent>();\n\n protected onClickAction(action?: IGridConfigActions, dadosDaLinha?: IDadosDaLinha) {\n if (action?.action) {\n this.action.emit({ action, dadosDaLinha });\n }\n return;\n }\n\n}\n","@if(!compact()){\n@for (action of dadosDaLinha().actions; track $index;) {\n@if(action.showAction && action.inmenu !== true){\n<ui-button [tipo]=\"mobileHeader() ? 'fill' : 'icon'\" [tema]=\"action?.tema ?? 'primary'\" [title]=\"action.display\"\n\t(click)=\"onClickAction(action, dadosDaLinha())\" [icone]=\"action.icon\"\n\t[style.--ui-height]=\"compact() ? '20px' : '40px'\"></ui-button>\n}\n}\n}\n\n@if(dadosDaLinha().hasActionMenu || compact()){\n<ui-menu>\n\t<ui-button slot=\"botao\" tipo=\"icon\" tema=\"primary\" [title]=\"config().actionsLineConfig.menuDisplay\"\n\t\t[icone]=\"config().actionsLineConfig.showMenuIcon ? 'bi bi-three-dots-vertical' : undefined\">\n\t\t{{ config().actionsLineConfig.menuDisplay }}\n\t</ui-button>\n\n\t@for (action of dadosDaLinha().actions; track $index;let last = $last) {\n\t@if(action.showAction && (action.inmenu !== false || compact())){\n\t<ui-button tipo=\"menu-item\" [tema]=\"action?.tema ?? 'primary'\" (click)=\"onClickAction(action, dadosDaLinha())\"\n\t\t[icone]=\"action?.showIcon ? action?.icon : 'bi bi-dot'\" [style.--ui-padding]=\"'0 16px'\">\n\t\t{{ action?.display ?? '' }}\n\t</ui-button>\n\t}\n\t}\n\n</ui-menu>\n}","import { Component, input, output } from '@angular/core';\nimport { IActionClickEvent, IColuna, IDadosDaLinha, IGridConfig } from '../mk-grid.types';\nimport { UiCheckBox } from \"../../public-api\";\nimport { GridCellHandler } from \"../grid-cell-handler/grid-cell-handler\";\nimport { GridCellActions } from \"../grid-cell-actions/grid-cell-actions\";\n\nexport interface IColunaComLargura extends IColuna<any> {\n widthNum: number;\n ordem: number;\n}\n\n@Component({\n selector: 'lib-grid-row-renderer',\n imports: [UiCheckBox, GridCellHandler, GridCellActions],\n templateUrl: './grid-row-renderer.html',\n styleUrls: ['../mk-grid.shared.css', './grid-row-renderer.css'],\n})\nexport class GridRowRenderer {\n dadosLinha = input.required<IDadosDaLinha>();\n config = input.required<IGridConfig<any>>();\n colunas = input.required<IColunaComLargura[]>();\n colunasOrdenadas = input.required<IColunaComLargura[]>();\n lista = input.required<any[]>();\n inputSearchText = input.required<string>();\n hasSeletor = input<boolean>(false);\n hasVerticalLine = input<boolean>(false);\n isCompacted = input<boolean>(false);\n hasGrid = input<boolean>(false);\n rowIndex = input<number>(0);\n lastRow = input<boolean>(false);\n\n actionTriggered = output<IActionClickEvent>();\n rowClicked = output<IDadosDaLinha>();\n\n protected onRowAction(event: IActionClickEvent): void {\n this.actionTriggered.emit(event);\n }\n\n protected onRowClick(): void {\n this.rowClicked.emit(this.dadosLinha());\n }\n}\n\n","@if(hasVerticalLine()) {\n<div class=\"table-header table-formated table-vertical-line\">{{ dadosLinha().ordem }}</div>\n}\n\n@if(hasSeletor() && config().selectionMode != 'none') {\n<div class=\"table-item table-formated table-item-seletor\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t[class.odd]=\"rowIndex() % 2 !== 0\" [class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[class.table-border-left]=\"hasGrid()\" [style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\"\n\t(click)=\"onRowClick()\">\n\t<ui-check-box [(value)]=\"dadosLinha().selecionado\" [single]=\"config().selectionMode == 'single'\"\n\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\" [disabled]=\"dadosLinha().isSelectionDisabled\"></ui-check-box>\n</div>\n}\n\n@for (coluna of colunas(); track $index; let j = $index) {\n@if (coluna.visivel !== false) {\n<lib-grid-cell-handler class=\"table-item table-dados {{ coluna.classeCell }}\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.table-first-col]=\"j === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [style.overflow]=\"coluna.overflow ?? 'hidden'\"\n\t[style.textOverflow]=\"coluna.textOverflow ?? 'ellipsis'\" [linha]=\"dadosLinha().dados\" [localColuna]=\"coluna\"\n\t[lista]=\"lista()\" [config]=\"config()\" [localColunas]=\"colunasOrdenadas()\"\n\t[class.table-bg-error]=\"dadosLinha().inativo\" (click)=\"onRowClick()\" [inputSearchText]=\"inputSearchText()\"\n\t[class.table-border-left]=\"hasGrid()\" [class.table-border-right]=\"$last && hasGrid() && !config().showActionsLine\"\n\t[attr.ordem]=\"coluna.ordem\"></lib-grid-cell-handler>\n}\n}\n\n@if(config().showActionsLine) {\n<lib-grid-cell-actions class=\"table-item table-formated table-item-action\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [config]=\"config()\" [dadosDaLinha]=\"dadosLinha()\"\n\t[class.table-border-right-error]=\"dadosLinha().inativo\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t(action)=\"onRowAction($event)\" [compact]=\"isCompacted()\" [class.table-border-left]=\"hasGrid()\"\n\t[class.table-border-right]=\"hasGrid()\" [class.last-row]=\"lastRow()\"></lib-grid-cell-actions>\n}","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IColuna, IGridConfig, IOrdenacao } from '../mk-grid.types';\nimport { UiCheckBox } from '../../elements/ui-check-box/ui-check-box';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nexport interface IColunaComLargura extends IColuna<any> {\n\twidthNum: number;\n\tordem: number;\n}\n\nexport interface IHeaderResizeEvent {\n\tevent: MouseEvent;\n\tcoluna: IColunaComLargura;\n}\n\nexport interface IHeaderResizeDoubleClickEvent {\n\tevent: Event;\n\tcoluna: IColunaComLargura;\n}\n\n@Component({\n\tselector: 'lib-grid-header-row',\n\ttemplateUrl: './grid-header-row.html',\n\tstyleUrls: ['../mk-grid.shared.css', './grid-header-row.css'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: { style: 'display: contents' },\n\timports: [UiCheckBox, DragDropModule],\n})\nexport class GridHeaderRow {\n\n\tcolunas = input.required<IColunaComLargura[]>();\n\tordenacoes = input.required<IOrdenacao[]>();\n\ttodosSelecionados = input.required<boolean>();\n\tconfig = input.required<IGridConfig<any>>();\n\thasSeletor = input<boolean>(false);\n\thasVerticalLine = input<boolean>(false);\n\thasGrid = input<boolean>(false);\n\tisCompacted = input<boolean>(false);\n\tisSelectingAll = input<boolean>(false);\n\n\tcolumnSort = output<string | string[]>();\n\tselectAll = output<boolean>();\n\tcolumnResizeStart = output<IHeaderResizeEvent>();\n\tcolumnResizeDoubleClick = output<IHeaderResizeDoubleClickEvent>();\n\n\tprotected getOrdenacaoDirecao(coluna: string | string[]): 'asc' | 'desc' | null {\n\t\tconst ordenacao = this.ordenacoes().find(o => o.coluna === coluna);\n\t\treturn ordenacao ? ordenacao.direcao : null;\n\t}\n\n\tprotected onColumnSort(coluna: string | string[]): void {\n\t\tthis.columnSort.emit(coluna);\n\t}\n\n\tprotected onSelectAll(value: boolean): void {\n\t\tthis.selectAll.emit(value);\n\t}\n\n\tprotected onResizeStart(event: MouseEvent, coluna: IColunaComLargura): void {\n\t\tthis.columnResizeStart.emit({ event, coluna });\n\t}\n\n\tprotected onResizeDoubleClick(event: Event, coluna: IColunaComLargura): void {\n\t\tthis.columnResizeDoubleClick.emit({ event, coluna });\n\t}\n}\n\n","@if(hasVerticalLine()) {\n<div class=\"table-header table-vertical-line\"></div>\n}\n\n@if(hasSeletor()) {\n<div class=\"table-header table-header-seletor\">\n\t@if(config().selectionMode == 'multiple') {\n\t<ui-check-box [single]=\"false\" [value]=\"todosSelecionados()\" (changed)=\"onSelectAll($event)\"\n\t\t[style.--ui-color]=\"'var(--sys-on-primary)'\" [style.--ui-outline]=\"'var(--sys-on-primary)'\"\n\t\t[disabled]=\"isSelectingAll()\" [style.--ui-size]=\"isCompacted() ? '15px' : undefined\"\n\t\t[hasDash]=\"true\"></ui-check-box>\n\t}\n</div>\n}\n\n@for (coluna of colunas(); track $index) {\n@if (coluna.visivel !== false) {\n<div class=\"table-header\" [class.table-border-left-darker]=\"hasGrid() && $index === 0\"\n\t[class.header-last-col]=\"$last && !config().showActionsLine\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[class.sortable]=\"coluna.sortable !== false\" [class.sorted-asc]=\"getOrdenacaoDirecao(coluna.prop) === 'asc'\"\n\t[class.sorted-desc]=\"getOrdenacaoDirecao(coluna.prop) === 'desc'\" [class.textVertical]=\"coluna.textVertical\">\n\t<div cdkDrag [cdkDragData]=\"coluna\" cdkDragLockAxis=\"x\"\n\t\tclass=\"table-header-text table-drag-container drop-option {{ coluna.classeHeader }}\" [title]=\"coluna.titulo\"\n\t\t[innerHTML]=\"coluna.tituloReduzido ?? coluna.titulo\" [attr.ordem]=\"coluna.ordem\"\n\t\t(click)=\"coluna.sortable !== false && onColumnSort(coluna.prop)\">\n\t</div>\n\t<div class=\"table-header-controls\" (dblclick)=\"onResizeDoubleClick($event, coluna)\"\n\t\t(mousedown)=\"onResizeStart($event, coluna)\">\n\t\t@if (coluna.sortable !== false) {\n\t\t<span class=\"table-ico-sort\">\n\t\t\t@if (getOrdenacaoDirecao(coluna.prop) === 'asc') {\n\t\t\t<i class=\"fa fa-sort-up asc\"></i>\n\t\t\t} @else if (getOrdenacaoDirecao(coluna.prop) === 'desc') {\n\t\t\t<i class=\"fa fa-sort-down desc\"></i>\n\t\t\t}\n\t\t</span>\n\t\t}\n\t</div>\n</div>\n}\n}\n\n@if(config().showActionsLine) {\n<div class=\"table-header table-action-line header-last-col\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[innerHTML]=\"!isCompacted() ? config().actionsLineConfig.headerDisplayMore : ''\"></div>\n}","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IPaginacao } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\n\n@Component({\n selector: 'lib-grid-pagination',\n imports: [UiButton],\n templateUrl: './grid-pagination.html',\n styleUrls: ['./grid-pagination.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridPagination {\n\n paginacao = input.required<IPaginacao>();\n totalPaginas = input.required<number>();\n performance = input.required<string>();\n\n pageChange = output<number>();\n\n onPreviousPage(): void {\n const atual = this.paginacao().paginaAtual;\n if (atual > 1) {\n this.pageChange.emit(atual - 1);\n }\n }\n\n onNextPage(): void {\n const atual = this.paginacao().paginaAtual;\n if (atual < this.totalPaginas()) {\n this.pageChange.emit(atual + 1);\n }\n }\n}","@if(paginacao()) {\n<div class=\"table-pagination\">\n\t<div class=\"pagination-info\">\n\t\t<span>Total {{ paginacao().totalItens }} registros</span>\n\t\t@if(performance()){\n\t\t<span class=\"table-performance\">\n\t\t\t{{ performance() }}.\n\t\t</span>\n\t\t}\n\t</div>\n\n\t<div class=\"pagination-controls\">\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onPreviousPage()\" [disabled]=\"paginacao().paginaAtual === 1\"\n\t\t\ticone=\"bi bi-chevron-left\">\n\t\t\tAnterior\n\t\t</ui-button>\n\n\t\t<span class=\"pagination-current\">{{ paginacao().paginaAtual }} de {{ totalPaginas() }}</span>\n\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onNextPage()\"\n\t\t\t[disabled]=\"paginacao().paginaAtual >= totalPaginas()\" icone=\"bi bi-chevron-right\" [iconeAntes]=\"false\"\n\t\t\t[iconeDepois]=\"true\">\n\t\t\tPróximo\n\t\t</ui-button>\n\t</div>\n</div>\n}","import { Component, computed, input, output } from '@angular/core';\nimport { IColuna, IGridConfig, IGridConfigActions } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { UiMenu } from '../../elements/ui-menu/ui-menu';\nimport { UiProcurar } from '../../elements/ui-procurar/ui-procurar';\n\n@Component({\n selector: 'lib-grid-filter-bar',\n imports: [UiButton, UiMenu, UiProcurar],\n templateUrl: './grid-filter-bar.html',\n styleUrls: ['../mk-grid.shared.css', './grid-filter-bar.css'],\n})\nexport class GridFilterBar {\n\n config = input.required<IGridConfig<any>>();\n colunasDefinidas = input.required<IColuna<any>[]>();\n colAgrupadoAtual = input.required<IColuna<any> | null>();\n isAgrupado = input.required<boolean>();\n filterCollapsed = input<boolean>(false);\n\n searchInput = output<string>();\n actionTriggered = output<IGridConfigActions>();\n filterToggle = output<void>();\n groupByColumn = output<IColuna<any>>();\n clearGroups = output<void>();\n collapseGroups = output<void>();\n expandGroups = output<void>();\n\n outsideMenuActionsTop = computed(() => {\n return this.config().actionsTop.filter(a => a.inmenu == false && a.showAction);\n });\n\n menuActionsTop = computed(() => {\n return this.config().actionsTop.filter(a => a.inmenu != false && a.showAction);\n });\n\n protected Math = Math;\n\n onInputSearch(text: string): void {\n this.searchInput.emit(text);\n }\n\n onClickOpenCloseFilterZone(): void {\n this.filterToggle.emit();\n }\n\n onClickAction(action?: IGridConfigActions): void {\n if (action) {\n this.actionTriggered.emit(action);\n }\n }\n\n onAgruparPor(coluna: IColuna<any>): void {\n this.groupByColumn.emit(coluna);\n }\n\n onClearGroups(): void {\n this.clearGroups.emit();\n }\n\n onRecolherGroups(): void {\n this.collapseGroups.emit();\n }\n\n onExpandirGroups(): void {\n this.expandGroups.emit();\n }\n}\n\n","@if(config().showControlBar) {\n<div class=\"table-topo-container table-styles\">\n\n\t@if(config().showActionsTop) {\n\t<div class=\"table-actions-outside\">\n\t\t@for (action of outsideMenuActionsTop(); track $index;) {\n\t\t<ui-button tipo=\"fill\" tema=\"primary\" [title]=\"action.display\" (click)=\"onClickAction(action)\"\n\t\t\t[icone]=\"action.icon\">\n\t\t\t{{ action?.display ?? '' }}\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t}\n\n\t<div class=\"table-top-right-container table-conjunto-actions\">\n\t\t@if(config().showSearch) {\n\t\t<div class=\"table-conjunto-actions-item table-pesquisar\">\n\t\t\t<ui-procurar (inputed)=\"onInputSearch($event)\" [autoColapse]=\"true\"></ui-procurar>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showFilterBar) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onClickOpenCloseFilterZone()\" icone=\"bi bi-funnel\"\n\t\t\t\t[style.--ui-border-radius]=\"'0px'\">\n\t\t\t\t<span class=\"table-collapse-ico\" [class.ativo]=\"!filterCollapsed()\"><i class=\"bi bi-caret-down\"></i></span>\n\t\t\t</ui-button>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showGridMenu != false) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t<ui-button slot=\"botao\" tipo=\"nofill\" tema=\"primary\" class=\"filtro-menu\"\n\t\t\t\t\t[title]=\"config().actionsTopConfig.menuDisplay\" [style.--ui-border-radius]=\"'0px'\"\n\t\t\t\t\t[icone]=\"config().actionsTopConfig.showMenuIcon ? config().actionsTopConfig.menuIcon : undefined\">\n\t\t\t\t\t{{ config().actionsTopConfig.menuDisplay }}\n\t\t\t\t</ui-button>\n\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\tOpções da Listagem\n\t\t\t\t</div>\n\n\t\t\t\t@for (action of menuActionsTop(); track $index;) {\n\t\t\t\t@if(action.actions != null) {\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" [title]=\"action.display\"\n\t\t\t\t\t\t[style.--ui-border-radius]=\"'0px'\" [icone]=\"action.icon\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</div>\n\t\t\t\t\t@for(subAction of action.actions; track $index) {\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(subAction)\"\n\t\t\t\t\t\t[icone]=\"subAction?.showIcon ? (subAction?.icon ?? 'bi bi-dot') : undefined\">\n\t\t\t\t\t\t{{ subAction?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t}\n\t\t\t\t</ui-menu>\n\t\t\t\t} @else {\n\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(action)\"\n\t\t\t\t\t[icone]=\"action?.showIcon ? (action?.icon ?? 'bi bi-dot') : undefined\">\n\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t</ui-button>\n\t\t\t\t}\n\t\t\t\t}@empty {\n\t\t\t\t<div class=\"p-2 text-center text-muted\">\n\t\t\t\t\tNenhuma ação disponível.\n\t\t\t\t</div>\n\t\t\t\t}\n\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" icone=\"fa fa-object-group\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\">\n\t\t\t\t\t\t\tAgrupar Por\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t<div class=\"menu-sub-title\">\n\t\t\t\t\t\t\tAgrupar por\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t@for (coluna of colunasDefinidas(); track $index) {\n\t\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onAgruparPor(coluna)\"\n\t\t\t\t\t\t\t[icone]=\"isAgrupado() && colAgrupadoAtual()?.prop === coluna.prop ? 'bi bi-check2-square' : 'bi bi-square'\">\n\t\t\t\t\t\t\t{{ coluna.titulo }}\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</ui-menu>\n\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClearGroups()\" icone=\"fa fa-object-ungroup\"\n\t\t\t\t\t\t[disabled]=\"!isAgrupado()\">\n\t\t\t\t\t\tDesagrupar\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onRecolherGroups()\" icone=\"bi bi-arrows-collapse\">\n\t\t\t\t\t\tRecolher Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onExpandirGroups()\" icone=\"bi bi-arrows-expand\">\n\t\t\t\t\t\tExpandir Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t</ui-menu>\n\t\t\t</ui-menu>\n\t\t</div>\n\t\t}\n\t</div>\n\n</div>\n}","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-grid-empty-list',\n imports: [],\n templateUrl: './grid-empty-list.html',\n styleUrl: './grid-empty-list.css',\n})\nexport class GridEmptyList {}\n","<div class=\"microPos5 p-2\">\n\t<div class=\"flex gap-2 f-s-16 text-center nenhumRegistro\">\n\t\t<i class=\"bi bi-database-fill-check\"></i>\n\t\tNenhum registro no filtro aplicado.\n\t</div>\n</div>","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, signal, viewChild } from '@angular/core';\nimport { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { GridRowRenderer } from './grid-row-renderer/grid-row-renderer';\nimport { GridHeaderRow } from './grid-header-row/grid-header-row';\nimport { GridPagination } from './grid-pagination/grid-pagination';\nimport { GridFilterBar } from './grid-filter-bar/grid-filter-bar';\nimport { GridEmptyList } from './grid-empty-list/grid-empty-list';\nimport { IActionClickEvent, IColuna, IDadosDaLinha, IGridConfig, IGridConfigActions, IGridEventAPI, IOrdenacao, IPaginacao } from './mk-grid.types';\nimport { UiButton } from '../elements/ui-button/ui-button';\nimport { IOptionValue, UiSelect } from '../elements/ui-select/ui-select';\nimport { UiCheckBox } from '../elements/ui-check-box/ui-check-box';\nimport { LibUtil } from '../util/util';\nimport { IKV } from '../interfaces/interfaces';\nimport { GridCellHandler } from \"./grid-cell-handler/grid-cell-handler\";\nimport { GridCellActions } from \"./grid-cell-actions/grid-cell-actions\";\n\nconst PROP_CONTROLE_ATIVO = 'is_ativo';\n\ninterface IColunaComLargura extends IColuna<any> {\n widthNum: number;\n ordem: number;\n}\n\n\n@Component({\n selector: 'lib-mk-grid',\n imports: [\n GridEmptyList,\n UiButton,\n UiSelect,\n UiCheckBox,\n DragDropModule,\n GridFilterBar,\n GridPagination,\n GridHeaderRow,\n GridRowRenderer,\n GridCellHandler,\n GridCellActions\n ],\n templateUrl: './mk-grid.html',\n styleUrls: ['./mk-grid.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MkGrid {\n\n lista = input.required<any[] | undefined>();\n config = input.required<IGridConfig<any>>();\n filtro = input<any | undefined>();\n\n colunasDefinidas = signal<IColunaComLargura[]>([]);\n colunasFiltradas = signal<IColunaComLargura[]>([]);\n colunasOrdenadas = signal<IColunaComLargura[]>([]);\n colunasExibir = signal<IColunaComLargura[]>([]);\n gridTemplateColumns = signal('auto');\n inputSearchText = signal<string>('');\n selectedPrimaryKeys = signal<string[]>([]);\n gruposColapsed = signal<string[]>([]);\n isAgrupado = signal(false);\n isAgrupadoLimpo = signal(false);\n filterHeight = signal(1000);\n gruposEncontrados = {\n itens: new Set<string>()\n };\n numOrdemPrimeiroExibido = signal<number>(1);\n numOrdemUltimoExibido = signal<number>(1);\n pxVerticalLine = signal('');\n pxSelector = signal('');\n pxColunas = signal('');\n pxActions = signal('');\n totalColsVisivel = signal(0);\n colAgrupadoAtual = signal<IColuna<any> | null>(null);\n colMovingX = 0;\n\n minLineHeight = model('20px');\n isCompacted = model(false);\n hasGrid = model(false);\n hasVerticalLine = model(false);\n hasSeletor = model(false);\n todosSelecionados = signal(false);\n isSelectingAll = signal(false);\n\n devMode = false;\n\n maxActionsInLine = 0;\n\n eHost = inject(ElementRef);\n gridSize = viewChild('gridSize', { read: ElementRef });\n gridfiltro = viewChild('gridfiltro', { read: ElementRef });\n\n protected Math = Math;\n protected filtroCollapsed = signal(true);\n protected gridId: string = LibUtil.uuid();\n\n protected ordenacoesSignal = signal<IOrdenacao[]>([]);\n protected paginacaoSignal = signal<IPaginacao>({\n paginaAtual: 1,\n totalItens: 0,\n totalagrupado: 0,\n });\n\n performance = computed(() => {\n return this.config().timeRequest\n ? `${this.config().timeRequest}ms`\n : '';\n });\n\n itensPorPagina = computed(() => this.config().itensPorPagina?.() ?? 10);\n\n constructor() {\n effect(() => {\n this.iniciarSelectedRows(this.lista());\n });\n effect(() => {\n const totalItens = this.listaOrdenada().length;\n const totalagrupado = this.listaAgrupada().length;\n this.paginacaoSignal.update(pag => ({ ...pag, totalItens, totalagrupado }));\n });\n effect(() => {\n const agrupada = this.listaAgrupada();\n const isAgrupado = this.isAgrupado();\n if (this.gruposEncontrados.itens.size > 1) {\n this.isAgrupado.set(true);\n } else {\n this.isAgrupado.set(false);\n }\n });\n effect(() => {\n const _ = this.filtro();\n this.irParaPagina(1);\n });\n effect(() => {\n const el = this.filterContainer()?.nativeElement as HTMLElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n if (entry.target === el) {\n this.filterHeight.set(entry.contentRect.height);\n }\n }\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n });\n effect(() => {\n let listaExibindo = this.listaExibir();\n\n let numeroPrimeiro = listaExibindo?.reduce((min, item) => Math.min(min, item.ordem ?? Infinity), Infinity);\n let numeroUltimo = listaExibindo?.reduce((max, item) => Math.max(max, item.ordem ?? -Infinity), -Infinity);\n if (numeroPrimeiro == Infinity) numeroPrimeiro = 0;\n if (numeroUltimo == -Infinity) numeroUltimo = 0;\n this.numOrdemPrimeiroExibido.set(numeroPrimeiro);\n this.numOrdemUltimoExibido.set(numeroUltimo);\n });\n }\n\n ngOnInit() {\n this.filtroCollapsed.set(this.config().filterBarStartCollapsed ?? true);\n this.hasVerticalLine.set(this.config().hasVerticalLine ?? false);\n this.hasSeletor.set(this.config().hasSeletor ?? false);\n this.hasGrid.set(this.config().hasGrid ?? false);\n this.isCompacted.set(this.config().isCompacted ?? false);\n this.minLineHeight.set(this.config().minLineHeight ?? '20px');\n\n this.definirColunas();\n this.atualizarColunas();\n }\n\n ngOnDestroy(): void { }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.calcularAltura();\n this.calcularColunasExibir();\n this.observerResize();\n }, 0);\n }\n\n iniciarSelectedRows(lista: any[] | undefined) {\n let listaSelecionados = (this.config().startSelected as string[] | undefined);\n if (!listaSelecionados || !lista) { this.clearSelections(); return; }\n\n let idSelecionados = lista\n .map(item => LibUtil.getV(this.config().primarykey, item)?.toString() ?? '')\n .filter(id => id != '')\n .filter(id => listaSelecionados.includes(id));\n\n if (idSelecionados.length === 0) {\n this.todosSelecionados.set(false);\n } else if (lista.length > 0 && idSelecionados.length === lista.length) {\n this.todosSelecionados.set(true);\n } else {\n this.todosSelecionados.set(false);\n }\n\n this.selectedPrimaryKeys.set(idSelecionados);\n }\n\n definirColunas() {\n let colunasInicialConfig = this.config().colunas.map((col, index) => {\n return {\n ...col,\n widthNum: col.width ? parseInt(col.width.replaceAll('px', '').replaceAll('auto', '50')) : 50,\n tituloReduzido: col.titulo,\n ordem: index,\n };\n });\n\n let primeiraPropAgrupadaInicial = colunasInicialConfig.find(c => c.iniciaAgrupado)?.prop;\n let colunasAgrupada = colunasInicialConfig.find(c => c.prop === primeiraPropAgrupadaInicial);\n if (colunasAgrupada) {\n this.colAgrupadoAtual.set(colunasAgrupada);\n } else {\n this.colAgrupadoAtual.set(null);\n }\n\n this.colunasDefinidas.set(colunasInicialConfig);\n }\n\n filtrarColunas() {\n let agrupada = this.colAgrupadoAtual();\n let colunasFiltradas = this.colunasDefinidas().filter(c => {\n return (c.visivel !== false) && (agrupada?.prop !== c.prop);\n });\n this.colunasFiltradas.set(colunasFiltradas);\n }\n\n ordenarColunas() {\n this.colunasOrdenadas.set(this.colunasFiltradas().sort((a, b) => a.ordem - b.ordem));\n }\n\n colunasKVDefinidas = computed<IKV[]>(() => {\n return this.colunasDefinidas().map(c => ({ k: LibUtil.classof(c.prop) == 'string' ? c.prop as string : c.prop[0], v: c.titulo }));\n });\n\n outsideMenuActionsTop = computed(() => {\n return this.config().actionsTop.filter(a => a.inmenu == false && a.showAction);\n });\n\n menuActionsTop = computed(() => {\n return this.config().actionsTop.filter(a => a.inmenu != false && a.showAction);\n });\n\n filterContainer = viewChild('filterContainer', { read: ElementRef });\n\n protected listaOrdenada = computed(() => {\n const listaDefinida = this.lista() ?? [];\n if (LibUtil.classof(listaDefinida) !== 'array') {\n this.config().hasError = true;\n return [];\n }\n let words = this.inputSearchText().trim().split(\" \").filter(t => t != \"\");\n let agrupadaAtual = this.colAgrupadoAtual();\n let propriedadeAgrupada = agrupadaAtual?.prop;\n\n let listaFiltrada = listaDefinida.map((o, i) => {\n let id = LibUtil.getV(this.config().primarykey, o)?.toString() ?? String(i);\n\n let dadosDaLinha: IDadosDaLinha = {\n id,\n dados: o,\n inativo: this.config().InativeRule(o),\n isSelectionDisabled: this.config().SelectionDisabledRule ? this.config().SelectionDisabledRule!(o) : false,\n groupName: propriedadeAgrupada ? LibUtil.getV(propriedadeAgrupada, o) : '',\n selecionado: this.selectedPrimaryKeys().includes(id),\n hue: this.config().backgroundHue ? this.config().backgroundHue?.(o) : undefined,\n actions: this.config().actionsLine.map(a => {\n if (a.showAction == true) return { ...a, showAction: a.showLineAction ? a.showLineAction(o) : true };\n else return { ...a, showAction: false };\n }),\n ordem: i + 1,\n }\n dadosDaLinha.hasActionMenu = dadosDaLinha.actions?.some(a => a.showAction == true && a.inmenu == true) ?? false;\n this.maxActionsInLine = Math.max(this.maxActionsInLine, dadosDaLinha.actions?.filter(a => a.showAction == true && a.inmenu == false).length ?? 0);\n return (dadosDaLinha as IDadosDaLinha);\n }).filter(dadosLinha => {\n if (words.length === 0) return true;\n\n for (const w of words) {\n let encontrado = false;\n for (const coluna of this.config().colunas) {\n const valorColuna = LibUtil.getV(coluna.prop, dadosLinha.dados);\n if (valorColuna != null && LibUtil.contem(valorColuna, w)) {\n encontrado = true;\n }\n }\n if (!encontrado) return false;\n }\n\n return true;\n });\n\n const ordenacoes = this.ordenacoesSignal();\n if (!ordenacoes.length) return listaFiltrada;\n\n let ordenado = [...listaFiltrada].sort((a, b) => {\n for (const ordenacao of ordenacoes) {\n if (Array.isArray(ordenacao.coluna)) {\n for (const prop of ordenacao.coluna) {\n const resultado = this.compararValores(\n LibUtil.getV(prop, a.dados),\n LibUtil.getV(prop, b.dados),\n ordenacao.direcao\n );\n if (resultado !== 0) return resultado;\n }\n } else {\n const resultado = this.compararValores(\n LibUtil.getV(ordenacao.coluna, a.dados),\n LibUtil.getV(ordenacao.coluna, b.dados),\n ordenacao.direcao\n );\n if (resultado !== 0) return resultado;\n }\n }\n return 0;\n });\n return ordenado.map((item, index) => ({ ...item, ordem: index + 1 }));\n });\n\n protected listaAgrupada = computed(() => {\n const listaOrdenada = this.listaOrdenada();\n\n if (this.isAgrupado() == false) {\n if (this.isAgrupadoLimpo() == false) {\n listaOrdenada.forEach(item => {\n this.gruposEncontrados.itens.add(item.groupName);\n });\n }\n return listaOrdenada;\n }\n\n let listaComGrupos: IDadosDaLinha[] = [];\n let c = 1;\n let colAgrupadaAtual = this.colAgrupadoAtual()?.prop ?? '';\n for (const grupo of Array.from(this.gruposEncontrados.itens)) {\n let firstFound = listaOrdenada.filter(i => i.groupName === grupo)[0];\n let inativo = listaOrdenada.filter(i => i.groupName === grupo).some(i => this.getObjetoInativo(colAgrupadaAtual, i.dados));\n listaComGrupos.push({\n dados: firstFound?.dados,\n inativo: inativo,\n groupName: grupo,\n selecionado: false,\n isGroup: true,\n isFullLine: {\n visible: true,\n colapsed: this.gruposColapsed().includes(grupo),\n colapsedCount: listaOrdenada.filter(i => i.groupName === grupo).length,\n showIco: true,\n },\n isColapsed: false,\n } as IDadosDaLinha);\n\n listaOrdenada.map(item => {\n if (item.groupName === grupo) {\n listaComGrupos.push({\n ...item,\n ordem: c++,\n isColapsed: this.gruposColapsed().includes(grupo)\n });\n }\n });\n };\n\n return listaComGrupos.filter(i => !i.isColapsed);\n });\n\n protected listaExibir = computed(() => {\n const listaOrdenada = this.listaAgrupada();\n\n const paginacao = this.paginacaoSignal();\n const inicio = (paginacao.paginaAtual - 1) * this.itensPorPagina();\n const fim = inicio + this.itensPorPagina();\n const listaExibindo = listaOrdenada.slice(inicio, fim);\n return listaExibindo;\n });\n\n numeroPrimeiroItemExibido = computed(() => {\n return (this.paginacaoSignal().paginaAtual - 1) * this.itensPorPagina() + 1;\n });\n\n numeroUltimoItemExibido = computed(() => {\n const paginacao = this.paginacaoSignal();\n return Math.min(paginacao.paginaAtual * this.itensPorPagina(), paginacao.totalItens);\n });\n\n onDropColuna(ev: CdkDragDrop<IColunaComLargura[]>) {\n let colunaOrigem = ev.item.data;\n\n let colTarget = (ev.event.target as any).closest('.table-header-text');\n let cellTarget = (ev.event.target as any).closest('.table-item');\n let novaOrdem: number | null = null;\n if (colTarget) {\n novaOrdem = colTarget.getAttribute('ordem')\n }\n if (cellTarget) {\n novaOrdem = cellTarget.getAttribute('ordem')\n }\n\n if (novaOrdem && colunaOrigem) {\n this.colunasOrdenadas.update(cols => {\n const semColuna = cols.filter(c => c.ordem !== colunaOrigem.ordem);\n semColuna.splice(novaOrdem, 0, colunaOrigem);\n return semColuna.map((col, index) => ({ ...col, ordem: index }));\n })\n this.calcularColunasExibir();\n }\n }\n\n getObjetoInativo(nomeColuna: string | string[], linha: any): boolean {\n if (LibUtil.classof(nomeColuna) == \"string\" && (nomeColuna as string).includes(\".\")) {\n const props = (nomeColuna as string).split(\".\");\n const lastObj = LibUtil.getV(props.slice(0, -1).join(\".\"), linha);\n return lastObj?.[PROP_CONTROLE_ATIVO] == false;\n }\n return false;\n }\n\n observerResize() {\n const el = this.eHost?.nativeElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n this.calcularColunasExibir();\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n }\n\n calcularColunasExibir() {\n let colunasAExibir = this.colunasOrdenadas().map(c => ({ ...c }));\n\n let compacted = this.isCompacted();\n let wVerticalLine = this.hasVerticalLine() ? (compacted ? 30 : 40) : 0;\n let wSelector = this.hasSeletor() ? (compacted ? 30 : 40) : 0;\n let wActions = this.config().showActionsLine ? (compacted ? 42 : 130) : 0;\n let wDisponivel = this.gridSize()?.nativeElement?.offsetWidth - (wVerticalLine + wSelector + wActions);\n\n let totalFixo = (wVerticalLine > 0 ? 1 : 0) + (wSelector > 0 ? 1 : 0) + (wActions > 0 ? 1 : 0);\n let wFixo = wVerticalLine + wSelector + wActions;\n\n while (colunasAExibir.length > 0) {\n let wColunas = colunasAExibir.reduce((a, b) => a + b.widthNum, 0);\n let somado = wFixo + wColunas;\n if (somado <= wDisponivel) break;\n colunasAExibir.pop();\n }\n this.colunasExibir.set(colunasAExibir);\n this.totalColsVisivel.set(colunasAExibir.length + totalFixo);\n\n let wColsCentrais = '';\n for (let col of colunasAExibir) {\n col.width = col.width ?? 'auto';\n wColsCentrais += `${col.width} `;\n }\n\n this.pxVerticalLine.set(wVerticalLine > 0 ? (`${wVerticalLine}px `) : '');\n this.pxSelector.set(wSelector > 0 ? (`${wSelector}px `) : '');\n this.pxActions.set(wActions > 0 ? (`${wActions}px `) : '');\n this.pxColunas.set(wColsCentrais);\n }\n\n calcularAltura() {\n const elementoConteiner = this.filterContainer();\n if (!elementoConteiner) return;\n\n const firstChild = elementoConteiner.nativeElement.firstElementChild;\n if (!firstChild) return;\n\n const height = firstChild.scrollHeight;\n this.filterHeight.set(height);\n }\n\n getState(): any {\n return {\n colunaAgrupadaAtual: this.colAgrupadoAtual(),\n colunas: this.colunasDefinidas() ?? [],\n colunasExibir: this.colunasExibir() ?? [],\n config: this.config(),\n filtros: this.filtro() ?? {},\n gruposColapsed: this.gruposColapsed(),\n gruposEncontrados: this.gruposEncontrados,\n isAgrupado: this.isAgrupado(),\n isAgrupadoLimpo: this.isAgrupadoLimpo(),\n listaExibindo: this.listaExibir(),\n listaOrdenada: this.listaOrdenada(),\n ordenacoes: this.ordenacoesSignal(),\n paginacao: {\n paginas: this.totalPaginas(),\n paginaAtual: this.paginacaoSignal().paginaAtual,\n itensPorPagina: this.itensPorPagina(),\n },\n selecionados: this.selectedPrimaryKeys(),\n tempoRequisicao: this.config().timeRequest,\n totais: {\n totalDefinida: this.lista()?.length ?? 0,\n totalOrdenada: this.listaOrdenada().length,\n totalExibindo: this.listaExibir().length,\n },\n ultimaAcao: this.config().lastGridEventAPI,\n };\n }\n\n protected totalPaginas = computed(() => {\n const paginacao = this.paginacaoSignal();\n return Math.ceil(paginacao.totalagrupado / this.itensPorPagina());\n });\n\n protected alternarOrdenacao(coluna: string | string[]): void {\n const ordenacoes = this.ordenacoesSignal();\n const index = ordenacoes.findIndex(o => o.coluna === coluna);\n\n if (index >= 0) {\n const novaDirecao = ordenacoes[index].direcao === 'asc' ? 'desc' : 'asc';\n if (novaDirecao == \"asc\") {\n const novasOrdenacoes = [...ordenacoes.filter(o => o.coluna != coluna)];\n this.ordenacoesSignal.set(novasOrdenacoes);\n } else {\n const novasOrdenacoes = [...ordenacoes];\n novasOrdenacoes[index] = { coluna, direcao: novaDirecao };\n this.ordenacoesSignal.set(novasOrdenacoes);\n }\n } else {\n this.ordenacoesSignal.set([...ordenacoes, { coluna, direcao: 'asc' }]);\n }\n }\n\n protected obterDirecaoOrdenacao(coluna: string | string[]): 'asc' | 'desc' | null {\n const ordenacao = this.ordenacoesSignal().find(o => o.coluna === coluna);\n return ordenacao ? ordenacao.direcao : null;\n }\n\n protected irParaPagina(pagina: number): void {\n if (pagina >= 1 && pagina <= this.totalPaginas()) {\n this.paginacaoSignal.update(pag => ({ ...pag, paginaAtual: pagina }));\n }\n }\n\n protected proximaPagina(): void {\n const atual = this.paginacaoSignal().paginaAtual;\n this.irParaPagina(atual + 1);\n }\n\n protected paginaAnterior(): void {\n const atual = this.paginacaoSignal().paginaAtual;\n this.irParaPagina(atual - 1);\n }\n\n public limparOrdenacao(): void {\n this.ordenacoesSignal.set([]);\n }\n\n async onOrdenarPor(coluna: IColunaComLargura | null) {\n if (!coluna) return;\n if (coluna.ordem == null) return;\n this.alternarOrdenacao(coluna.prop);\n }\n\n getColDisplay(nomeCampo: string | string[]): string {\n return this.colunasDefinidas()?.find(o => o.prop == nomeCampo)?.titulo ?? '???';\n }\n\n protected getOrdenacaoTexto(): string {\n const ordenacoes = this.ordenacoesSignal();\n if (!ordenacoes.length) return '';\n return ordenacoes.map(o => `${this.getColDisplay(o.coluna)} (${o.direcao})`).join(', ');\n }\n\n protected onClickClearInfo() {\n this.limparOrdenacao();\n }\n\n protected atualizarColunas() {\n this.filtrarColunas();\n this.ordenarColunas();\n this.calcularColunasExibir();\n }\n\n protected onClickCellAction(evento: IActionClickEvent) {\n if (evento.action?.action) {\n evento.action.action(this._getGridEvent(evento.action, evento.dadosDaLinha?.dados));\n }\n }\n\n protected onClickAction(action?: IGridConfigActions, linha?: any) {\n if (action?.action) {\n return action.action(this._getGridEvent(action, linha));\n }\n return;\n }\n\n private _getGridEvent(action: IGridConfigActions, linha?: any): IGridEventAPI<any> {\n let pk = this.config().primarykey;\n let id = undefined;\n if (pk != null && linha != null) {\n id = linha[pk];\n }\n let evento: IGridEventAPI<any> = { id, linha, action }\n this.config().lastGridEventAPI = evento;\n return evento;\n }\n\n private compararValores(a: any, b: any, direcao: 'asc' | 'desc'): number {\n let resultado = 0;\n\n if (a === null || a === undefined) a = '';\n if (b === null || b === undefined) b = '';\n\n if (typeof a === 'number' && typeof b === 'number') {\n resultado = a - b;\n } else if (a instanceof Date && b instanceof Date) {\n resultado = a.getTime() - b.getTime();\n } else {\n resultado = String(a).localeCompare(String(b));\n }\n\n return direcao === 'asc' ? resultado : -resultado;\n }\n\n protected onClickGridMenu(action?: IGridConfigActions) {\n if (action?.action) {\n return action.action(this._getGridEvent(action));\n }\n }\n\n protected onInputSearch(text: string): void {\n this.inputSearchText.set(text);\n }\n\n protected onClickOpenCloseFilterZone(): void {\n this.filtroCollapsed.update(v => !v);\n }\n\n async onChangeTodosSelecionados(todosSelecionados: boolean) {\n this.isSelectingAll.set(true);\n let listaOrdenada = this.listaOrdenada();\n\n if (!todosSelecionados) {\n for (const linha of listaOrdenada) {\n if (this.selectedPrimaryKeys().includes(linha.id)) {\n await this.desselecionarLinha(linha.id, linha.dados);\n }\n }\n } else {\n for (const linha of listaOrdenada) {\n await this.selecionarLinha(linha.id, linha.dados);\n }\n }\n\n await LibUtil.wait(100);\n this.isSelectingAll.set(false);\n }\n\n async onClickRow(linha: IDadosDaLinha) {\n if (!linha) return;\n if (!linha.dados) return;\n\n if (this.selectedPrimaryKeys().includes(linha.id)) {\n await this.desselecionarLinha(linha.id, linha.dados);\n } else {\n await this.selecionarLinha(linha.id, linha.dados);\n }\n }\n\n clearSelections() {\n this.selectedPrimaryKeys.set([]);\n }\n\n async selecionarLinha(id: string, dados?: any) {\n if (this.selectedPrimaryKeys().includes(id)) return;\n\n if (this.config().selectionMode == 'single') {\n this.selectedPrimaryKeys.set([id])\n } else {\n this.selectedPrimaryKeys.set([...this.selectedPrimaryKeys(), id]);\n }\n await this.config().onSelected?.(dados, this.selectedPrimaryKeys());\n await this.config().onSelectionChanged?.(dados, this.selectedPrimaryKeys());\n }\n\n async desselecionarLinha(id: string, dados?: any) {\n if (!this.selectedPrimaryKeys().includes(id)) return;\n\n if (this.config().selectionMode == 'single') {\n this.selectedPrimaryKeys.set([]);\n } else {\n this.selectedPrimaryKeys.set(this.selectedPrimaryKeys().filter(i => i !== id));\n }\n await this.config().onUnselected?.(dados, this.selectedPrimaryKeys());\n await this.config().onSelectionChanged?.(dados, this.selectedPrimaryKeys());\n }\n\n onClickGroup(dadosDaLinha: IDadosDaLinha) {\n this.gruposColapsed.update(g => {\n if (g.includes(dadosDaLinha.groupName)) {\n return g.filter(grupo => grupo != dadosDaLinha.groupName);\n } else {\n return [...g, dadosDaLinha.groupName];\n }\n });\n }\n\n onRecolherGroups() {\n this.gruposColapsed.set(Array.from(this.gruposEncontrados.itens));\n }\n\n onExpandirGroups() {\n this.gruposColapsed.set([]);\n }\n\n async onAgruparPor(coluna: IColunaComLargura | null) {\n this.colAgrupadoAtual.set(null);\n this.gruposEncontrados.itens.clear();\n this.isAgrupadoLimpo.set(false);\n\n this.colAgrupadoAtual.set(coluna);\n this.atualizarColunas();\n }\n\n async onChangedAgrupamento(event: IOptionValue) {\n let propAgrupamento = event.optionChanged?.k;\n let colAgrupada = this.colunasDefinidas().find(c => c.prop === propAgrupamento) ?? null;\n this.onAgruparPor(colAgrupada)\n }\n\n protected onClearGroups() {\n this.isAgrupadoLimpo.set(true);\n this.gruposEncontrados.itens.clear();\n this.isAgrupado.set(false);\n this.colAgrupadoAtual.set(null);\n this.atualizarColunas();\n }\n\n onChangeLineNumber() {\n this.hasVerticalLine.update(v => !v);\n this.calcularColunasExibir();\n }\n\n onChangeSeletor() {\n this.hasSeletor.update(v => !v);\n this.calcularColunasExibir();\n }\n\n onChangeCompacted() {\n this.isCompacted.update(v => !v);\n }\n\n onChangeHasGrid() {\n this.hasGrid.update(v => !v);\n }\n\n onResizeStart(event: MouseEvent, coluna: IColunaComLargura) {\n this.colMovingX = event.clientX;\n event.preventDefault();\n let eColuna = (event.target as HTMLElement).closest('.table-header') as HTMLElement;\n let computedWidth = parseInt(window.getComputedStyle(eColuna).width.replaceAll('px', ''), 10);\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n const delta = moveEvent.clientX - this.colMovingX;\n let widthNum = Math.max(30, (computedWidth + delta));\n this.colunasOrdenadas.update(cols => {\n return cols.map(c => {\n if (c.ordem === coluna.ordem) {\n return { ...c, widthNum, width: `${widthNum}px` };\n }\n return c;\n });\n });\n };\n\n const onMouseUp = () => {\n this.calcularColunasExibir();\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }\n\n onDoubleClickControls(event: Event, coluna: IColunaComLargura) {\n let getColunaDefinina = this.colunasDefinidas().find(c => c.ordem === coluna.ordem);\n let getWidth = getColunaDefinina?.width ? getColunaDefinina.width : 'auto';\n this.colunasOrdenadas.update(cols => {\n return cols.map(c => {\n if (c.ordem === coluna.ordem) {\n return { ...c, width: getWidth };\n }\n return c;\n });\n });\n this.calcularColunasExibir();\n }\n}\n\n","<lib-grid-filter-bar [config]=\"config()\" [colunasDefinidas]=\"$any(colunasDefinidas())\"\n\t[colAgrupadoAtual]=\"colAgrupadoAtual()\" [isAgrupado]=\"isAgrupado()\" [filterCollapsed]=\"filtroCollapsed()\"\n\t(searchInput)=\"onInputSearch($event)\" (filterToggle)=\"onClickOpenCloseFilterZone()\"\n\t(actionTriggered)=\"onClickAction($event)\" (groupByColumn)=\"onAgruparPor($any($event))\" (clearGroups)=\"onClearGroups()\"\n\t(collapseGroups)=\"onRecolherGroups()\" (expandGroups)=\"onExpandirGroups()\">\n</lib-grid-filter-bar>\n\n@if(config().showFilterBar) {\n<div class=\"table-filter-container table-styles\" [style.--filter-height.px]=\"filterHeight()\">\n\t<div #filterContainer class=\"table-filter-content\" [class.table-filter-hide]=\"filtroCollapsed()\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n}\n\n@if(config().screen() == \"Mobile\"){\n<!-- MOBILE INICIO -->\n\n@for (dadosLinha of listaExibir(); track $index;let i = $index) {\n@if( dadosLinha.isColapsed !== true){\n\n@if(dadosLinha.isFullLine?.visible){\n<!-- MOBILE GRUPO LINHA PRÓPRIA -->\n<div class=\"table-row-mobile table-formated table-group table-styles\" (click)=\"onClickGroup(dadosLinha)\">\n\t<div>{{ dadosLinha.groupName }}</div>\n\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine?.colapsed === true\">\n\t\t{{ dadosLinha.isFullLine?.colapsedCount ?? 0 }} item(s)\n\t\t<div class=\"table-group-items-ico\">\n\t\t\t<i class=\"bi bi-caret-down\"></i>\n\t\t</div>\n\t</div>\n</div>\n} @else {\n\n<div class=\"table-overflow mobile\" [style.--table-min-height]=\"isCompacted() ? '20px' : minLineHeight()\">\n\t<div class=\"table-table-mobile\" [class.selected]=\"dadosLinha.selecionado\">\n\n\t\t<!-- MOBILE DADOS -->\n\t\t@if(config().showActionsLine){\n\t\t<div class=\"table-header-mobile\" [style.gridArea]=\"'auto / auto / auto / span 2'\">\n\t\t\t@if(hasVerticalLine()){\n\t\t\t<!-- MOBILE VERTICAL DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-vertical-line\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t{{ dadosLinha.ordem }}\n\t\t\t</div>\n\t\t\t}\n\t\t\t@if(hasSeletor()){\n\t\t\t<!-- MOBILE SELECTOR DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-item-seletor\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t<ui-check-box [(value)]=\"dadosLinha.selecionado\" [style.--ui-color]=\"'var(--sys-on-primary)'\"\n\t\t\t\t\t[style.--ui-outline]=\"'var(--sys-on-primary)'\" [single]=\"this.config().selectionMode == 'single'\"\n\t\t\t\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\"></ui-check-box>\n\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"table-header-mobile-space\" (click)=\"onClickRow(dadosLinha)\"></div>\n\t\t\t<lib-grid-cell-actions [config]=\"config()\" [dadosDaLinha]=\"dadosLinha\" [mobileHeader]=\"true\"\n\t\t\t\t(action)=\"onClickCellAction($event)\" [compact]=\"isCompacted()\"></lib-grid-cell-actions>\n\t\t</div>\n\t\t}\n\n\t\t<!-- MOBILE LINHA -->\n\t\t@for (localColuna of colunasOrdenadas(); track $index;) {\n\t\t<div class=\"table-header-mobile\" [class.sortable]=\"localColuna.sortable !== false\"\n\t\t\t[class.sorted-asc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'asc'\"\n\t\t\t[class.sorted-desc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'desc'\"\n\t\t\t(click)=\"localColuna.sortable !== false && alternarOrdenacao(localColuna.prop)\" [style]=\"localColuna.styleHeader\">\n\t\t\t<div class=\"table-header-mobile-text\" [title]=\"localColuna.titulo\"\n\t\t\t\t[innerHTML]=\"localColuna.tituloReduzido ?? localColuna.titulo\">\n\t\t\t</div>\n\t\t\t<div class=\"table-header-controls\">\n\t\t\t\t@if (localColuna.sortable !== false) {\n\t\t\t\t<span class=\"table-ico-sort\">\n\t\t\t\t\t@if (obterDirecaoOrdenacao(localColuna.prop) === 'asc') {\n\t\t\t\t\t<i class=\"fa fa-sort-up asc\"></i>\n\t\t\t\t\t} @else if (obterDirecaoOrdenacao(localColuna.prop) === 'desc') {\n\t\t\t\t\t<i class=\"fa fa-sort-down desc\"></i>\n\t\t\t\t\t}\n\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t<lib-grid-cell-handler class=\"table-item-mobile table-formated\" [class.odd]=\"i % 2 !== 0\" [class.even]=\"i % 2 === 0\"\n\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"localColuna\" [lista]=\"lista()!\" [config]=\"config()\"\n\t\t\t[localColunas]=\"colunasOrdenadas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t}\n\t</div>\n</div>\n}\n}\n} @empty {\n<!-- LINHA DE SEM DADOS -->\n<div class=\"table-styles\"><lib-grid-empty-list></lib-grid-empty-list></div>\n}\n<!-- MOBILE FIM -->\n\n\n} @else {\n<!-- DESKTOP INICIO -->\n<div #gridSize class=\"table-overflow\" [class.compacted]=\"isCompacted()\"\n\t[style.--table-min-height]=\"isCompacted() ? '40px' : minLineHeight()\">\n\t<div class=\"table-table\" [class.table-has-vertical-line]=\"hasVerticalLine()\" [class.table-has-seletor]=\"hasSeletor()\"\n\t\tcdkDropList (cdkDropListDropped)=\"onDropColuna($event)\" [cdkDropListData]=\"colunasExibir()\"\n\t\t[style.gridTemplateColumns]=\"`${this.pxVerticalLine()}${this.pxSelector()}` + this.pxColunas() + this.pxActions()\">\n\t\t<!-- DESKTOP HEADER -->\n\t\t<lib-grid-header-row [colunas]=\"colunasExibir()\" [ordenacoes]=\"ordenacoesSignal()\"\n\t\t\t[todosSelecionados]=\"todosSelecionados()\" [config]=\"config()\" [hasSeletor]=\"hasSeletor()\"\n\t\t\t[hasVerticalLine]=\"hasVerticalLine()\" [hasGrid]=\"hasGrid()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[isSelectingAll]=\"isSelectingAll()\" (columnSort)=\"alternarOrdenacao($event)\"\n\t\t\t(selectAll)=\"onChangeTodosSelecionados($event)\"\n\t\t\t(columnResizeStart)=\"onResizeStart($event.event, $any($event.coluna))\"\n\t\t\t(columnResizeDoubleClick)=\"onDoubleClickControls($event.event, $any($event.coluna))\">\n\t\t</lib-grid-header-row>\n\n\t\t<!-- DESKTOP LINHAS DE DADOS -->\n\t\t@for (dadosLinha of listaExibir(); track $index; let i = $index) {@if( dadosLinha.isColapsed !== true){\n\n\t\t@if(dadosLinha.isFullLine?.visible){\n\n\t\t<!-- DESKTOP FULL LINE (COLSPAN HORIZONTAL) -->\n\t\t@if(hasVerticalLine()){\n\t\t<!-- DESKTOP HEADER VERTICAL FULL LINE -->\n\t\t<div class=\"table-header table-formated table-vertical-line\">\n\t\t\t{{ dadosLinha.ordem }}\n\t\t</div>\n\t\t}\n\t\t<!-- DESKTOP GRUPO: ROW -->\n\t\t@if(dadosLinha.isGroup){\n\n\t\t<div class=\"table-row table-formated table-group table-border-bottom-card\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<div class=\"table-group-name\" [class.table-inativo]=\"dadosLinha.inativo\">\n\t\t\t\t<lib-grid-cell-handler class=\"table-item table-dados {{ colAgrupadoAtual()?.classeCell }}\"\n\t\t\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"colAgrupadoAtual()!\" [lista]=\"lista()!\" [config]=\"config()\"\n\t\t\t\t\t[localColunas]=\"colunasDefinidas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t\t</div>\n\t\t\t<ui-button tipo=\"nofill\" (click)=\"onClickGroup(dadosLinha)\">\n\t\t\t\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine?.colapsed === true\">\n\t\t\t\t\t{{ dadosLinha.isFullLine?.colapsedCount ?? 0 }} item(s)\n\t\t\t\t\t<div class=\"table-group-items-ico\">\n\t\t\t\t\t\t<i [class]=\"dadosLinha.isFullLine?.colapsed ? 'bi bi-caret-down-fill' : 'bi bi-caret-down'\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</ui-button>\n\t\t</div>\n\n\t\t} @else {\n\t\t<div class=\"table-row table-formated table-others\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\tNada a exibir nesta linha\n\t\t</div>\n\t\t}\n\n\t\t} @else {\n\n\t\t<!-- LINHA NORMAL via GridRowRenderer -->\n\t\t<lib-grid-row-renderer [dadosLinha]=\"dadosLinha\" [config]=\"config()\" [colunas]=\"colunasExibir()\"\n\t\t\t[colunasOrdenadas]=\"colunasOrdenadas()\" [lista]=\"lista()!\" [inputSearchText]=\"inputSearchText()\"\n\t\t\t[hasSeletor]=\"hasSeletor()\" [hasVerticalLine]=\"hasVerticalLine()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[hasGrid]=\"hasGrid()\" [rowIndex]=\"i\" (actionTriggered)=\"onClickCellAction($event)\"\n\t\t\t(rowClicked)=\"onClickRow($event)\" [lastRow]=\"$last\">\n\t\t</lib-grid-row-renderer>\n\n\t\t}}\n\n\t\t<!-- POSSIBILIDADES SEM DADOS -->\n\t\t} @empty {\n\n\t\t<!-- ERRO -->\n\t\t@if(config().hasError) {\n\t\t<div class=\"table-row table-formated table-errors\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridError]\"></ng-content>\n\t\t</div>\n\n\t\t<!-- LOADING -->\n\t\t} @else if(!config().isLoaded) {\n\t\t<div class=\"table-row table-formated table-loader\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridLoading]\"></ng-content>\n\t\t</div>\n\n\t\t} @else {\n\n\t\t<div class=\"table-row table-empty\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<lib-grid-empty-list></lib-grid-empty-list>\n\t\t</div>\n\t\t}\n\n\t\t}\n\n\t\t<!-- FIM DA LINHA NORMAL -->\n\n\n\t</div>\n</div>\n<!-- DESKTOP FIM -->\n}\n\n\n@if(config().showPagination){\n<lib-grid-pagination [paginacao]=\"paginacaoSignal()\" [totalPaginas]=\"totalPaginas()\" [performance]=\"performance()\"\n\t(pageChange)=\"irParaPagina($event)\">\n</lib-grid-pagination>\n}\n\n\n\n\n@if(config().showInfoBar){\n<!-- Informações de Ordenação -->\n@if (ordenacoesSignal().length > 0) {\n<div class=\"table-info-row table-styles\">\n\t@if (ordenacoesSignal().length > 0) {\n\t<div>Ordenado por: {{ getOrdenacaoTexto() }}</div>\n\t}\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClickClearInfo()\" icone=\"bi bi-x-lg\"></ui-button>\n</div>\n}\n<!-- Informações de Agrupamento -->\n@if (this.isAgrupado()) {\n<div class=\"table-info-row table-styles\">\n\t<i class=\"fa fa-object-group\"></i>\n\t<div class=\"flex flex-wrap gap-1 f-t-b\">\n\t\tAgrupado por {{ colAgrupadoAtual()?.titulo }} (há {{ gruposEncontrados.itens.size }} grupos)\n\t\t<div class=\"campoSemForm\">\n\t\t\t<ui-select [value]=\"colAgrupadoAtual()?.prop\" [options]=\"this.colunasKVDefinidas()\"\n\t\t\t\t(changed)=\"onChangedAgrupamento($event)\"></ui-select>\n\t\t</div>\n\n\t</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onRecolherGroups()\" icone=\"bi bi-arrows-collapse\">\n\t\tRecolher Todos\n\t</ui-button>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onExpandirGroups()\" icone=\"bi bi-arrows-expand\">\n\t\tExpandir Todos\n\t</ui-button>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClearGroups()\" icone=\"fa fa-object-ungroup\">\n\t\tDesagrupar\n\t</ui-button>\n</div>\n}\n}\n\n\n@if(devMode){\n<!-- MODO DESENVOLVIMENTO -->\n<div class=\"table-info-row table-styles\">\n\t<i class=\"fa fa-microscope\"></i>\n\t<div>Funções extras</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasGrid()\" (click)=\"onChangeHasGrid()\" icone='bi bi-grid-3x3'\n\t\ttitle=\"Grid\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"isCompacted()\" (click)=\"onChangeCompacted()\"\n\t\ticone='fa fa-arrows-to-circle' title=\"Compactar\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasVerticalLine()\" (click)=\"onChangeLineNumber()\"\n\t\ticone='bi bi-layout-sidebar' title=\"Linha Vertical\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasSeletor()\" (click)=\"onChangeSeletor()\" icone='fa fa-check-double'\n\t\ttitle=\"Seletor\"></ui-button>\n</div>\n}","import { Component, effect, Inject, Optional, signal, WritableSignal } from '@angular/core';\nimport { GRID_PARAMS_TOKEN, IGridParam, IMkCellService } from '../mk-grid.types';\n\n@Component({\n selector: 'lib-grid-cell',\n template: '',\n})\nexport class GridCell {\n\n protected params: WritableSignal<IGridParam<any> | undefined>;\n _masterCellService?: IMkCellService;\n\n constructor(\n @Optional() @Inject(GRID_PARAMS_TOKEN) inputToken: IGridParam<any> | null,\n @Optional() @Inject('GRID_PARAMS') legacyInput: IGridParam<any> | null\n ) {\n const input = inputToken ?? legacyInput ?? undefined;\n this.params = signal<IGridParam<any> | undefined>(input);\n this._masterCellService = input?.servicoParams;\n if (this._masterCellService) {\n effect(() => { this.params.set(this._masterCellService?.gridParams() ?? input) });\n }\n }\n}\n","// Exportar primeiro os tipos\nexport type { IKV, IKV_ext, IFileMetadata, ITipoBotao, ITiposTema, IDropZoneEvent, IDropType, IDropOutput, IUiProgressMode } from './interfaces/interfaces';\n\n// Tipos mais específicos, enuns, interfaces e funções uteis.\nexport * from './util/util';\nexport * from './fields/Formulario/Formulario';\n\n// Exportar as base\nexport * from './fields/Base/BaseFieldsValues/BaseFieldsValues';\nexport * from './fields/Base/BaseFieldsForm/BaseFieldsForm.component';\n\n// Exportar componentes individuais (elementos)\nexport * from './elements/ui-button/ui-button';\nexport * from './elements/ui-chip/ui-chip';\nexport * from './elements/ui-drop-zone/ui-drop-zone';\nexport * from './elements/ui-file-list/ui-file-list';\nexport * from './elements/ui-select/ui-select';\nexport * from './elements/ui-procurar/ui-procurar';\nexport * from './elements/ui-progress/ui-progress';\nexport * from './elements/ui-slide/ui-slide';\nexport * from './elements/ui-check-box/ui-check-box';\nexport * from './elements/ui-list-errors/ui-list-errors';\nexport * from './elements/ui-loading/ui-loading';\nexport * from './elements/ui-menu/ui-menu';\n\n\n\n// Os componente de campo não são exportados. Utilize FormAction, ou similar, com os campos pré configurados.\n\n// Exportar componentes de formulário\nexport * from './fields/Formulario/form-filter/form-filter';\nexport * from './fields/Formulario/form-action/form-action';\nexport * from './fields/Formulario/form-no-action/form-no-action';\nexport * from './fields/Formulario/formated-values/formated-values';\nexport * from './fields/Formulario/single-values/single-values';\n\n// Exportar generic por último (depende de todos os outros)\nexport * from './fields/generic/generic';\n\n\n// GRID (exportar por último por depender de outros componentes)\nexport * from './mk-grid/mk-grid.types';\nexport * from './mk-grid/mk-grid';\nexport * from './mk-grid/grid-cell/grid-cell'; // Permite extender classe com signal de params","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PROP_CONTROLE_ATIVO"],"mappings":"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"}
|